如何解决使用受信任的 CA 证书配置 Artemis SSL 客户端身份验证所需的步骤
根据 ActiveMQ Artemis 文档,可以使用受信任的 CA 进行 2 路 TLS 又名客户端证书身份验证。请参阅下面的摘录。
双向 TLS 使用与单向 TLS 相同的 sslEnabled
、keyStorePath
和 keyStorePassword
属性,但它添加了 needClientAuth=true
来告诉客户端它应该呈现自己的证书。例如:
<acceptor name="artemis">tcp://0.0.0.0:61616?sslEnabled=true;keyStorePath=../etc/broker.keystore;keyStorePassword=1234!;needClientAuth=true</acceptor>
此配置假定客户端的证书由受信任的提供商签署。如果客户端的证书不是由受信任的提供者签署的(例如它是自签名的),那么服务器需要将客户端的证书导入信任库并使用 acceptor
和 {{ 1}},例如:
trustStorePath
我目前的要求是完整的 2 路 SSL,客户端从我们的 CA 获取他们的证书。根据文档,我的理解是,每次用户注册时,我们都不需要将客户端的密钥添加到信任存储中。注意:我们在 AMQP 协议上执行此操作。
在高层次上,设置将是:
- 将 CA 安装到 JRE
trustStorePassword
密钥库中。 - 为经纪人创建签名请求。
- CA 为代理创建证书。
- 将代理证书安装到密钥库中(例如
<acceptor name="artemis">tcp://0.0.0.0:61616?sslEnabled=true;keyStorePath=../etc/broker.keystore;keyStorePassword=1234!</acceptor>
) - 客户端创建证书签名请求
- CA 创建客户端证书。
- 客户端在连接时出示证书。
在深入 SSL 的兔子洞之前,我想检查一下我想要实现的目标是否可行?
我尝试了 cacerts
示例,但是它在客户端启动时抛出异常。
etc/broker-certs.p12
对于 JDK 11+ 用户:要试用 ssl-enabled-dual-authenticaion 示例,您需要重新创建所有证书。评论部分有更多详细信息。
解决方法
是的,这是可能的,而且您的“高级”步骤看起来不错。
查看代理随附的 ssl-enabled-dual-authentication
example 可能会有所帮助。它演示了如何使用自签名证书配置相互身份验证,包括用于创建、导入和导出各种 SSL 资源的 keytool
命令。这与涉及使用 CA 的用例略有不同,但该过程本质上是相同的。真正的区别在于,不是将客户端的证书添加到代理的信任库,反之亦然,而是将 CA 的证书添加到所有 JVM。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。