首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用Python验证SSL证书?

如何用Python验证SSL证书?
EN

Stack Overflow用户
提问于 2018-02-28 08:49:14
回答 2查看 0关注 0票数 0

我需要编写一个脚本,通过HTTPS连接到公司内部网上的一组站点,并验证它们的SSL证书是否有效;它们没有过期,它们是为正确的地址颁发的,等等。我们使用我们自己的内部公司证书管理局对这些网站,所以我们有公共密钥的CA,以验证证书对。

默认情况下,Python在使用HTTPS时只接受和使用SSL证书,因此即使证书无效,Python库(如urllib 2和Twisted)也会很高兴地使用证书。

如何用Python验证证书?

EN

回答 2

Stack Overflow用户

发布于 2018-02-28 17:29:42

发布版本2.7.9/3.4.3 on,Python默认情况下尝试执行证书验证。

参考:https://www.python.org/dev/peps/pep-0476/

这些更改会影响所有相关的stdlib模块(urllib/urllib 2、http、httplib)。

相关文件:

https://docs.python.org/2/library/httplib.html#httplib.HTTPSConnection

这个类现在默认执行所有必要的证书和主机名检查。

https://docs.python.org/3/library/http.client.html#http.client.HTTPSConnection

在3.4.3版本中更改:这个类现在默认执行所有必要的证书和主机名检查。

票数 0
EN

Stack Overflow用户

发布于 2018-02-28 18:06:24

代码语言:txt
复制
pip install backports.ssl_match_hostname

或者,您可以将其作为项目的依赖项列出:

代码语言:txt
复制
from backports.ssl_match_hostname import match_hostname, CertificateError
...
sslsock = ssl.wrap_socket(sock, ssl_version=ssl.PROTOCOL_SSLv3,
                      cert_reqs=ssl.CERT_REQUIRED, ca_certs=...)
try:
    match_hostname(sslsock.getpeercert(), hostname)
except CertificateError, ce:
    ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档