用python2使用httplib或者request库的时候,访问https站点,提示如下:
Exception: hostname 'xxx' doesn't match either of 'yyy'
截图:

原因是 python2的httplib库下层调用的SSL组件,会去请求对应https站点的证书信息,然后验证你请求的域名是否符合该证书。
证书内容截图如下:

证书中的“使用者备用名称” 即SNI没有我请求的域名,因此报错。
修复方法:
在脚本前面增加两行
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
不验证ssl内容即可,当然安全性会下降。

博客指出用Python2使用httplib或request库访问HTTPS站点时,会提示域名不匹配错误。原因是Python2的httplib库下层SSL组件验证域名与证书不符。证书的“使用者备用名称”无请求域名导致报错,修复方法是在脚本前加两行代码,不验证SSL内容,但会降低安全性。

1744

被折叠的 条评论
为什么被折叠?



