生成 SSL 证书时不要询问问题

Don't Ask question when generate SSL certificate

有时我会在本地机器上测试 SSL 网站。我厌倦了使用自签名证书并将它们添加到 Mac(浏览器或其他 OS)上我的 KeyChain。而且,Chrome总是抱怨他们。此外,这种方法与生产中使用的方法有点不同。

我发现这篇文章非常有用,您可以创建自己的 CA 根证书,将其添加一次到您的钥匙串,然后使用 CA 私钥为我的本地网站签署数千个 SSL 测试证书。 https://deliciousbrains.com/ssl-certificate-authority-for-local-https-development/

该教程效果很好,但我想将其自动化。对于 CA 根证书,这很简单,我只是像这样使用选项 -subj

openssl req -x509 -new -nodes -key /certs/myCA.key -sha256 -days 1825 -subj "/C=$CA_COUNTRY/ST=$CA_STATE/L=$CA_CITY/O=$CA_ORGANIZATION/CN=$CA_COMMON_NAME" -out /certs/myCA2.pem

其中环境变量(CA_COUNTRY、CA_STATE、CA_CITY、CA_ORGANIZATION、CA_COMMON_NAME)是从外部文件读取的。

但是,当我尝试为网站证书复制相同的内容时,我无法获得相同的结果。命令是这样的:

openssl x509 -req -in dev.deliciousbrains.com.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out dev.deliciousbrains.com.crt -days 825 -sha256 -extfile dev.deliciousbrains.com.ext

-subj 选项似乎不起作用。有没有办法将上述信息传递给此命令并避免交互问题?

您显示的命令 openssl x509 -req -CA/-CAkey ... 不会询问任何问题,除了密钥密码(如果有)(如果您按照链接页面上的说明进行操作)。 preceding 命令创建 CSR openssl req -new 提示输入主题名称,为此(就像创建 CA 证书的命令也是 req 但使用 -x509 -- 注意 -x509x509 不同)您可以使用 -subj。该页面上的“您的答案无关紧要”的说法并不完全正确;确实,当您在叶证书中使用 SubjectAlternativeName 时,如该页面 advises/directs,Subject 的值被(至少)HTTPS 服务器标识忽略,但它必须(仍然)不同 来自用于 CA 的名称以允许证书验证工作。 标准 允许叶证书中的主题名称在使用 SAN 时为空(空总是不同于非空,并且 CA 证书中需要非空名称)但 OpenSSL 不允许处理那个案子。