在Windows下,Python/Twisted程序验证SSL证书的正确方法是什么?

7 投票
1 回答
1091 浏览
提问于 2025-04-16 06:50

有没有办法让一个使用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来调用它 :)。

撰写回答