在Windows下,Python/Twisted程序验证SSL证书的正确方法是什么?
有没有办法让一个使用Python/Twisted的程序,干净利落地利用Internet Explorer用来验证与HTTPS服务器SSL连接的根证书列表?在用Python验证SSL证书的回答中提供的信息非常有帮助,但示例代码是通过读取Unix特定的目录 /etc/ssl/certs/*.pem 来获取根证书的,我不太清楚在Windows上应该用什么来代替这个。
1 个回答
3
在Windows上,你可以用“从你的Linux机器复制 /etc/ssl/certs/*.pem”来做类似的事情。Mac和Windows在获取各自证书存储的方式上是不同的,而Twisted并没有直接支持这些方式。它们并不使用OpenSSL
证书,也没有像“PEM文件的目录”这样简单明了的布局。如果你能把你的信任根导出为PEM格式的文件,那么你可以请求Twisted(实际上是通过PyOpenSSL
调用OpenSSL
)来验证这些文件。
我对以一种超级便携的方式来实现这个功能感兴趣,但我实际上从来没有尝试过。这里有一些链接可以帮助你入门:SecureTransport参考,微软加密函数。
在SecureTransport的参考文档中,提到SSLGetTrustedRoots
这个函数已经不推荐使用,但没有提到替代的SSLCopyTrustedRoots
,这个是可以用的。这个可能是你在Mac上开始使用的API(通过PyObjC)。至于Windows,我就不太确定了,不过在那些函数中,可能有一个是可以满足你需求的,也许你可以用ctypes来调用它 :)。