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

Tob*_*ler 7 ssl openssl certificates

我知道,通过添加/修改SubjectAltName的条目openssl.cnf可以实现,但有什么办法,而无需每次修改该文件这样做呢?

vog*_*vog 8

您不必openssl.cnf以任何方式弄乱文件。

以下命令演示了如何使用 SAN 为电子邮件生成自签名证书nobody@example.com

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:nobody@example.com')
Run Code Online (Sandbox Code Playgroud)

这里的技巧是包含一个最小的[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:nobody@example.com'
Run Code Online (Sandbox Code Playgroud)

这里我们使用的是新-addext选项,所以我们不再需要-extensions-config了。

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

openssl x509 -noout -text -in example.crt
Run Code Online (Sandbox Code Playgroud)

另见:https : //security.stackexchange.com/a/198409/133603/sf/answers/2895686461/