1

我发布了一个不同的问题,现在我正在编辑它,因为我设法完成了我最初取得的成就。使用“我如何使用 SSL ”我设置了我的 ActiveMQ 代理接受 SSL 连接,并且我试图实现一个客户端来测试通信。我发现我可以通过设置系统属性来做到这一点:

static {
    System.setProperty("javax.net.ssl.keyStore", "/home/amq/SSL/client.ks");
    System.setProperty("javax.net.ssl.keyStorePassword", "password");
    System.setProperty("javax.net.ssl.trustStore", "/home/amq/SSL/client.ts");
}

我遇到的问题是创建密钥库/信任库和导出代理证书。当我删除 .ks 和 .ts 文件并按照“如何使用 SSL ”中的说明重新执行所有操作时,它起作用了。

我的新问题是:如何在不需要为客户端创建密钥库和导入代理证书的情况下建立连接?

我正在寻找一种方法来接受经纪人发送给我的任何证书。在此链接中,我找到了一种设置 URI 选项的方法:

ssl://localhost:61617?transport.acceptInvalidBrokerCert=true

但这对我不起作用。从我在我的 URI 或 URL 字符串中附加“?transport.acceptInvalidBrokerCert=true”的那一刻起,该方法停止工作,并且我不再可以建立连接。

谁能为我提供一个使用 SSL 连接到 ActiveMQ 代理的 java 或 c++ 客户端示例,而无需导入代理的证书,或者换句话说,接受任何无效证书?

4

1 回答 1

1

您引用的 URI 标志仅对使用 NMS.ActiveMQ 的 .NET 客户端有效,C++ 和 Java 客户端没有此设置。在 C++ 客户端中有一种方法可以做到这一点,您必须在创建连接之前按如下方式设置系统属性。

System::getProperty("decaf.net.ssl.disablePeerVerification", "false" );

在没有这些测试选项的情况下让 ssl 证书正常工作的最简单方法是创建一个根证书,然后使用您的根证书创建代理证书,并将根证书添加到客户端的信任库中,这样任何具有您的根签名证书的代理证书将被信任。

于 2012-05-10T21:23:48.667 回答