ssl handshake_failure клиентский сертификат не отправляется - PullRequest
0 голосов
/ 21 ноября 2018

У меня проблема с ssl handshake_failure.Появилась новая интеграция с внешним веб-сервисом, который требуется для связи через Https, они предоставляют мне три сертификата (root + shared + client), поэтому я установил все три сертификата в свой JDK, и когда я пытаюсь вызвать этот веб-сервис, я всегда получаюисключение:

exception is javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

, поэтому я отследил рукопожатие между мной и сервером, добавив это свойство -Djavax.net.debug = all в мое приложение

Я нашелчто все три сертификата загружаются в приложение после его запуска

adding as trusted cert:
  Subject: CN=EXA Root CA, OU=EXA eTrust Center, O=EXA, C=SA
  Issuer:  CN=EXA Root CA, OU=EXA eTrust Center, O=EXA, C=SA
  Algorithm: RSA; Serial number: -----
  Valid from Wed Oct 15 12:41:37 AST 2014 until Sat Oct 15 13:11:37 AST 2039

adding as trusted cert:
  Subject: CN=10.10.10.10, OU=EXA eTrust Center, O=EXA, C=SA
  Issuer:  CN=EXA Shared CA, OU=EXA eTrust Center, O=EXA, C=SA
  Algorithm: RSA; Serial number: -----
  Valid from Thu Nov 11 12:33:30 AST 2015 until Mon Nov 26 13:03:30 AST 2018

adding as trusted cert:
  Subject: CN=EXA Shared CA, OU=EXA eTrust Center, O=EXA, C=SA
  Issuer:  CN=EXA Root CA, OU=EXA eTrust Center, O=EXA, C=SA
  Algorithm: RSA; Serial number: ------
  Valid from Thu Oct 25 07:56:05 AST 2014 until Wed Oct 16 08:26:05 AST 2024

, тогда я обнаружил, что система не отправляет сертификат клиента, и я не знаю, почему?

*** CertificateRequest
Cert Types: RSA, DSS, ECDSA
Supported Signature Algorithms: SHA256withRSA, SHA256withDSA, SHA256withECDSA, SHA384withRSA, Unknown (hash:0x5, signature:0x2), SHA384withECDSA, SHA512withRSA, Unknown (hash:0x6, signature:0x2), SHA512withECDSA, SHA1withRSA, SHA1withDSA, SHA1withECDSA
Cert Authorities:
<Empty>
[read] MD5 and SHA1 hashes:  len = 36

Warning: no suitable certificate found - continuing without client authentication
*** Certificate chain
<Empty>
***
*** ECDHClientKeyExchange

мои вопросы:

  • как вы думаете, в чем проблема?
  • почему jdk не нашел подходящий сертификат там, где он существует и загружен в доверенный сертификат?
  • на основании того, что JDK будет искать подходящий сертификат клиента?поэтому я могу определить, почему JDK не нашел его

@@ update

  • Как вы думаете, проблема с моим устройством (IP)так как сертификат CN для другого IP?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...