将新的密钥库添加到ActiveMQ后,“无法找到所请求目标的有效证书路径”

时间:2011-07-19 12:37:54

标签: ssl activemq keystore keytool

我们使用ActiveMQ来排队来自远程客户端的消息。

客户端使用以下URL连接到我们服务器上的ActiveMQ;

ssl://www.mydomain.com:61616

这在过去运作良好,由开发人员与公司建立时间较长。

最近我们不得不更新我们的SSL证书,因为旧证书已经用完了。我们成功地为我们的http服务器做了这个,但现在才意识到原始密钥库的副本仍然存在于ActiveMQ配置文件夹中。

我们尝试将新密钥库放入ActiveMQ配置文件夹中,覆盖旧密钥库。但是,这似乎不起作用,所有连接都被以下堆栈跟踪拒绝;

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(Unknown Source)

我们在这里做错了什么? 我们使用keytool -list命令列出了旧密钥库和新密钥库的内容,它们看起来非常相似(当然除了日期)。 我们需要对调用上面的url以接受我们的新密钥库的客户端进行其他更新吗?

1 个答案:

答案 0 :(得分:0)

您的信任库可能与您的密钥库不同步。以下是从头开始设置的一般方法;您的配置会有所不同,因此请根据需要进行调整:

为每个客户端生成证书,并使用代理信任库注册客户端证书。

> keytool -genkey -alias producer -keyalg RSA -keystore myproducer.ks
> keytool -genkey -alias consumer -keyalg RSA -keystore myconsumer.ks

导出两个证书

> keytool -export -alias producer -keystore myproducer.ks -file producer_cert
> keytool -export -alias consumer -keystore myconsumer.ks -file consumer_cert

将证书导入生产者信任库(新文件)

> keytool -import -alias producer -keystore mybroker.ts -file producer_cert
> keytool -import -alias consumer -keystore mybroker.ts -file consumer_cert

将代理信任库复制到您原来的位置,通常是{ACTIVEMQ_HOME} / conf。您通常可以在代理配置中看到这一点:

<broker ...>
  <sslContext>
    <sslContext keyStore="file:${activemq.base}/conf/mybroker.ks"
        keyStorePassword="test123"
        trustStore="file:${activemq.base}/conf/mybroker.ts"
        trustStorePassword="test123"/>
  </sslContext>
</broker>