上QQ阅读APP看书,第一时间看更新
5.6 证书验证
当遇到一些特殊的网站时,在浏览器上会显示连接不是私密连接而导致无法浏览该网页。若在没有安装12306根证书的情况下访问12306网站,则页面如图5-3所示。
图5-3 查询12306的车票
这里补充一个知识点,CA证书也叫SSL证书,是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。
SSL证书就是遵守SSL协议,由受信任的数字证书机构颁发CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。
SSL证书在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure Socket Layer, SSL),安全协议是由Netscape Communication公司设计开发的。该安全协议主要用来提供对用户和服务器的认证,对传送的数据进行加密和隐藏,确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。
一些特殊的网站会使用自己的证书,如12306首页提示下载安装根证书,这是为了确保网站的数据在传输过程中的安全性。在讲述urllib.request.urlopen的时候,urlopen带有cafile、capath和cadefault参数,可以用于设置用户的CA证书。
遇到这类验证证书的网站,最简单而暴力的方法是直接关闭证书验证,可以在代码中引入SSL模块,设置关闭证书验证即可。代码如下: