ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:997)
时间: 2024-03-03 19:52:45 浏览: 619
这个错误通常是由于 SSL/TLS 协议版本不匹配引起的。可能是客户端和服务器端之间的 SSL/TLS 协议版本不一致导致的。
您可以尝试使用较新的 Python 版本或升级您的 SSL/TLS 库。另外,您还可以尝试使用不同的 SSL/TLS 协议版本来建立连接。例如,您可以在客户端代码中使用以下代码来指定 SSL/TLS 协议版本:
```
import ssl
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) # 指定使用 TLS 1.2 协议
```
如果以上方法不起作用,您可能需要检查您的网络设置或联系服务器管理员以获得更多帮助。
相关问题
requests.exceptions.SSLError: HTTPSConnectionPool(host='sh-signer.longcheer.com', port=8000): Max retries exceeded with url: /api/apk/importkeys/ (Caused by SSLError(SSLError(1,u'[SSL:WRONG_VERSION_NUMBER] wrong version number (_ssl.c:727)'),))
这个错误通常是由于 SSL/TLS 证书的问题导致的。可能是证书过期、证书不被信任、证书链不完整等问题引起的。建议你检查一下证书的有效性,也可以尝试使用较新的 SSL/TLS 版本。如果你使用的是 Python 的 requests 库,可以尝试添加 verify=False 参数来跳过证书验证。但是,这种做法存在安全风险,不建议在生产环境中使用。
<urlopen error [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1122)> HTTPSConnectionPool(host='192.168.3.150', port=8088): Max retries exceeded with url: /prod-api/ocrtp/callback (Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1122)')))
### 解决 Python 中使用 `requests` 库时遇到的 SSL 错误
当遇到类似于 `requests.exceptions.SSLError: HTTPSConnectionPool(host='www.zhipin.com', port=443)` 的错误提示,并且具体原因是 `[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1091)` 时,这通常意味着客户端与服务器之间的 SSL/TLS 协议握手失败。
#### 可能的原因及解决方案:
- **抓包工具干扰**:如果正在运行诸如 Charles 或 Fiddler 等 HTTP/HTTPS 流量捕获软件,则可能会导致此类问题。关闭这些应用程序可以解决问题[^4]。
- **不兼容的安全协议版本**:某些旧版服务可能仅支持特定版本的 TLS 而不是最新的标准。可以通过指定较低版本的TLS来尝试连接:
```python
import ssl
from urllib.request import Request, urlopen
ctx = ssl.create_default_context()
ctx.set_ciphers('[email protected]') # 强制使用TLS1.2
response = requests.get(url, verify=False, timeout=(3.05, 27), headers=headers, stream=True, allow_redirects=True, proxies=None, cert=None, json=None, params=None, hooks=None, auth=None, session=session, config=config, cookies=cookies, files=file_data, data=post_data, timeout=timeout_value, context=ctx)
```
- **系统时间不同步**:确保本地计算机的时间准确无误,因为证书验证依赖于正确的时间戳记。
- **自定义 CA 认证文件路径**:有时默认的信任链不足以认证远程站点的身份;这时可提供自己的CA bundle 文件给 `verify` 参数:
```python
response = requests.get(url, verify='/path/to/certfile')
```
- **禁用 SSL 验证(谨慎使用)**:虽然这不是推荐的做法,但在开发环境中为了快速测试目的可以选择忽略 SSL 检查:
```python
response = requests.get(url, verify=False)
```
需要注意的是,在生产环境下应始终启用并严格配置 SSL 安全措施以保护数据传输安全。
阅读全文
相关推荐















