首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端如何从ActiveMQ代理获得SSL证书?

客户端如何从ActiveMQ代理获得SSL证书?
EN

Stack Overflow用户
提问于 2019-03-28 17:15:29
回答 1查看 2K关注 0票数 0

我有一个ActiveMQ经纪人住在AWS上。我试图使用SSL保护来自客户端的连接。我已经将代理设置为使用SSL,但我不太明白客户端应该从哪里获得证书。是否需要从代理复制证书并将其打包为客户端代码?还是每次客户端启动时,我都会以编程方式远程检索证书?

activemq.xml中的相关SSL设置

代码语言:javascript
复制
<sslContext> 
    <sslContext keyStore="file:${activemq.base}/conf/broker.ks"
      keyStorePassword="password" trustStore="file:${activemq.base}/conf/broker.ts"
      trustStorePassword="password"/> 
代码语言:javascript
复制
<transportConnectors>
    <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="ssl" uri="ssl://0.0.0.0:61714?transport.enabledProtocols=TLSv1.2"/>
</transportConnectors>

连接的客户端将是使用JMS的Java客户机。此时,我使用的是随ActiveMQ安装一起打包的默认证书。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-28 18:21:41

正如ActiveMQ文档所说:

ActiveMQ包含引用虚拟自签名证书的密钥和信任存储。当您创建代理证书并存储安装时,可以覆盖conf目录中的值,或者删除现有的虚拟密钥和信任存储,这样它们就不会干扰)

因此,您应该删除现有的broker.ksbroker.ts,并为您的安装创建新的。你有几个选择。

我设想AWS有某种获取SSL证书的基础设施,并且这些证书将由一个众所周知的证书颁发机构签名,而JMS客户端将隐式地信任这些证书。一个快速搜索发现了AWS证书经理

但是,您还可以选择使用“自签名”证书,根据定义,该证书不是由著名的证书颁发机构签名的,因此必须得到客户端的明确信任。

您可以使用以下命令选择自签名路由:

  1. 使用keytool (来自JDK),为代理创建一个证书: keytool -genkey -alias broker -keyalg RSA -keystore broker.ks
  2. 导出代理证书,以便与客户端共享: keytool -export -alias broker -keystore broker.ks -file broker_cert
  3. 为客户端创建证书/密钥存储库: keytool -genkey -alias client -keyalg RSA -keystore client.ks
  4. 为客户端创建信任存储库,并导入代理证书。这就确定了客户端“信任”代理: keytool -import -alias broker -keystore client.ts -file broker_cert。

启动客户端的VM时,请指定以下系统属性:

代码语言:javascript
复制
javax.net.ssl.trustStorePassword=password
javax.net.ssl.trustStore=/path/to/client.ts

如果选择自签名路由,则只需生成一次client.ts,然后将其复制到每个客户端。每次连接时,客户端都会使用相同的信任存储库(假设代理的证书没有更改)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55403432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档