它运行良好。您拥有自己的证书颁发机构 (CA),并且该localhost
颁发机构直接颁发证书。没有使用中间证书颁发机构,因此假设mkcert is not creating the full chain
不正确。
CA 证书必须在您的计算机上可用,并且您需要定义哪些 CA 证书是值得信赖的。NODE_EXTRA_CA_CERTS
正是那个配置,您可以在其中允许特定的 CA 证书文件。
当然,您可以将此自定义 CA 证书添加到系统 CA 证书存储中。它们的位置取决于使用的操作系统,例如:
"/etc/ssl/certs/ca-certificates.crt", // Debian/Ubuntu/Gentoo etc.
"/etc/pki/tls/certs/ca-bundle.crt", // Fedora/RHEL 6
"/etc/ssl/ca-bundle.pem", // OpenSUSE
"/etc/pki/tls/cacert.pem", // OpenELEC
"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem", // CentOS/RHEL 7
"/etc/ssl/cert.pem", // Alpine Linux
这应该由mkcert -install
.
我的猜测是您的节点没有使用系统 CA 存储(环境变量NODE_OPTIONS=--use-openssl-ca
),所以只有节点自己的 CA 证书(例如https://github.com/nodejs/node/blob/v14.0.0/src/node_root_certs.h)是对节点可信。
您可以选择使用系统 CA 证书存储(环境变量NODE_OPTIONS=--use-openssl-ca
或节点 CLI 参数--use-openssl-ca
),也可以像您一样允许自定义 CA 使用环境变量NODE_EXTRA_CA_CERTS
。