当前位置: 首页 > 知识库问答 >
问题:

ActiveMQ Artemis ha=true和SSL连接器

奚卓
2023-03-14
    <acceptor name="artemis">tcp://{{ ansible_host }}:61616?sslEnabled=true;keyStorePath={{ artemis_broker_dir }}/etc/artemis-keystore.p12;keyStorePassword={{ artemis_keystore_password }}</acceptor>
    <connectors>
        <!-- Connector used to be announced through cluster connections and notifications -->
        <connector name="artemis">tcp://{{ ansible_host }}:61616?sslEnabled=true;trustStorePath={{ artemis_broker_dir }}/etc/artemis-truststore.p12;trustStorePassword={{ artemis_truststore_password }}</connector>
    </connectors>

显示服务器端路径而不是客户端路径的客户端堆栈(在初始发现连接上使用):

[DEBUG] 2021-07-12 15:16:48.402 [Thread-3 (ActiveMQ-client-netty-threads)] SSLContextFactory - Creating SSL context with configuration 
trustStorePassword=winkwink
port=61616
sslEnabled=true
host=messaging-03.domain.pt
trustStorePath=/opt/artemis/etc/artemis-truststore.p12
[WARN ] 2021-07-12 15:16:48.405 [Thread-3 (ActiveMQ-client-netty-threads)] ChannelInitializer - Failed to initialize a channel. Closing: [id: 0x0e72e4b8]
java.lang.Exception: Failed to find a store at /opt/artemis/etc/artemis-truststore.p12
    at org.apache.activemq.artemis.core.remoting.impl.ssl.SSLSupport.validateStoreURL(SSLSupport.java:314) ~[artemis-core-client-2.16.0.jar:2.16.0]

共有1个答案

韦正业
2023-03-14

尝试使用标准Java SSL系统属性,例如:

  • javax.net.ssl.keystore
  • javax.net.ssl.keystorePassword
  • javax.net.ssl.truststore
  • javax.net.ssl.truststorePassword

或者,如果您的客户机中已经使用了这些服务,则可以使用ActiveMQ Artemis特有的服务:

    null

这在文档中都有描述。

另一种选择是在broker.xml中的连接器上简单地指定keystore和truststore的名称(例如分别为artemis-keystore.p12artemis-truststore.p12)。只要文件在类路径上(例如,在代理的etc目录中),就会找到它。然后客户机只需要使用同名的工件,这些工件也在它的类路径上。您可以在代理附带的“启用SSL”示例中看到这一点。

在我看来,最好的选择是让您的SSL证书由可信的机构签名,而不是自签名。这样您就根本不需要与truststore打交道,客户机就可以工作了。

 类似资料:
  • 问题内容: 我正在尝试测试安全的网络套接字,但是遇到了麻烦。这是我的测试: 创建后,这是“ ws”的日志: 我没有从打开回来的日志。我正在本地运行该项目,并且当我使用Chrome Advanced Rest Client工具时,可以正常连接。 我想念什么吗?请帮忙。 编辑: 我添加并注销, 我也尝试遵循此代码,但得到相同的错误。 问题答案: 该模块正在拒绝您的自签名证书(正如人们希望的那样)。您可

  • 问题内容: 如何创建SSL套接字连接? 我真的需要创建密钥库吗?该密钥库应该与我所有的客户端应用程序共享吗? 我用以下代码创建了一个服务器: 我用以下代码在android上创建了一个客户端: 但是当我尝试连接时,会引发以下错误: 问题答案: 您需要一个证书来建立ssl连接,您可以在密钥库中加载证书,也可以加载证书本身。我将显示一些有关keystore选项的示例。 您的代码需要一些参数才能运行: 您

  • 我试图在我的应用程序上使用SSL,使用express和nginx运行socket.io,但我无法使其工作。我已经做了我的研究,但我发现的都不起作用。 我一直有错误:ERR_CONNECTION_CLOSED在客户端没有http状态代码。 我做错了什么?

  • 问题内容: 我正在尝试连接到Java中的HTTPS端点。我尝试过的每种方法(下面有更多详细信息)最终都会生成此堆栈跟踪: 我努力了: 与javax SOAP库和新的URL(“ https:// …”)连接 使用新的URL(“ https:// …”).openConnection()连接 手动创建SSL连接: 更多细节: 我尝试过的每一种方法都可以与其他SSL服务器配合使用,这就是这种特殊的服务器

  • 问题内容: 我已经在一个网络上的一台服务器上成功设置了启用SSL的MySQL安装,并且可以使用SSL和Linux命令行mysql客户端在不同网络上的另一台服务器上使用SSL连接到它,但是每次我尝试连接时(使用PHP 5.3) .3)我不断得到: 警告:mysqli_real_connect():(HY000 / 2026):第18行上的/var/www/html/test.php中的SSL连接错误

  • 问题内容: 我正在尝试从我的iOS应用程序到后端服务器(Node.js)建立简单的套接字连接(NO HTTP)。服务器证书已使用我自己创建的自定义CA创建并签名。我相信,为了让iOS信任我的服务器,我将不得不以某种方式将此自定义CA证书添加到用于确定Java / Android中TrustStore的工作方式的信任类型的受信任证书列表。 我尝试使用下面的代码进行连接,并且没有错误,但是write(