我的 S/MIME 证书(使用 OpenSSL 创建)与我的电子邮件地址不匹配

信息安全 tls 证书 电子邮件
2021-09-03 22:23:08

我使用 OpenSSL 和以下命令创建了一个证书:

openssl req   -x509 -nodes -days 365   -subj '/C=DE/ST=state/L=city/CN=hostname'   -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

openssl pkcs12 -export   -out mycert.pfx -in mycert.pem   -name "My Certificate"

并用我的 Windows 7 机器安装它。然后我尝试发送一封加密的电子邮件,我收到一条消息,没有与我的电子邮件地址匹配的证书

我错过了什么?


编辑 1

谢谢你的这些见解,托马斯。我添加了电子邮件地址,但仍然弹出消息 :-( 我还阅读了有关根证书的信息,我需要这样的东西吗?

2个回答

证书将公钥绑定到身份S/MIME 使用的身份概念是电子邮件地址。也就是说,要使您的证书可用于 S/MIME,它应该包含您的电子邮件地址。

可以在主题名称中添加电子邮件地址(简单但已正式弃用),如下所示:

openssl req -x509 -nodes -days 365 -subj '/C=DE/ST=state/L=city/CN=Sven/emailAddress=sven@svenisgreat.com' -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

或(“正常解决方案”,但更复杂)作为“主题替代名称”扩展的一部分(对于 OpenSSL,这需要使用-extensions标志和配置文件;请参阅文档)。

不要使用emailAddresssubjectAltName而是。您可以使用单个命令执行此操作,而无需编辑openssl.cnf文件:

openssl req -x509 \
    -newkey rsa:4096 \
    -sha256 \
    -nodes \
    -days 3650 \
    -keyout smime.key \
    -out smime.crt \
    -subj "/CN=Nobody" \
    -extensions SAN \
    -config <(cat /etc/ssl/openssl.cnf; echo '[SAN]'; echo 'subjectAltName=email:nobody@example.com')

有关详细信息,请参阅:在命令行上直接向 openssl 提供 subjectAltName