如何通过终端在 Debian 上的 Chrome 中信任自签名 ssl 根 CA?

如何通过终端在 Debian 上的 Chrome 中信任自签名 ssl 根 CA?

我正在设置一台专用机器来自动执行我的 Web 应用程序的浏览器基准测试。这需要使用 HTTP/2,而 HTTP/2 需要 SSL 连接,因此我创建了一个自签名 CA 和证书供我的本地 https 服务器使用。

我将自签名证书添加到 Debian,似乎一切正常。Chrome 似乎在 Linux 上使用内置证书存储,您可以通过其 GUI 进行添加。

问题是,我的环境是运行 Debian 的 VPS,因此我无法访问 Chrome UI 来通过其 UI 添加证书。

我已使用以下命令将自签名根证书安装到我的系统中:

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

Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

现在,当通过以下方式访问服务器时curl,请求信任自签名证书

$ curl https://localhost:3000

<html></html>

但是,当通过 Puppeteer 使用无头 Chrome 时,Chrome 不会接受证书并退出。

我知道我可以将 Puppeteer 配置为忽略 SSL 警告 - 这确实会导致不同的浏览器行为(特别是在缓存方面),因此我无法将它用于我的用例(自动性能基准测试)。

我知道在 Linux 下,Chrome 使用内置证书存储。是否可以通过终端添加到该存储?

编辑:

我尝试使用certutil按照以下说明使用这个帖子

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

-d是数据库,我已验证它sql:$HOME/.pki/nssdb存在。-A将证书添加到数据库,-t P表示将其标记为“受信任对等方”,-n是证书的昵称,-i是证书路径。

但是重新运行 Puppeteer 进程后,它仍然没有接受证书。重新启动计算机似乎没有任何改变。

编辑:

以下命令有效。-t CP将证书添加为受信任的对等方和 CA。我不知道逗号是什么意思。

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

答案1

以下命令有效。

首先确保certutil安装了:

sudo apt install libnss3-tools

然后将证书添加到数据库:

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

-t CP将证书添加为受信任的对等方和 CA。我不知道逗号是什么-t "CP,CP,"意思,但没有它们就无法工作。

相关内容