从amqp客户端到rabbitmq服务器的Java 8 SSL握手失败

从amqp客户端到rabbitmq服务器的Java 8 SSL握手失败,java,ssl,rabbitmq,sslhandshakeexception,spring-cloud-bus,Java,Ssl,Rabbitmq,Sslhandshakeexception,Spring Cloud Bus,请阅读上一篇文章的上下文。这个问题已经解决。 现在,我正在尝试在rabbitmq服务器和rabbit客户端之间建立启用ssl的连接。我正在使用SpringBoot和SpringCloud总线。没有SSL,一切都会很完美 用于运行JavaRabbit客户端 >版本 Java 1.8 SpringCloudStarter总线amqp=>1.3.1.0版本 Spring启动父版本=>1.5.9.0版本 sudojava -Djavax.net.debug=all-Dhttps.protocols

请阅读上一篇文章的上下文。这个问题已经解决。

现在,我正在尝试在rabbitmq服务器和rabbit客户端之间建立启用ssl的连接。我正在使用SpringBoot和SpringCloud总线。没有SSL,一切都会很完美

  • 用于运行JavaRabbit客户端
>版本

Java 1.8

SpringCloudStarter总线amqp=>1.3.1.0版本

Spring启动父版本=>1.5.9.0版本

sudojava -Djavax.net.debug=all-Dhttps.protocols=TLSv1-jar target/rabbit-client-0.0.1-SNAPSHOT.jar


Tryed-Dhttps.cipherSuites=TLS\u ECDHE\u RSA\u,带AES\u 256\u GCM\u SHA384作为 嗯

  • 我使用了下面的命令,它的工作结果为已验证[确定]。这告诉我rabbitmq服务器已正确配置了证书
  • 我可以从chrome浏览器访问rabbitmq managemnet门户,它信任证书,因为我在keychain中添加了信任证书
  • 我已经将证书和CA证书添加到java密钥存储并信任它
  • Amqp客户端无法建立连接,并且在启用SSL的情况下失败

这是我认为可能存在但不确定的问题


TLS_ECDHE_RSA_和_AES_256_GCM_SHA384 TLSv1.1出现在列表中 不支持的密码,可能是rabbitmq服务器要求的密码 加密套件


问题是,由于密钥使用字段无效,Erlang OTP将证书作为坏证书拒绝。请遵循以下准则创建证书

请:屏幕截图中的日志不好-不可搜索不好阅读,重要部分通常被截断。请编辑您的帖子并用文本替换屏幕截图-控制台可以在几秒钟内复制…提供您客户端的确切Java版本。Java 1.8、spring cloud starter bus amqp=>1.3.1.RELEASE、spring boot parent=>1.5.9.RELEASETLS_ECDHE_RSA_with_AES_256_GCM_SHA384在TLSv1.1和TLSv1.0中不受支持因为TLS规范要求这样做。所有GCM密码套件,事实上所有AEAD密码套件,仅适用于1.2或更高版本。您的日志显示了CCS/Finished上发生的错误,该错误发生在1.2版和该套件成功协商很久之后。服务器请求客户端进行身份验证,也就是发送证书,但没有,这就足以让许多服务器中止握手。要么将服务器更改为不请求身份验证,要么将客户端更改为提供身份验证,就像使用openssl一样。谢谢@dave_thompson_085。我不确定为什么找不到证书,因为我已将其添加到密钥库中,并且CA权限与服务器中使用的相同。
openssl s_client -connect my.rabbitmq.com:5671 -cert nonprod.crt -key nonprod.key -CAfile nonprod-chain.crt -tls1 -prexit