SSLHandshakeException:没有共同的密码套件

按照此处的说明重新创建我以前错误创建的证书。 有些东西已经改变,因为我现在看到javax.net.ssl.SSLHandshakeException: no cipher suites in common服务器上javax.net.ssl.SSLHandshakeException: no cipher suites in commonjavax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure在客户端上javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 。 而不是错误这个问题

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

关于让两端发挥得很好的任何提示,请注意我使用的是localhost所以我认为密码function是相同的。


更新:

以下是我用来生成文件的步骤,我可能会混淆密钥和信任库:

在服务器上( 本指南后面):

$ 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附带的默认信任库的信任。

在Cassandra集群上设置SSL时出现此错误。 在描述生成密钥时,问题结果出现在2.0版的文档中:

keytool -genkey -alias -keystore .keystore

它省略了RSA的规范作为算法,应该是( 参见v1.2 docs ):

keytool -genkey -alias -keyalg RSA -keystore .keystore