收到 SSLHandshakeException:收到致命警报:尝试连接第三方 URL 时来自 Payara 服务器的 handshake_failure

Posted

技术标签:

【中文标题】收到 SSLHandshakeException:收到致命警报:尝试连接第三方 URL 时来自 Payara 服务器的 handshake_failure【英文标题】:Recived SSLHandshakeException: Received fatal alert: handshake_failure from Payara server while trying to connect Third party URLs 【发布时间】:2021-10-11 02:03:32 【问题描述】:

服务器:Payara 5.192 JDK:8 更新 121

您好,我正在尝试从我的 Web 应用程序连接第三方 URL 并获得 SSL 异常。

根据几个论坛,我尝试在服务器上应用通配符证书,但问题仍然存在。

我还检查了 ssl 日志并观察到两个第三方 URL 在 tls1.2 hello 上发起通信。你能建议我还能检查什么吗?此外,如果有任何方法我可以停止 payara 的“hostnameVerification”,直到这个问题得到解决。

在下面添加服务器日志和异常堆栈。

  %% Resuming [Session-9, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  *** ServerHello, TLSv1.2
  RandomCookie:  
  GMT: 1628019948 
  bytes =  
  146
  ,
  79
  ,
  72
  , 
  18
  , 
  248
  ,
  233
  ,
  164
  , 
  27
  , 
  130
  ,
  143
  , 
  184
  ,
  162
  ,
  63
  ,
  152
  ,
  73
  , 
  109
  , 
  178
  , 
  84
  , 
  175
  , 
  6
  , 
  68
  , 
  141
  , 
  215
  , 
  48
  , 
  206
  , 
  188
  , 
  54
  , 
  217
   
  Session ID:  
  97, 10, 157, 83, 170, 216, 184, 234, 127, 114, 248, 61, 170, 18, 3, 102, 231, 51, 109, 103, 19, 75, 95, 99, 208, 97, 32, 108, 147, 161, 129, 12
  Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  Compression Method: 0
  Extension renegotiation_info, renegotiated_connection: <empty>
  ***
  Cipher suite:  TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  CONNECTION KEYGEN:
  Client Nonce:
  0000: 
  61 
  0A 
  9D 
  EC 
  D7 
  05 
  0A 
  5C 
  E4 
  B7 
  80 
  8F 
  02 
  3F 
  89 
  55 
  a.
  .
  .
  .
  .
  .
  \.
  .
  .
  .
  .
  ?.
  U

  0010: 
  C4 
  95 
  6E 
  8E 
  DF 
  73 
  42 
  6E 
  E1 
  72 
  07 
  28 
  DE 
  F9 
  56 
  C9 
  .
  .
  n.
  .
  sBn.
  r.
  (.
  .
  V.
  Server Nonce:
  0000: 
  61 
  0A 
  9D 
  EC 
  92 
  4F 
  48 
  12 
  F8 
  E9 
  A4 
  1B 
  82 
  8F 
  B8 
  A2 
  a.
  .
  .
  .
  OH.
  .
  .
  .
  .
  .
  .
  .
  .
  0010: 
  3F 
  98 
  49 
  6D 
  B2 
  54 
  AF 
  06 
  44 
  8D 
  D7 
  30 
  CE 
  BC 
  36 
  D9 
  ?.
  Im.
  T.
  .
  D.
  .
  0.
  .
  6.
  Master Secret:
  0000: 
  BC 
  64 
  7A 
  76 
  57 
  F4 
  D9 
  C9 
  B5 
  8E 
  54 
  01 
  33 
  65 
  55 
  94 
  .
  dzvW.
  .
  .
  .
  .
  T.
  3eU.
  0010: 
  E9 
  AE 
  FF 
  0B 
  7E 
  81 
  CE 
  AE 
  CD 
  40 
  2B 
  51 
  BE 
  11 
  84 
  57 
  .
  .
  .
  .
  .
  .
  .
  .
  .
  @+Q.
  .
  .
  W

  0020: 
  A6 
  0B 
  6D 
  96 
  FD 
  F8 
  91 
  A4 
  55 
  2E 
  23 
  34 
  42 
  10 
  7A 
  74 
  .
  .
  m.
  .
  .
  .
  .
  U.#4B.
  zt

  Client MAC write Secret:

  Ty.
  Mm.
  .
  .
  .
  F.
  0020: 
  1D 
  3F 
  BA 
  ED 
  94 
  C7 
  AC 
  38 
  ED 
  20 
  E1 
  DD 
  14 
  8D 
  C9 
  F4 
  .
  ?.
  .
  .
  .
  .
  8.
   .
  .
  .
  .
  .
  .
  Server MAC write Secret:]]
Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV

Extension signature_algorithms, signature_algorithms: SHA512withECDSA, SHA512withRSA, SHA384withECDSA, SHA384withRSA, SHA256withECDSA, SHA256withRSA, SHA256withDSA, SHA224withECDSA, SHA224withRSA, SHA224withDSA, SHA1withECDSA, SHA1withRSA, SHA1withDSA

, RECV TLSv1.2 ALERT: 
fatal,
handshake_failure

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:201)
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:163)
    at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2023)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1125)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
    at project.path.validateInstanceUrl(InstanceMasterBean.java:359)

【问题讨论】:

握手 SSL 似乎已关闭,因为您的 JDK 1.8 版本和 SSL 服务器之间缺少公共密码。尝试升级您的 JDK 1.8 版本并再次检查(如果您没有 Oracle 许可证,请尝试打开 OpenJDK 8)。 您好@jcamsler,感谢您的评论,我会将JDK 8 更新到最新更新并通知您。看来这是我现在唯一的选择了。 你好,我可以用 jdk8u251 解决这个问题,更新到这个版本后,我遇到了启动 payara 的问题,在这个链接上找到了解决方案 github.com/eclipse-ee4j/glassfish/issues/… 更改灰熊文件解决了这个问题。谢谢! 【参考方案1】:

我找到了上述问题的解决方案。在这里发布,以便任何有类似问题的人也可以找到它以供参考。

根据@jcamsler 的评论,我将 JDK8 更新为 301,但 Payara 服务器未启动并出现以下错误。

Error Logs after JDK8update301 applied

因此,尝试申请Glassfish error,但没有成功。

然后我将 JDK 降级到 JDK8u261 并再次使用 [Glassfish error]grizzly 文件,其中没有 sun 文件夹。这解决了我的问题。

【讨论】:

以上是关于收到 SSLHandshakeException:收到致命警报:尝试连接第三方 URL 时来自 Payara 服务器的 handshake_failure的主要内容,如果未能解决你的问题,请参考以下文章

当程序在 IntelliJ 中运行时,为啥我会收到 SSLHandshakeException 作为 JAR?

Apple Pay 证书更新 | SSLHandshakeException:收到致命警报:handshake_failure

ChangeCipherSpec - javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure

无法下载站点地图:SSLHandshakeException:收到致命警报:handshake_failure

javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure

获取 javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure 错误