OpenSSL 创建的证书颁发机构适用于 Windows 10 但不适用于 Ubuntu

OpenSSL created Certificate Authority works with Windows 10 but not Ubuntu

我使用 OpenSSL 创建自己的证书颁发机构。
我将创建的根证书放在 Windows 10 和 Ubuntu 18.04.
我创建了一个在 .NET Core 服务器中使用的签名证书(Ubuntu 上的 运行)。
使用 Chrome 访问 Windows 10 上的服务器时,证书是 valid/secure.
在 Ubuntu 上访问时,证书无效。

以下是我采取的步骤:

创建 CA

openssl genrsa -des3 -out self-ca.key -passout pass:password 2048
openssl req -x509 -new -nodes -key self-ca.key -sha256 -days 1825 -out self-ca.pem -passin pass:password

在 Ubuntu

上安装 CA
openssl x509 -outform der -in self-ca.pem -out self-ca.crt
cp self-ca.crt /usr/local/share/ca-certificates/.
update-ca-certificates

在 Windows

上安装 CA
Place certificate under Trusted Root Authorities

创建证书

req.conf 文件:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = CA
ST = ON
O = Self Certificate
CN = www.<mysite>.com
[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.<mysite>.com

证书命令

openssl genrsa -out self.key 2048
openssl req -new -sha256 -key self.key -config req.conf -out self.csr
openssl x509 -req -in self.csr -CA self-ca.pem -CAkey self-ca.key -CAcreateserial -out self.crt -days 1095 -sha256 -extensions v3_req -extfile req.conf -passin pass:password

创建用于 .NET Core 服务器的 pfx 文件:

openssl pkcs12 -export -inkey self.key -in self.crt -out self.pfx

Chrome in Ubuntu 使用 NSS database 而不是全局 /etc/ssl 存储。

命令certutil可用于将您的证书导入用户级NSS数据库。

安装 certutil:sudo apt install libnss3-tools

添加您的 CA 证书:certutil -d sql:$HOME/.pki/nssdb/ -A -n "My private CA" -i CA_cert.pem -t "C,C,C"

此命令将安装文件 CA_Cert.pem 中名为 My private CA 的证书作为 SSL 服务器证书、S/MIME 证书和代码签名证书的受信任根。

检查证书是否已安装:certutil -L -d sql:$HOME/.pki/nssdb/