学习如何使用证书,也许会有本地 CA 服务器。我有带 BMC 的服务器,所以我用它来练习。生成 CA 对,然后是主机对,然后使用 CA 对签名主机 CSR 以获取主机 crt。我将 CA crt 上传到 chrome 受信任密钥存储库,并将主机对上传到 BMC。现在当我转到服务器时,我可以看到 BMC 返回正确的 crt,但 chrome 显示连接不安全。原因是 ERR_CERT_COMMON_NAME_INVALID。但是,当我单击“证书无效”时,我可以看到两个密钥和签名证书都显示为“此证书正常”。url 中使用的 DNS 名称 = COMMON 名称。同时,对于 Firefox 没有问题,我的证书很好。可能出了什么问题?
使用以下序列:#CA PRIVATE
openssl genrsa -out CAKEY.pem 2048
#CA CERTIFICATE(用于浏览器)。通用名称:ca.mydomain.com
openssl req -x509 -sha256 -new -nodes -key CAKEY.pem -days 3650 -out CACERT.pem -addext "subjectAltName = DNS:ca.mydomain.com"
#HOST KEY(已上传至 BMC),我需要关闭此处的密码保护,BMC 不喜欢密码
openssl genrsa -out HOSTKEY.pem 2048
#HOST CSR。通用名称:host1.mydomain.com
openssl req -new -key HOSTKEY.pem -out HOSTCSR.pem -addext "subjectAltName = DNS:host1.mydomain.com"
#SIGN(已上传至 BMC)
openssl x509 -req -CA CACERT.pem -CAkey CAKEY.pem -in HOSTCSR.pem -out HOSTCRT.PEM -days 3650 -CAcreateserial
答案1
在 1.1.1 及更早版本中,OpenSSL 的x509
命令不会将扩展从 CSR 文件复制到签名的证书中。
在最新版本有一个-copy_extensions <arg>
选项,其中 ` 可以是没有任何,复制或者全部复制。
您在 Chrome 中收到此消息,是因为您的证书尚未复制主题备用名称 (SAN) 扩展,因此它会发出抱怨。我相信,如果不存在主题备用名称扩展,Firefox 会保留主题的 CommonName 的使用权,这就是它不会发出抱怨的原因。
x509
您可以通过将命令指向另一个带有-extfile <file>
和选项的配置文件来解决此问题-extensions <section>
。该文件<file>
只需要有一个命名部分,其中包含您要添加到证书的扩展名:
[ my_ext ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = host1.mydomain.com