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

升级OSX High Sierra后curl出现LibreSSL 'no start line'错误求助

解决OSX High Sierra下curl加载PKCS#12证书的LibreSSL错误

我之前帮朋友排查过几乎一模一样的情况,根源在于OSX High Sierra把系统默认的curl后端从OpenSSL换成了LibreSSL,而LibreSSL对PKCS#12(.p12)证书的处理逻辑和OpenSSL有差异,这就导致之前正常的命令在升级后报错。Windows同事那边没问题,是因为他们的curl用的还是OpenSSL或者兼容的加密库。

下面给你两个可行的解决方案:

方案一:将.p12证书转换为PEM格式

LibreSSL对PEM格式的证书支持更稳定,我们可以先用openssl把.p12拆成证书和密钥的PEM文件:

  1. 导出证书部分:
openssl pkcs12 -in certificate.p12 -out certificate.pem -clcerts -nokeys

执行时会提示你输入.p12的密码,输入你原来的password即可。

  1. 导出密钥部分:
openssl pkcs12 -in certificate.p12 -out key.pem -nocerts -nodes

同样输入证书密码完成导出。

  1. 用转换后的文件调用curl:
curl -k https://server_metadata_link --cert certificate.pem --key key.pem --pass "password"

如果嫌分开文件麻烦,也可以把证书和密钥合并成一个PEM文件:

cat certificate.pem key.pem > combined.pem
curl -k https://server_metadata_link --cert combined.pem --pass "password"

方案二:安装基于OpenSSL的curl

如果不想转换证书,也可以通过Homebrew安装一个用OpenSSL编译的curl版本,完全兼容之前的命令:

  1. 先安装Homebrew(如果还没装的话),然后执行:
brew install curl --with-openssl
  1. 使用brew安装的curl运行原命令:
/usr/local/bin/curl -k https://server_metadata_link --cert certificate.p12 --pass "password"

(注意:系统默认的curl路径是/usr/bin/curl,brew安装的在/usr/local/bin,要指定完整路径或者把它加到环境变量优先级更高的位置)

这两个方案都能解决你遇到的LibreSSL加载证书失败的问题,我当时给朋友用的是方案二,因为不用改证书,直接沿用原来的命令更方便。

内容的提问来源于stack exchange,提问作者Margaret S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:25:33