使用证书通过Python连接企业Jira服务器遇SSL验证失败求助
问题
我们公司用自研多因素认证登录Jira服务器,目前找到的资料都是用用户名/密码或API Token连接的方案,但我需要用生成的证书来连接。
当前代码如下:
import os import requests from atlassian import Jira # certificates for request CERT = '/path/to/cert' KEY = '/path/to/key' session = requests.Session() session.cert = (CERT, KEY) session.timeout = 5 jira = Jira( url="url", session=session) issue = jira.issue('issue')
运行代码时出现错误:
SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain)
解决思路
添加根证书信任:错误核心是自签名证书不在系统信任链里,你需要把Jira服务器的根CA证书添加到requests的信任列表中。在session里指定
verify参数为根CA证书的路径即可:# 替换为你的根CA证书实际路径 session.verify = '/path/to/root_ca.crt'这样requests会认可这个自签名的证书链。
临时禁用证书验证(仅测试环境用):如果是测试环境临时调试,可以关闭证书验证,但生产环境绝对禁止这么做,会带来严重安全风险:
session.verify = False注意:该操作会忽略所有SSL证书校验,可能遭遇中间人攻击。
检查证书文件有效性:确认你的客户端证书(CERT)和密钥(KEY)文件没有损坏,且是PEM等符合要求的格式。可以用openssl命令验证:
openssl x509 -in /path/to/cert -text -noout openssl rsa -in /path/to/key -check补全证书链:如果你的客户端证书是由中间CA签发的,需要把中间CA证书也加入信任链,或者直接将中间CA的内容追加到客户端证书文件末尾。
内容的提问来源于stack exchange,提问作者dluisely
相关产品推荐
相关产品推荐

