2017-02-09 13 views
0

Я использую quickfix для проверки сертификата сервера и получения фатального файла handshake_failure.Проблема, подтверждающая самоподписанный сертификат: получено handshake_failure

Это, как он смотрит на меня:

  • Исходное рукопожатия инициируют

  • подключается клиент.

  • Сервер принимает.

  • ДУС рукопожатие происходит во время которых:

    о шифрах успешно переговоры. .

    о Клиент проверяет сертификат сервера

    о Сервер произвольно закрывает сокет (SEND TLSv1 ALERT:. Предупреждение, описание = close_notify < - Это, однако, похоже, чистое закрытие)

    о Клиент оставлен висящим

Может кто-то взглянуть на него. Пожалуйста.

Allow unsafe renegotiation: false 
Allow legacy hello messages: true 
Is initial handshake: true 
Is secure renegotiation: false 
Ignoring disabled protocol: SSLv3 
%% No cached client session 
.. 
.. 
*** ClientHello, TLSv1 
RandomCookie: GMT: 1468991703 bytes = { 167, 140, 147, 81, 176, 169, 230, 45, 229, 147, 246, 106, 201, 127, 79, 194, 88, 63, 1, 91, 34, 184, 35, 49, 119, 31, 227, 157 } 
.. 
.. 
ISocketConnector-0, WRITE: TLSv1 Handshake, length = 149 
MINA session created for FIX.4.4:ZZZZZ->YYYY: local=/X.X.X.X:XXXXXX, class org.apache.mina.transport.socket.nio.SocketSessionImpl, remote=/XXX.XXX.XXX.XX:YYYYY [quickfix.mina.initiator.InitiatorIoHandler:50] 
SocketConnectorIoProcessor-0.0, READ: TLSv1 Handshake, length = 81 
*** ServerHello, TLSv1 
.. 
.. 
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA 
Compression Method: 0 
Extension renegotiation_info, renegotiated_connection: <empty> 
%% Initialized: [Session-1885, TLS_RSA_WITH_AES_128_CBC_SHA] 
** TLS_RSA_WITH_AES_128_CBC_SHA 
SocketConnectorIoProcessor-0.0, READ: TLSv1 Handshake, length = 3224 
*** Certificate chain 
chain [0] = [ 
Version: V3 
.. 
.. 
.. 
.. 

READ: TLSv1 Handshake, length = 14 
*** CertificateRequest 
Cert Types: RSA, DSS, ECDSA 
Cert Authorities: 
<Empty> 
*** ServerHelloDone 
*** Certificate chain 
*** 
*** ClientKeyExchange, RSA PreMasterSecret, TLSv1 
WRITE: TLSv1 Handshake, length = 141 
SESSION KEYGEN: 
PreMaster Secret: 
.. 
.. 
CONNECTION KEYGEN: 
Client Nonce: 
.. 
.. 
Server Nonce: 
.. 
.. 
Master Secret: 
.. 
.. 
Client MAC write Secret: 
.. 
..         
Server MAC write Secret: 
.. 
.. 
Client write key: 
... 
Server write key: 
.. 
Client write IV: 
.. 
Server write IV: 
.. 
.. 
WRITE: TLSv1 Change Cipher Spec, length = 1 
*** Finished 
verify_data: { 85, 227, 34, 74, 171, 223, 226, 95, 232, 234, 118, 50 } 

WRITE: TLSv1 Handshake, length = 48 
READ: TLSv1 Alert, length = 2 
RECV TLSv1 ALERT: fatal, handshake_failure 
fatal: engine already closedRethrowing javax.net.ssl.SSLException: Received fatal alert: handshake_failure 
called closeOutbound() 
closeOutboundInternal() 
SEND TLSv1 ALERT: warning, description = close_notify 
WRITE: TLSv1 Alert, length = 32 
called closeInbound() 
fatal: engine already closedRethrowing javax.net.ssl.SSLException: Inbound closed before receiving peer's close_notify: possible truncation attack? 
called closeOutbound() 
closeOutboundInternal() 
+0

сервер видит: SSL-процедуры: SSL3_GET_CLIENT_CERTIFICATE: peer не возвращает сертификат – fiddle

ответ

0
*** CertificateRequest 

Сервер хочет сертификат клиента, но клиент не посылает никаких. Поэтому сервер закрывает соединение с помощью предупреждения handshake_failure.

+0

может ли это быть, потому что полномочия cert: пусто? FYI мы используем собственный сертификат сервера – fiddle

+0

@fiddle: могут быть разные причины, по которым клиент не отправляет сертификат. Например, у клиента может отсутствовать сертификат, настроенный для отправки, или у клиента может вообще не быть поддержки клиентских сертификатов. Трудно сказать из этой небольшой информации. И это не имеет значения для этого, если сертификат сервера самоподписан или нет. Для этой проблемы имеет значение только недостающий сертификат клиента. –

+0

Я вижу, что мой файл .jks имеет только одну запись для промежуточного сертификата серверов. Нужно ли добавлять мой клиентский сертификат в это или в другое место? Если тогда, то как? не могли бы вы посоветовать. – fiddle