运行JupyterLab nbconvert转webpdf时出现SSL证书错误
解决Jupyter nbconvert转WebPDF时的SSL证书验证问题
问题背景
使用jupyter nbconvert --to pdf转PDF时图表格式错乱,尝试转WebPDF时执行以下命令:
jupyter nbconvert --to webpdf --allow-chromium-download 'NB.ipynb' --template='base.tex.j2'
出现SSL证书错误:
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='storage.googleapis.com', port=443): Max retries exceeded with url: /chromium-browser-snapshots/Win_x64/588429/chrome-win32.zip (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain'
解决方案
1. 手动下载Chromium并指定路径(最安全)
避免nbconvert自动下载时触发SSL验证,手动获取对应版本的Chromium:
- 根据错误信息确定版本:
Win_x64/588429,手动用浏览器下载对应压缩包(浏览器通常已信任内网/自签名证书) - 解压到本地路径,比如
C:\chromium-win32(Windows)或~/chromium-win32(Linux/macOS) - 执行nbconvert时指定浏览器路径:
# Windows示例 jupyter nbconvert --to webpdf 'NB.ipynb' --browser-executable-path='C:\chromium-win32\chrome.exe' # Linux/macOS示例 jupyter nbconvert --to webpdf 'NB.ipynb' --browser-executable-path='~/chromium-win32/chrome'
2. 临时绕过Python SSL验证(仅紧急场景使用)
通过设置Python环境变量,临时禁用HTTPS证书验证:
- Windows(CMD):
set PYTHONHTTPSVERIFY=0 jupyter nbconvert --to webpdf --allow-chromium-download 'NB.ipynb'
或合并为单条命令:
set PYTHONHTTPSVERIFY=0 && jupyter nbconvert --to webpdf --allow-chromium-download 'NB.ipynb'
- Linux/macOS:
PYTHONHTTPSVERIFY=0 jupyter nbconvert --to webpdf --allow-chromium-download 'NB.ipynb'
注意:此方法会禁用Python所有请求的SSL验证,存在安全风险,仅在临时场景使用。
3. 信任自签名证书(长期解决方案)
如果是内网自签名证书导致的错误,将证书添加到系统信任库:
- Windows:
- 用浏览器访问
storage.googleapis.com,查看并导出网站的自签名证书 - 打开「证书管理器」,将证书导入「受信任的根证书颁发机构」
- 用浏览器访问
- Linux:
- 将证书文件放到
/usr/local/share/ca-certificates/目录 - 执行
update-ca-certificates更新证书库
- 将证书文件放到
- macOS:
- 用浏览器导出证书
- 打开「钥匙串访问」,导入证书并设置为「始终信任」
内容的提问来源于stack exchange,提问作者MarcB1111
相关产品推荐
相关产品推荐

