使用python

时间:2019-03-15 22:57:56

标签: python windows ssl python-pika

我正在尝试使用Pika连接到RabbitMQ。我们正在使用证书(ssl)来做到这一点。这是他们(皮卡)的例子:

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接口的第三方库。 Note2:使用Python3.5

1 个答案:

答案 0 :(得分:1)

this search看一些命中之后,大多数处理Windows证书存储的Python库看起来都是这样做的,以获取CA certs and CRL lists而不是单个证书那么多。

wincertstore可能是您想要的。


注意: RabbitMQ团队监视rabbitmq-users mailing list,并且有时仅在StackOverflow上回答问题。