使用 python 从 windows 商店访问特定证书

Accessing a specific certificate from the windows store with python

我正在尝试使用 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 接口的第三方库。 注2:使用Python3.5

看起来,在阅读了一些来自 this search that most Python libraries that deal with the Windows cert store do so to fetch CA certs and CRL lists 的点击之后,而不是个人证书。

wincertstore 可能 就是您要找的东西。


注意: RabbitMQ 团队监控 rabbitmq-users mailing list 并且有时只在 Whosebug 上回答问题。