【发布时间】:2018-04-18 17:25:00
【问题描述】:
请阅读上一篇文章的上下文。那个问题就解决了。 Re-creating the queue and re-connecting to rabbitMQ
现在,我正在尝试在 rabbitmq 服务器和 rabbit 客户端之间设置启用 ssl 的连接。我正在使用带有弹簧云总线的弹簧靴。没有 SSL,一切都可以完美运行。
- 用它来运行 java rabbit 客户端。
> 版本
Java 1.8
spring-cloud-starter-bus-amqp => 1.3.1.RELEASE
Spring Boot 父级 => 1.5.9.RELEASE
sudo java -Djavax.net.debug=all -Dhttps.protocols=TLSv1 -jar target/rabbit-client-0.0.1-SNAPSHOT.jar
试过 -Dhttps.cipherSuites=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 作为 好吧
- 我使用了以下命令,它的结果为已验证 [ok]。这告诉我,rabbitmq 服务器已正确配置证书。
openssl s_client -connect my.rabbitmq.com:5671 -cert nonprod.crt -key nonprod.key -CAfile nonprod-chain.crt -tls1 -prexit
- 我可以从 chrome 浏览器访问 rabbitmq managemnet 门户,它信任证书,因为我在钥匙串中添加了信任。
- 我已将证书和 CA 证书添加到 java 密钥库并信任它。
- Amqp 客户端无法建立连接并在启用 SSL 时失败。
Link to view error and debug logs
这是我认为可能存在但不确定的问题。
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLSv1.1 出现在列表中 不受支持的密码,可能是 rabbitmq 服务器要求的 加密套件。
【问题讨论】:
-
请:屏幕截图中的日志不好 - 不可搜索,不便于阅读,重要部分通常会被截断。请编辑您的帖子并将屏幕截图替换为文本 - 可以在几秒钟内复制控制台...
-
提供您客户端的确切 Java 版本。
-
Java 1.8, spring-cloud-starter-bus-amqp=> 1.3.1.RELEASE, Spring boot parent => 1.5.9.RELEASE
-
TLS_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 权限与服务器中使用的相同。
标签: java ssl rabbitmq sslhandshakeexception spring-cloud-bus