欢迎访问宙启技术站
智能推送

Python中certifi模块的作用和使用方法详解

发布时间:2023-12-28 03:44:15

certifi是一个Python模块,它包含了一些被证书机构认可的根证书。在Python中,当使用与网络相关的模块(如requests、urllib等)进行HTTPS请求时,通常需要验证服务器的身份证书。certifi就是为了方便验证证书而被创建的。

certifi模块主要有两个作用:一是提供根证书,用于验证HTTPS服务器的身份证书;二是提供一个能够在Python中轻松使用的接口,以验证证书是否有效。

使用certifi模块非常简单。首先,我们需要安装certifi模块。在命令行中输入以下命令即可安装:

pip install certifi

安装完成后,我们可以使用以下代码验证一个证书是否合法:

import certifi
import ssl

# 创建一个SSL上下文
context = ssl.create_default_context(cafile=certifi.where())

# 指定要验证的域名
domain = 'www.example.com'

try:
    # 使用SSL上下文创建一个HTTPS连接
    with open_ssl_create_connection((domain, 443), context=context) as conn:
        # 打印服务器证书
        print(conn.getpeercert())
except ssl.SSLError as e:
    print('证书错误:', e)

在上面的例子中,我们首先导入了certifi模块和ssl模块。然后,我们创建了一个SSL上下文,并指定了cafile参数为certifi.where()。这将使用certifi模块提供的根证书。

接下来,我们指定要验证的域名为www.example.com,并创建一个HTTPS连接。如果服务器证书无效,将会抛出ssl.SSLError异常,我们可以通过捕获该异常并打印错误信息来处理证书错误。

最后,我们通过调用conn.getpeercert()方法来获取服务器证书,然后将其打印出来。

需要注意的是,certifi模块只提供了根证书,但并不验证服务器证书的有效性。在上面的例子中,我们使用了ssl模块来验证服务器证书的有效性。如果需要更详细的验证过程,可以参考Python的ssl模块文档。

总结来说,certifi模块的作用是提供根证书,用于验证HTTPS服务器的身份证书。它可以方便地在Python中验证证书的有效性,并且使用起来非常简单。