将证书加载到带有Certs Store的SSL中,而不是文件路径;与Python



我正在使用Python中的ssl模块,特别是:

sslcontext.load_cert_chain

使用文件路径作为前两个参数使用此节目的大多数示例:

context.load_cert_chain("/path/to/cert.pem", "/path/to/key.pem", password=password)

如果这些证书存储在Windows Certs商店中怎么办?(CA,根等)。我仍然可以检索然后使用文件路径传递到上述方法?

简短答案:它不容易工作。

ssl模块通过ssl.enum_certificates提供了对Windows证书存储的一些访问权限,但这非常有限,并且不提供对私钥的访问权限(甚至可能标记为不可证明)。

Windows证书存储自动用于客户端连接,以验证服务器证书。但是您无法轻松地使用它来创建服务器端上下文。

如果要在Windows证书存储中存储密钥和证书,则需要使用Windows SSPI(Schannel)API来实现TLS层。在这种情况下,Python ssl模块无济于事。SSPI提供了类似于ssl.SSLObject的API,该API包裹了OpenSSL MemoryBio协议,因此从理论上讲,可以在Win32 API上实现ssl.SSLObject而不是OpenSSL API。

https://learn.microsoft.com/en-us/windows/desktop/secauthn/creating-a-secure-connection-using-schannel

最新更新