我正在python中使用ssl
模块,具体是这样:
使用此命令的大多数示例显示使用文件路径作为前两个参数,例如:
context.load_cert_chain("/path/to/cert.pem", "/path/to/key.pem", password=password)
如果这些证书存储在Windows证书存储区中怎么办? (CA,根目录等)。我是否仍可以检索然后使用文件路径传递给上述方法?
答案 0 :(得分:1)
简短的回答:这并不容易。
ssl
模块可以通过ssl.enum_certificates
来访问Windows证书存储区,但这是非常有限的,并且不提供对私钥的访问(甚至可以将其标记为不可导出)。
Windows证书存储区自动用于客户端连接,以验证服务器证书。但是您不能轻易地使用它来创建服务器端上下文。
如果要在Windows证书存储区中存储密钥和证书,则需要使用Windows SSPI(SChannel)API来实现TLS层。在这种情况下,python ssl
模块无济于事。 SSPI提供了类似于ssl.SSLObject
的API,该API包装了OpenSSL MemoryBIO协议,因此从理论上讲,可以在Win32 API之上而不是Openssl API上实现ssl.SSLObject
。