本文将介绍如何在使用Python的Requests库时,使用系统的ca-certificates来进行SSL证书验证。特别是在Debian和Ubuntu操作系统中,系统的ca-certificates存储了受信任的CA(Certificate Authority)根证书。

什么是ca-certificates?

​ ca-certificates是用于进行SSL/TLS证书验证的根证书集合。在进行HTTPS通信时,客户端会验证服务器端的证书,在验证过程中,会遍历根证书集合,并与服务器端的证书进行比对,如果找到匹配的根证书,那么服务器端的证书会被验证通过。否则,证书验证将失败。

使用Requests库进行HTTPS请求

​ 在Python中,我们可以使用Requests库进行HTTP和HTTPS请求。Requests库是一个优秀的HTTP库,提供了简洁且易于使用的API,可以方便地进行网络通信。对于HTTPS请求,默认情况下,Requests库会进行SSL证书验证。然而,有些情况下,默认的证书验证方式可能无法满足我们的需求,特别是在Debian和Ubuntu操作系统中。

​ 考虑到安全性,Debian和Ubuntu操作系统会维护一个系统的ca-certificates库,用于保存受信任的根证书。当我们使用官方的安装方式安装Python请求库时,这个ca-certificates库不会自动与Requests库进行关联。因此,在进行HTTPS请求时,默认的证书验证方式将无法正常工作。

如何使用系统的ca-certificates进行SSL证书验证

​ 要使用系统的ca-certificates进行SSL证书验证,我们需要对Requests库进行一些配置。具体步骤如下:

  1. 确保你的系统上已安装了ca-certificates包。在Debian或Ubuntu系统中,可以使用以下命令进行安装:sudo apt-get install ca-certificates
  2. 导出系统的ca-certificates路径。在终端运行echo $SSL_CERT_FILE,如果没有输出任何内容,需要手动设置环境变量,export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt。这个路径是Debian和Ubuntu系统中默认的ca-certificates文件的路径。如果你的系统上有自定义的路径,请替换成正确的路径。
  3. 在Python脚本中,使用以下代码进行配置:import os import requestos.environ['REQUESTS_CA_BUNDLE'] = os.environ['SSL_CERT_FILE']。这段代码设置了环境变量REQUESTS_CA_BUNDLE,将其值设为系统的ca-certificates路径。
  4. 现在,当使用Requests库进行HTTPS请求时,就会使用系统的ca-certificates进行证书验证了。

总结

​ 在Debian和Ubuntu系统中,如何使用系统的ca-certificates进行SSL证书验证。通过对Requests库进行配置,我们可以使其使用系统的根证书集合,实现合理的安全验证。这对于需要在Python中进行HTTPS请求的开发者来说,是一个非常重要的知识点。