Django服务器加载Apple根证书遇OpenSSL 'header too long'错误排查
问题原因及解决方法
错误原因
你遇到的OpenSSL.crypto.Error: [('asn1 encoding routines', '', 'header too long')]错误,核心是证书文件格式与指定的解析类型不匹配:
你代码中使用FILETYPE_ASN1(对应DER二进制格式证书),但实际下载的AppleRootCA-G3.cer大概率是PEM文本格式(文件内容包含-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----标记),OpenSSL用DER格式解析PEM文件时就会触发ASN.1编码头过长的错误。
解决方法
方法1:匹配证书格式修改解析类型
打开AppleRootCA-G3.cer文件查看内容:
- 若文件是带
-----BEGIN CERTIFICATE-----的文本格式,将代码中的FILETYPE_ASN1替换为FILETYPE_PEM:
from OpenSSL.crypto import load_certificate, FILETYPE_PEM def load_root_certificates(): with open("AppleRootCA-G3.cer", "rb") as in_file: data = in_file.read() return load_certificate(FILETYPE_PEM, data)
- 若文件是纯二进制无文本标记的DER格式,先确认文件未损坏,损坏则重新下载证书。
方法2:确保证书文件完整有效
若格式匹配仍报错,大概率是证书文件在下载过程中损坏,重新获取官方的AppleRootCA-G3证书即可。
内容的提问来源于stack exchange,提问作者lorenzo
相关产品推荐
相关产品推荐

