Openssl
如何通過命令行將多個電子郵件地址添加到 SSL 證書?
我知道可以通過添加/修改其中的
SubjectAltName
條目來實現openssl.cnf
,但是有沒有辦法做到這一點而不必每次都修改該文件?
您不必
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')
這裡的訣竅是包含一個
[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'
這裡我們使用的是新
-addext
選項,所以我們不再需要-extensions
and-config
了。不要忘記驗證生成證書的內容:
openssl x509 -noout -text -in example.crt
另請參閱:https ://security.stackexchange.com/a/198409/133603和https://stackoverflow.com/a/41366949/19163