如何通过命令行将多个电子邮件地址添加到 SSL 证书?

如何通过命令行将多个电子邮件地址添加到 SSL 证书?

我知道通过添加/修改此条SubjectAltNameopenssl.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选项,所以我们不再需要-extensionsand-config了。

不要忘记验证生成的证书的内容:

openssl x509 -noout -text -in example.crt

也可以看看:https://security.stackexchange.com/a/198409/133603https://stackoverflow.com/a/41366949/19163

答案2

openssl.cnf顶部添加条目(在未设置SAN = "email:copy"环境变量的情况下具有默认值)并在相应部分中使用.现在只需调用,其中确保也使用主地址。 (改编自SANSubjectAltName = ${ENV::SAN}SAN="email:copy, email:adress@two" openssl ...email:copy这里

相关内容