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

RHEL8环境下cURL移除NSS支持后如何使用客户端证书?

RHEL8环境下cURL移除NSS支持后如何使用客户端证书?

最近我们团队从RHEL7升级到RHEL8时,踩了个挺棘手的坑:cURL移除了对NSS的支持后,之前用客户端证书的方式完全失效了,折腾了好一阵才搞定,这里把经验分享给大家。

先说说之前RHEL7的情况

在RHEL7的时候,事儿特别简单——只要我们把客户端证书导入到Firefox或者Chrome(这俩用的是nssdb证书库),cURL就能直接调用这个证书库,自动选用里面的证书,根本不用额外加参数配置。当时跑curl -vv ...查调试日志的话,能看到类似Initializing NSS with certpath: ...和NSS: using client certificate: ...的内容,明明白白告诉你它在靠NSS机制干活。

升级到RHEL8后的问题

结果升级到RHEL8之后,这套方法直接不管用了。同样跑curl -vv ...,日志里连半个NSS的影子都找不到。我们查了半天资料,才发现cURL在2023年8月就已经正式移除了对NSS的支持,相关的开发讨论和代码提交都能证实这一点。

现在该怎么用客户端证书?

既然NSS这条路走不通了,我们可以换这几种方式解决:

  • 直接在命令行指定证书文件
    这是最直接粗暴的方式,把客户端证书(一般是PEM格式)和对应的私钥文件单独拿出来,在curl命令里用参数明确指定:

    curl --cert /path/to/client-cert.pem --key /path/to/client-key.pem https://your-target-url.com
    

    如果你的证书和私钥合并在同一个PEM文件里,也可以只用--cert参数,顺便带上证书密码(如果有的话):

    curl --cert /path/to/combined-cert-key.pem:your-cert-password https://your-target-url.com
    
  • 改用OpenSSL证书库
    RHEL8上的cURL默认用OpenSSL作为加密后端,所以我们可以把证书导入到OpenSSL的证书体系里:

    1. 把客户端证书复制到系统信任的证书目录(比如/etc/pki/tls/certs/),然后用c_rehash命令生成哈希链接,方便OpenSSL查找:
      sudo cp /path/to/client-cert.pem /etc/pki/tls/certs/
      sudo c_rehash /etc/pki/tls/certs/
      
    2. 之后curl就能自动识别到证书,你也可以通过环境变量指定自定义的证书目录,不用改动系统配置:
      export SSL_CERT_DIR=/path/to/your/custom/cert-folder
      curl https://your-target-url.com
      
  • 配置curl的默认配置文件
    如果不想每次都敲一堆参数,可以把证书配置写到curl的配置文件里,一劳永逸:

    • 用户级配置:编辑~/.curlrc文件
    • 系统级配置:编辑/etc/curlrc文件(需要sudo权限)
      在配置文件里添加以下内容:
    cert = /path/to/client-cert.pem
    key = /path/to/client-key.pem
    

    这样之后每次运行curl,都会自动加载这些证书配置,不用再手动指定参数。

备注:内容来源于stack exchange,提问作者klog

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 13:03:05