【问题标题】:Don't Ask question when generate SSL certificate生成 SSL 证书时不要问问题
【发布时间】:2021-03-18 10:16:34
【问题描述】:

有时我会在本地机器上测试 SSL 网站。我厌倦了使用自签名证书并将它们添加到我在 Mac(浏览器或其他操作系统)上的 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 选项似乎不起作用。有没有办法将上面的信息传递给这个命令并避免交互式问题?

【问题讨论】:

    标签: ssl openssl ssl-certificate x509certificate


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答。这对我帮助很大。您是否知道最后一个命令(创建叶证书的命令)中是否有一种方法可以将 CA 私钥密码短语作为 ENVIRONMENT 变量传递,从而使脚本根本不具有交互性?
    • 查看-passin 下的手册页,它指向/链接到“顶级”手册页openssl.org/docs/man1.1.1/man1/openssl.html#Pass-Phrase-Options
    猜你喜欢
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 2017-09-07
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多