我需要编写一个脚本,通过HTTPS连接到公司内部网上的一堆站点,并验证他们的SSL证书是否有效; 他们没有过期,他们是为正确的地址等发出的.我们为这些网站使用我们自己的内部公司证书颁发机构,因此我们有CA的公钥来验证证书.
默认情况下,Python在使用HTTPS时接受并使用SSL证书,因此即使证书无效,诸如urllib2和Twisted之类的Python库也会很乐意使用证书.
是否有一个好的库可以让我通过HTTPS连接到一个站点并以这种方式验证它的证书?
如何在Python中验证证书?
我使用Python urllib2.urlopen来与HTTPS服务器交谈,但我现在在文档中了解到"HTTPS请求[使用urllib2.urlopen]不会对服务器的证书进行任何验证."
这对我来说是个大问题,因为它让我的服务器对MITM攻击开放.
我希望直接替换urllib2.urlopen它进行证书验证,因此我可以将其与我的代码捆绑在一起,并将所有调用替换urllib2.urlopen为对已修改urlopen函数的调用.
因为这是一个安全问题,我更喜欢经过实战考验的安全审计代码,而不是来自互联网的随机配方.