📜  SSLError(SSLCertVerificationError 总是出现 mac (1)

📅  最后修改于: 2023-12-03 15:35:08.954000             🧑  作者: Mango

SSLError(SSLCertVerificationError 总是出现 mac

在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/')

代码解释:

  1. ssl._create_default_https_context:用于创建默认的HTTPS上下文。
  2. ssl._create_unverified_context():创建一个未经验证的HTTPS上下文。
  3. urllib.request.urlopen():发送HTTP/HTTPS请求并返回响应。

需要注意的是,禁用证书验证会使通信过程不安全,因此不建议在生产环境中使用。生产环境需要保证通信的安全性,应该尽量避免使用此方法。

方法二:添加证书

此方法适用于生产环境。添加证书可以让Python验证证书的有效性。具体操作如下:

  1. 下载证书

使用浏览器打开需要请求的网站,访问页面后,在地址栏上点击锁图标,选择“证书”选项,然后导出证书。

mac-ssl-cert-1

将证书导出到本地,并记录好导出位置。

  1. 在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)

代码解释:

  1. ssl.create_default_context():创建默认的SSL上下文。
  2. ssl_context.load_verify_locations():添加CA证书的路径。
  3. urllib.request.urlopen():发送HTTP/HTTPS请求并返回响应。

需要注意的是,添加证书可能需要root权限。

以上就是解决mac系统下SSL证书验证错误的两种方法。建议在生产环境中使用方法二。