You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新最新OpenSSL后仍无法通过TLS连接packagist.jp求助

解决curl访问packagist.jp时的SSL握手失败问题

嘿,这个SSL握手故障我太熟了——之前帮朋友排查过几乎一模一样的情况,咱们一步步来拆解你的问题:

先理清楚你的现状

你已经把OpenSSL更新到了1.0.2l(这个版本本身是支持TLS1.2的),但不管是默认请求还是指定TLS版本,都碰到了握手失败或者“不支持的SSL版本”错误:

  • 默认请求报错:
    $ curl https://packagist.jp/packages.json
    curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
    
  • 指定TLS版本的报错:
    $ curl https://packagist.jp/packages.json --tlsv1.0
    curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
    
    $ curl https://packagist.jp/packages.json --tlsv1.1
    curl: (35) Unsupported SSL protocol version
    
    $ curl https://packagist.jp/packages.json --tlsv1.2
    curl: (35) Unsupported SSL protocol version
    

核心原因:curl和OpenSSL版本不匹配

虽然你系统的OpenSSL已经更到1.0.2l,但curl可能并没有使用这个更新后的库——很多系统里的curl是预装的,默认链接的是系统自带的旧版OpenSSL,甚至编译时没启用TLS1.2支持。这就导致你指定TLS1.2时,curl根本没法识别这个选项。

解决方案步骤

1. 先确认curl实际使用的OpenSSL版本

先跑这个命令看curl的依赖:

curl --version

看输出里的OpenSSL/xxx部分,比如如果显示的是OpenSSL/1.0.1e,那说明curl确实用的是旧库,和你系统的OpenSSL版本不一致。

2. 更新curl到支持TLS1.2的版本

方案A:用包管理器更新(推荐,如果你用的是主流发行版)

  • Ubuntu/Debian:
    sudo apt update && sudo apt install --only-upgrade curl
    
  • CentOS/RHEL:
    sudo yum update curl
    

更新完再用curl --version确认OpenSSL版本已经和系统一致。

方案B:手动编译curl(如果包管理器没有最新版)

如果你的系统包管理器里的curl版本太旧,就需要手动编译,指定链接你更新后的OpenSSL:

  1. 下载curl稳定版源码
  2. 编译时指定OpenSSL路径:
    ./configure --with-openssl=/usr/local/ssl  # 替换成你OpenSSL的实际安装路径
    make && sudo make install
    
  3. 重启终端后,再用curl --version确认版本匹配。

3. 尝试指定兼容的加密套件

有些服务器会限制只接受特定的加密套件,即使TLS版本对了也会握手失败。可以试试用--ciphers参数指定常用的兼容套件:

curl https://packagist.jp/packages.json --tlsv1.2 --ciphers ECDHE-RSA-AES128-GCM-SHA256

4. 排查CA证书问题(备选)

如果上面的方法都不行,可能是系统CA证书过期导致无法验证服务器证书。可以先临时跳过验证测试:

curl https://packagist.jp/packages.json --tlsv1.2 --insecure

如果这时候能成功,就需要更新系统的CA证书包:

  • Ubuntu/Debian:sudo apt install --only-upgrade ca-certificates
  • CentOS/RHEL:sudo yum update ca-certificates

总结

90%的概率是curl和OpenSSL版本不匹配导致的,先确认curl的OpenSSL版本,再针对性更新curl就能解决问题。

内容的提问来源于stack exchange,提问作者whitebear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:54:37