1

我正在尝试使用 Pika 连接到 RabbitMQ。我们正在使用证书 (ssl) 来执行此操作。这是他们(Pika)的示例:

context = ssl.create_default_context(
    cafile="PIKA_DIR/testdata/certs/ca_certificate.pem")
context.load_cert_chain("PIKA_DIR/testdata/certs/client_certificate.pem",
                        "PIKA_DIR/testdata/certs/client_key.pem")
ssl_options = pika.SSLOptions(context, "localhost")
conn_params = pika.ConnectionParameters(port=5671, ssl_options=ssl_options)

这很好,如果我们的证书文件有一个文件路径,但是我们在 Windows 上并且它们存储在 Windows 商店中。所以我不相信上面提供的 load_cert_chain() 会起作用。

我可以像这样访问(或查看)特定证书:

context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
context.load_default_certs()
certs = context.get_ca_certs()

但这会得到一个证书列表。我没有看到任何明显的方法来搜索并获取我需要的证书。即使可以,我也不确定如何将代码连接到“pika.SSLOptions(context,...)”

所以这里有两个问题,但更重要的是:

  1. 如何从 Windows 商店中提取特定证书(因为我没有文件路径)?

(另一个问题是如何将其连接到 Pika,但如果上述问题得到回答,我可能会弄清楚)

注意:Pika 只是一个与 RabbitMQ 接口的第三方库。 注2:使用Python3.5

4

1 回答 1

1

看起来,在从这个搜索中阅读了一些命中后,大多数处理 Windows 证书存储的 Python 库这样做是为了获取CA 证书和 CRL 列表,而不是单独的证书。

wincertstore可能是您正在寻找的。


注意: RabbitMQ 团队会监控rabbitmq-users 邮件列表,有时只会在 StackOverflow 上回答问题。

于 2019-03-16T14:30:05.863 回答