OPENSSL_internal:WRONG_VERSION_NUMBER 处理

curl: (35) TLS connect error: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER

OPENSSL_internal:WRONG_VERSION_NUMBER 处理_第1张图片

你遇到的 curl: (35) TLS connect error 通常与 SSL/TLS 协议版本不兼容或服务器配置问题有关。以下是逐步排查和解决方案:


1. 检查 curl 和 OpenSSL 版本

旧版本的工具可能不支持现代 TLS 协议:

curl --version  # 查看支持的协议(如 TLS 1.2/1.3)
openssl version # 确保 OpenSSL ≥ 1.1.1(支持 TLS 1.3)
  • 升级方法
    # Ubuntu/Debian
    sudo apt update && sudo apt upgrade curl openssl
    
    # CentOS/RHEL
    sudo yum update curl openssl
    

2. 强制指定 TLS 版本

尝试显式指定 TLS 1.2(兼容性较好):

curl --tlsv1.2 https://example.com

如果服务器仅支持 TLS 1.3,可尝试:

curl --tlsv1.3 https://example.com

3. 检查服务器证书有效性

服务器证书可能过期或配置错误:

# 查看证书详情(按提示输入域名)
openssl s_client -connect example.com:443 -showcerts
  • 如果证书无效,可临时跳过验证(仅测试用):
    curl -k https://example.com  # 或 --insecure
    

4. 检查 URL 格式

确保 URL 以 https:// 开头且无拼写错误:

# 错误示例(缺少协议)
curl example.com

# 正确写法
curl https://example.com

5. 调试连接过程

使用 -v 参数查看详细错误:

curl -v https://example.com
  • 观察输出中的 * TLSv1.X 行,确认协商的协议版本。
  • 检查 SSL certificate problem 等证书相关错误。

6. 检查服务器配置

如果服务器由你控制,需确保:

  • 支持主流 TLS 版本(如 TLS 1.2+)。
  • 证书链完整且未过期。
  • 未强制使用过时的协议(如 SSLv3)。

7. 其他可能性

  • 代理/防火墙干扰:尝试关闭代理或 VPN。
  • SNI 支持:某些旧服务器需要禁用 SNI:
    curl --ciphers 'DEFAULT:!DH' https://example.com
    

总结命令流程

# 1. 升级工具
sudo apt update && sudo apt upgrade curl openssl

# 2. 指定 TLS 1.2 测试
curl --tlsv1.2 -v https://example.com

# 3. 临时跳过证书验证(仅测试)
curl -k https://example.com

如果问题持续,请提供 curl -v 的完整输出以便进一步分析。

你可能感兴趣的:(运维,OPENSSL)