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

如何在Python中使用certifi模块来验证SSL证书

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

certifi是一个Python模块,用于验证SSL证书的有效性。它提供了一组根证书,用于验证服务器的证书是否受信任。

使用certifi模块,您可以在Python中轻松地验证SSL证书。下面是一个使用certifi模块验证SSL证书的例子:

import certifi
import ssl
import urllib.request

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

# 设置要访问的URL
url = 'https://www.example.com'

try:
    # 使用SSL上下文打开一个URL连接
    with urllib.request.urlopen(url, context=ssl_context) as response:
        # 读取并打印响应内容
        data = response.read()
        print(data.decode('utf-8'))
except urllib.error.URLError as e:
    # 打印异常信息
    print(e.reason)

在这个例子中,我们首先导入了certifi模块,然后导入sslurllib.request模块。我们创建了一个SSL上下文对象,并将certifi模块提供的根证书文件路径指定为cafile参数。然后,我们设置要访问的URL。

try块内,使用SSL上下文打开了一个URL连接,并通过urllib.request.urlopen()函数发送了一个GET请求。在这里,ssl_context参数告诉urlopen()函数使用我们创建的SSL上下文对象进行SSL连接。如果证书验证失败,将抛出urllib.error.URLError异常,我们可以通过e.reason属性获取异常信息。如果验证成功,我们读取响应内容,并使用decode()函数将其解码为字符串。

以上就是使用certifi模块验证SSL证书的一个例子。在实际应用中,您可以将这个例子作为基础,用于验证任意SSL连接的证书有效性。