【问题标题】:Accessing a specific certificate from the windows store with python使用 python 从 Windows 商店访问特定证书
【发布时间】:2019-03-15 22:57:55
【问题描述】:

我正在尝试使用 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

【问题讨论】:

    标签: python windows ssl python-pika


    【解决方案1】:

    看起来,在阅读了来自 this search 的一些点击后,大多数处理 Windows 证书存储的 Python 库都这样做是为了获取 CA certs and CRL lists 而不是单独的证书。

    wincertstore可能正是您想要的。


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

    【讨论】:

    • 谢谢,我确实看过,但再看一遍,可能值得一试。退后一步,我想知道我的任务是否可能。我被告知我们不能将 .pem 文件保存在 windows 文件夹中,但必须从 CA/ROOT 证书存储中检索它们。查看实际的 RabbitMQ 文档,我只看到它说 cacertfile、keyfile 和 cafile 是实际路径,例如 "/path/to/*.pem" 。因此,要么 Pika 能够将这些证书文件从存储转换为实际路径,要么我正在执行一项不可能完成的任务。
    • 快速更新:使用 wincertstore,它有一个 get_pem() 方法,它是实际的证书文件内容。把这个传给 pika,可能最终是我需要的。一旦我弄清楚如何通过这种方式传入密钥文件cafile和certfile,我认为这会起作用!
    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    相关资源
    最近更新 更多