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