You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何通过终端在Debian系统的Chrome中信任自签名SSL根CA证书?

如何通过终端在Debian系统的Chrome中信任自签名SSL根CA证书?

我之前在Debian无头服务器上用Puppeteer跑性能测试时,碰到过一模一样的问题——系统层面已经装了自签名CA,curl能正常访问,但无头Chrome就是不认,还不能用忽略SSL警告的选项(毕竟会干扰缓存等行为,影响基准测试结果)。下面是我踩坑后找到的有效解决方法:

先确认系统证书已正确配置(你已完成这步,可再核对)

先把自签名CA证书放到系统证书目录,更新系统信任链:

sudo cp localhost.crt /usr/local/share/ca-certificates/localhost.crt
sudo update-ca-certificates

完成后像你测试的那样,curl这类依赖系统证书库的工具就能正常访问HTTPS服务了。

关键操作:给Chrome内置证书库添加信任

Linux下Chrome用的是独立的NSS证书数据库,和系统证书库不共享,所以得单独给它配置信任。这里要注意信任标志的设置,你之前用-t P只标记为「可信对等方」是不够的,必须把它设为可信CA才行:

  1. 先确认Chrome的NSS数据库路径存在(默认路径如下):
ls $HOME/.pki/nssdb

如果路径存在,就用certutil命令添加证书,核心是信任参数-t "CP,CP,"

certutil -d sql:$HOME/.pki/nssdb -A -t "CP,CP," -n localhost -i /usr/local/share/ca-certificates/localhost.crt

这里-t参数的三个逗号分隔字段,分别对应CA证书、服务器证书、客户端证书的信任属性:

  • C代表标记为可信CA
  • P代表标记为可信对等方
  • 空值表示不设置对应类型的信任
    所以"CP,CP,"就是把该证书标记为「可信CA+可信对等方」,同时不配置客户端证书相关信任,这样Chrome就会认可这个自签名CA签发的证书了。
  1. 执行完命令后无需重启服务器,直接重新运行Puppeteer脚本即可,Chrome就能正常信任你的HTTPS服务了。

踩坑提醒

一开始我也用了-t P的参数,结果Chrome还是不认,后来才发现是信任标志没设对——你的自签名证书是作为根CA使用的,不是普通服务器证书,必须标记为可信CA才行。

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

火山引擎 最新活动