EC2服务器调用OpenAI API遇SSL权限错误的解决求助
解决OpenAI API调用的SSL权限错误问题
针对你遇到的SSLError(PermissionError(13, 'Permission denied'))错误,可按以下步骤排查修复:
检查SELinux限制
SELinux可能阻止Python进程访问SSL相关资源。临时关闭测试:sudo setenforce 0若调用成功,可选择永久关闭(编辑
/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled后重启服务器),或添加允许Python进程访问的SELinux规则。修复系统CA证书
系统CA证书不完整会导致SSL验证失败:- CentOS/RHEL系统:
sudo yum install ca-certificates -y sudo update-ca-trust - Ubuntu/Debian系统:
sudo apt install ca-certificates -y sudo update-ca-certificates
- CentOS/RHEL系统:
临时绕过SSL验证(仅测试用)
若证书问题暂时无法解决,可在代码中添加临时绕过逻辑(不建议长期使用):import ssl import openai # 添加这行代码 ssl._create_default_https_context = ssl._create_unverified_context def call_openai(search_prompt, engine='text-davinci-003', temp=0.3, top_p=1.0, tokens=400, freq_pen=0.0, pres_pen=0.0, stop=['END']): prompt = search_prompt.encode(encoding='ASCII',errors='ignore').decode() response = openai.Completion.create( engine=engine, prompt=prompt, temperature=temp, max_tokens=tokens, top_p=top_p, frequency_penalty=freq_pen, presence_penalty=pres_pen, stop=stop) text = response['choices'][0]['text'].strip() return text验证网络出站权限
确认EC2安全组和本地防火墙允许HTTPS(443端口)出站:- 检查EC2安全组,确保出站规则包含
0.0.0.0/0的443端口。 - 本地firewalld配置:
sudo firewall-cmd --add-service=https --permanent sudo firewall-cmd --reload
- 检查EC2安全组,确保出站规则包含
检查运行脚本的用户权限
尝试用root用户运行脚本,若成功则说明当前用户缺少访问SSL相关文件的权限,可调整用户权限或切换至合适用户执行。
内容的提问来源于stack exchange,提问作者idan
相关产品推荐
相关产品推荐

