Don';生成SSL证书时不要问问题

Don';生成SSL证书时不要问问题,ssl,openssl,ssl-certificate,x509certificate,Ssl,Openssl,Ssl Certificate,X509certificate,有时我在本地机器上测试SSL网站。我厌倦了使用自签名证书并将其添加到Mac(浏览器或其他操作系统)上的密钥链中。此外,Chrome总是抱怨这些问题。此外,这种方法与生产中使用的方法略有不同 我发现本文非常有用,您可以创建一次自己的CA根证书,将其添加到密钥链中,然后使用CA私钥为我的本地网站签署数千个SSL测试证书。 该教程非常有效,但我想将其自动化。对于CA根证书,这很简单,我只使用了选项-sub,如下所示: openssl req -x509 -new -nodes -key /certs

有时我在本地机器上测试SSL网站。我厌倦了使用自签名证书并将其添加到Mac(浏览器或其他操作系统)上的密钥链中。此外,Chrome总是抱怨这些问题。此外,这种方法与生产中使用的方法略有不同

我发现本文非常有用,您可以创建一次自己的CA根证书,将其添加到密钥链中,然后使用CA私钥为我的本地网站签署数千个SSL测试证书。

该教程非常有效,但我想将其自动化。对于CA根证书,这很简单,我只使用了选项
-sub
,如下所示:

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_国家、CA_州、CA_城市、CA_组织、CA_公共名称)

然而,当我尝试为网站证书复制相同的内容时,我无法得到相同的结果。命令如下:

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

似乎
-sub
选项不起作用。是否有方法将上述信息传递给此命令并避免出现交互问题?

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

谢谢您的回答。这对我帮助很大。您知道在最后一个命令(创建叶证书的命令)中是否有一种方法可以将CA私钥密码短语作为环境变量传递,从而使脚本完全不交互?请参阅
-passin
下的手册页,该手册页将您指向/链接到“顶级”手册页