SSLHandshakeException:没有通用的密码套件

Astron:

按照此处的说明进行操作并重新创建了我以前错误创建的证书。就像我现在javax.net.ssl.SSLHandshakeException: no cipher suites in common在服务器和javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure客户端上看到的一样,情况发生了变化代替错误这个问题

服务器是ClassFileServer.java,相应的客户端是SSLSocketClientWithClientAuth.java

有关使两端都能正常播放的任何提示,请注意,我使用的是localhost,因此我假设密码功能相同。


更新:

这是我用于生成文件的步骤,我可能会混淆密钥和信任库。

在服务器上(遵循指南):

$ keytool -genkey -alias serverkey -keyalg RSA -keypass p@ssw0rd -storepass p@ssw0rd -keystore keystore.jks

$ keytool -export -alias serverkey -storepass p@ssw0rd -file server.cer -keystore keystore.jks

$ keytool -import -v -trustcacerts -alias clientkey -file ../client/client.cer -keystore cacerts.jks -keypass p@ssw0rd -storepass p@ssw0rd

在客户端(通过指南):

$ keytool -genkey -alias clientkey -keyalg RSA -keypass changeit -storepass changeit -keystore keystore.jks

$ keytool -export -alias clientkey -storepass changeit -file client.cer -keystore keystore.jks

$ keytool -import -v -trustcacerts -alias serverkey -file ../server/server.cer -keystore cacerts.jks -keypass changeit -storepass changeit

由于调试超出了此站点的限制,因此不得不使用另一种介质:

客户端调试错误: http : //pastebin.com/mHCmEqAk

服务器调试错误: http : //pastebin.com/YZbh7H8f

洛恩侯爵:
javax.net.ssl.SSLHandshakeException: no cipher suites in common

这有两个原因:

  1. 服务器没有私钥和证书,并且可能根本没有密钥库。在这种情况下,它只能使用不安全的匿名密码套件(默认情况下已禁用),并且应该保持这种状态。因此,没有可以同意与客户端一起使用的密码套件。

  2. 客户端或服务器或两者强加了对密码套件的过度限制,因此无法达成协议。

对于您的密钥库和信任库,除了您只需要执行两个导入步骤的四个导入步骤外,其他一切看起来都不错。您不需要将服务器的证书导入到服务器自己的信任库中,也不需要将客户端的证书导入到客户端的信任库中。您只需要这样:

服务器:

$ keytool -import -v -trustcacerts -alias clientkey -file ../client/client.cer -keystore cacerts.jks -keypass p@ssw0rd -storepass p@ssw0rd

客户:

$ keytool -import -v -trustcacerts -alias serverkey -file ../server/server.cer -keystore cacerts.jks -keypass changeit -storepass changeit

并且只需要它,因为您使用的是自签名证书。简单的解决方案:不用。使用CA签名的证书,该证书由Java随附的默认信任库信任。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java SSLHandshakeException:没有通用的密码套件

Java SSLHandshakeException“没有共同的密码套件”

SSLHandshakeException:Spring Integration TCP Server中没有通用的密码套件

Rundeck作业API:javax.net.ssl.SSLHandshakeException:没有通用的密码套件

SSLHandshakeException:没有通用的密码套件-Spray-can SSL配置

尝试安全连接到服务器时,Java“没有通用密码套件”问题

Java - 没有共同的密码套件

javax.net.ssl.SSLHandshakeException:没有可协商的密码套件(严重错误:80:包装应用程序数据时出现问题)

由于缺少Domino JVM中的TLS密码套件,导致SSLHandshakeException

带有 TLS 1.3 的“nghttp2::asio_http2::client” - SSL_CTX_set_cipher_list 没有在密码套件中添加密码套件

Spring Boot和Let's Encrypt没有密码套件的共同点

SSLHandshakeException:没有主题备用名称

ND没有回应。Zigbee 网状套件

Jetty SslContextFactory:打印所有允许的密码套件

没有通用对象参数的通用接口

Openssl 密码套件解释

SSLSocket使用的密码套件

快速密码套件

没有密码时询问密码

加密的首页...忘记密码,但没有密码

没有参数的通用方法

没有参数的通用方法

没有通用方法“ ThenBy”

javax.net.ssl.SSLHandshakeException:没有可用的认证方案

javax.net.ssl.SSLHandshakeException:没有适当的协议

创建没有密码的用户

铬:没有密码适合

没有密码就无法休眠

Ansible:没有密码的sudo