ssl - 通过 SSL 的 ActiveMQ : "acceptInvalidBrokerCert=true" not working

标签 ssl jms ssl-certificate activemq

我发布了一个不同的问题,现在我正在编辑它,因为我设法做到了我最初的目标。使用“How do I use SSL”我设置我的 ActiveMQ Broker 接受 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");
}

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

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

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

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

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

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

最佳答案

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

System::setProperty("decaf.net.ssl.disablePeerVerification", "true" );

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

关于ssl - 通过 SSL 的 ActiveMQ : "acceptInvalidBrokerCert=true" not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10504676/

相关文章:

ssl - 您如何设置加密的 mosquitto 代理程序,例如具有 https 的网页?

perl - 验证失败 : Must issue a STARTTLS command first

java - Spring Boot @JmsListener 拦截器

java - 如何在JAVA中获取SSL/TLS证书

azure - 将 keystore 和信任库导入到 Azure key 保管库

ssl - 带隧道的扭曲 Ratchet

jboss - hornetq 中可以有多个客户端消费者吗?

java - Camel ActiveMQ 性能调优

certificate - 如何使用 keytool 将证书创建到 PKCS12 keystore 中?

java - Jboss AS 6.1.0 与 Java7 的握手超时