![如何通过命令行将多个电子邮件地址添加到 SSL 证书?](https://linux22.com/image/28506/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B0%86%E5%A4%9A%E4%B8%AA%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E5%9C%B0%E5%9D%80%E6%B7%BB%E5%8A%A0%E5%88%B0%20SSL%20%E8%AF%81%E4%B9%A6%EF%BC%9F.png)
我知道通过添加/修改此条SubjectAltName
目openssl.cnf
可以实现,但是有没有一种方法可以做到这一点而不必每次都修改该文件?
答案1
openssl.cnf
您不必以任何方式弄乱该文件。
以下命令演示如何使用 SAN 为电子邮件生成自签名证书[email protected]
:
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
-keyout example.key -out example.crt -subj '/CN=Nobody' \
-extensions san \
-config <(echo '[req]'; echo 'distinguished_name=req';
echo '[san]'; echo 'subjectAltName=email:[email protected]')
这里的技巧是包含一个[req]
足以让 OpenSSL 在没有主openssl.cnf
文件的情况下运行的最小部分。
在 OpenSSL ≥ 1.1.1 中,可以缩短为:
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
-keyout example.key -out example.crt -subj '/CN=Nobody' \
-addext 'subjectAltName=email:[email protected]'
这里我们使用的是新-addext
选项,所以我们不再需要-extensions
and-config
了。
不要忘记验证生成的证书的内容:
openssl x509 -noout -text -in example.crt
也可以看看:https://security.stackexchange.com/a/198409/133603和https://stackoverflow.com/a/41366949/19163
答案2
在openssl.cnf
顶部添加条目(在未设置SAN = "email:copy"
环境变量的情况下具有默认值)并在相应部分中使用.现在只需调用,其中确保也使用主地址。 (改编自SAN
SubjectAltName = ${ENV::SAN}
SAN="email:copy, email:adress@two" openssl ...
email:copy
这里)