Odoo xmlrpc调用提示SSL证书已过期错误是什么原因?
SSL证书校验失败错误原因说明
抛出ssl.SSLCertVerificationError: certificate has expired的核心原因是HTTPS请求时服务端SSL证书校验不通过,具体可从以下几个方向排查:
- Odoo服务端证书过期:这是最高概率的原因。4个月前证书还在有效期内,现在证书到期后服务端没有及时续期,Python发起HTTPS请求时默认会校验证书有效期,校验不通过直接抛出异常。
- 本地信任根证书库异常:运行Python脚本的设备上的根证书信任列表更新后,原本给Odoo服务端证书签名的CA根证书被移除、或者本身也已过期,导致即使服务端证书本身有效,也无法通过信任链校验。
- 证书信任链兼容问题:如果Odoo服务使用的是Let's Encrypt等免费证书,旧版本的Python/操作系统自带的根证书库没有内置新的根证书,也会误判证书已过期。
临时测试验证方案(生产环境禁止使用,会引发安全风险):
可以通过创建不校验证书的SSL上下文传入ServerProxy绕过校验,示例代码如下:import ssl import xmlrpc.client unverified_context = ssl._create_unverified_context() client = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(odoo_server), allow_none=True, context=unverified_context)
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

