【问题标题】:What certificates does an Artemis AMQ subscriber using stomp.py need to establish a SSL connection to server使用 stomp.py 的 Artemis AMQ 订阅者需要哪些证书来建立与服务器的 SSL 连接
【发布时间】:2021-10-09 05:40:24
【问题描述】:

我正在使用 stomp.py 建立到 ActiveMQ-Artemis/2.7.0.redhat-00056 ActiveMQ Artemis Messaging Engine 的 Stomp1.2 SSL 连接。我无法控制服务器,我得到了以下说明。 (我是下面提到的订阅者。)

另一方将向每个订阅者提供一个信任库文件、一个证书文件以及一对用户 ID 和密码。根据订阅者系统的要求,订阅者可能需要将证书文件导入其服务器证书存储区,或者订阅者可能需要将信任库文件嵌入到其连接编码中。

  1. 是否需要任何 AMQ/Artemis 配置才能嵌入证书?或者我可以通过http://jasonrbriggs.github.io/stomp.py/stomp.html#module-stomp.connect 中的set_ssl 方法传入所需的文件吗?
  2. 我收到的文件是broker_cert.cer.txtclient.ts。我不确定如何使用它们。我在https://stackoverflow.com/a/50774783/16235794 中看到了答案,听起来我需要生成.key.pem 文件。但是,如果我正在生成文件,另一方应该如何验证它们呢?出于身份验证目的,我应该从另一方接收哪些文件?

【问题讨论】:

    标签: python ssl stomp activemq-artemis amq


    【解决方案1】:

    stomp.py 库默认不验证服务器证书,因此仅使用服务器地址调用 set_ssl 方法应该可以工作,即:

    conn.set_ssl([('127.0.0.1', 62614)])
    

    使用 PEM 服务器证书调用set_ssl 方法来验证服务器证书,即:

    conn.set_ssl([('localhost', 62614)], ca_certs='broker_cert.pem')
    

    使用 keytoot 工具从 client.ts 信任库中导出 PEM 服务器证书或向对方请求。

    keytool -keystore server-client.ts -storepass <STORE_PASSWORD> -alias <ALIAS> -exportcert -rfc > broker_cert.pem
    

    更多详情请参阅test_ssl.py

    【讨论】:

    • 所以设置ca_certs 不起作用。我看到此错误 - ` 无法连接到主机 HOST,端口 PORT. Also, broker_cert.cer.txt` 是字母数字文本列。这与.pem 文件不同。对方应该给我一个.pem文件吗?
    • 我猜broker_cert.cer.txt 文件不是 PEM 证书。使用 keytoot 工具从 client.ts 信任库中导出 PEM 服务器证书或向对方请求。有关详细信息,请参阅我的更新答案。
    • 感谢您的命令。 -storepass应该是对方给的吗?而且我不确定在这种情况下alias 应该是什么。我可以选择任何我想要的alias吗?
    • 商店可以包含多个证书,因此您需要一个别名来识别它们。另一方应提供用于创建client.ts 信任库的别名和密码。也许您的商店没有密码,所以删除-storepass 参数并使用-list 命令查看包含在商店中的别名和证书,即keytool -v -list -keystore client.ts。带有 GUI 的替代工具是 [KeyStore Explorer][keystore-explorer.org/]
    • 谢谢!我将探索这些选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 2013-12-27
    相关资源
    最近更新 更多