gpt4 book ai didi

java - SSLPeerUnverifiedException : peer not authenticated in Netty with self signed certificates on separates machines

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:41 25 4
gpt4 key购买 nike

设置:

  • 我使用 Netty (v4.0.8) 客户端/服务器进行设置,使用 SSLHandler 来保护连接。
  • 在服务器上,我在 Jetty 环境中运行 Netty 部分,客户端是我从命令行调用的 JAR。
  • 我有客户端和服务器的自签名证书。
  • 我在双方(服务器和客户端)都使用的信任库中拥有 CA 证书。我在 JRE KeyStore 中也有 CA 证书(以防万一)
  • 我有自己的信任库实现来追踪我遇到的问题。

问题:

  • 如果客户端和服务器在同一台机器上运行,一切都很好。
  • 如果客户端和服务器在不同的机器上运行,我会首先在服务器上(然后在客户端上)得到一个 SSLPeerUnverifiedException。
  • 我也有客户端的 python 实现(使用 SSL 连接)。这自己的工作正常,在相同的以及不同的机器上。

目前的分析表明

  • Trust-Manager 在客户端和服务器上正确调用 getAcceptedIssuers()
  • 在客户端调用 checkServerTrusted()
  • 未在服务器上调用 checkClientTrusted()

相反,我确实得到了异常:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated at com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificateChain(SSLSessionImpl.java:401)

由于这在服务器上需要一些时间,因此在客户端发生超时

javax.net.ssl.SSLException: handshake timed out

然后是

SSLPeerUnverifiedException:  javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

发生。

异常发生在 netty 的 Handler-Class 的 userEventTriggered() 方法中。我会检查传入事件是否为 SslHandshakeCompletionEvent,以及我何时尝试从 SSLSession 获取证书。

最佳答案

基本问题是超时。我通过仔细查看提供“isSuccess()”和“cause()”的 SslHandshakeCompletionEvent 来追踪问题。 Cause 指出了 imeout 异常。

我通过增加 netty Initialiser-Classes 中 SSLHandler 的超时来解决这个问题。

关于java - SSLPeerUnverifiedException : peer not authenticated in Netty with self signed certificates on separates machines,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18923045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com