我正在尝试使用 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,...)”
所以这里有两个问题,但更重要的是:
- 如何从 Windows 商店中提取特定证书(因为我没有文件路径)?
(另一个问题是如何将其连接到 Pika,但如果上述问题得到回答,我可能会弄清楚)
注意:Pika 只是一个与 RabbitMQ 接口的第三方库。 注2:使用Python3.5