📅  最后修改于: 2023-12-03 15:35:08.954000             🧑  作者: Mango
在mac系统中使用Python进行网络请求时,有时会遇到SSL证书验证错误(SSLCertVerificationError),这是因为mac系统的安全设置较高,导致Python无法验证证书的有效性。下面介绍两种解决方法。
这种方法的风险较高,一般在测试或者开发环境中使用。通过禁用证书验证,可以让Python跳过SSL证书的检查。
import ssl
import urllib.request
ssl._create_default_https_context = ssl._create_unverified_context
response = urllib.request.urlopen('https://example.com/')
代码解释:
ssl._create_default_https_context
:用于创建默认的HTTPS上下文。ssl._create_unverified_context()
:创建一个未经验证的HTTPS上下文。urllib.request.urlopen()
:发送HTTP/HTTPS请求并返回响应。需要注意的是,禁用证书验证会使通信过程不安全,因此不建议在生产环境中使用。生产环境需要保证通信的安全性,应该尽量避免使用此方法。
此方法适用于生产环境。添加证书可以让Python验证证书的有效性。具体操作如下:
使用浏览器打开需要请求的网站,访问页面后,在地址栏上点击锁图标,选择“证书”选项,然后导出证书。
将证书导出到本地,并记录好导出位置。
import ssl
import urllib.request
ssl_context = ssl.create_default_context()
ssl_context.load_verify_locations('/path/to/cert.pem')
response = urllib.request.urlopen('https://example.com/', context=ssl_context)
代码解释:
ssl.create_default_context()
:创建默认的SSL上下文。ssl_context.load_verify_locations()
:添加CA证书的路径。urllib.request.urlopen()
:发送HTTP/HTTPS请求并返回响应。需要注意的是,添加证书可能需要root权限。
以上就是解决mac系统下SSL证书验证错误的两种方法。建议在生产环境中使用方法二。