web-dev-qa-db-ja.com

S / MIME証明書(OpenSSLで作成)がメールアドレスと一致しない

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

それらの洞察をありがとう、トーマス。メールアドレスを追加しましたが、メッセージはまだポップアップします:-(ルート証明書についても読みましたが、そのようなものが必要ですか?

6
Sven

証明書は、公開鍵アイデンティティにバインドします。 S/MIMEが使用するidentityの概念は、電子メールアドレスです。つまり、証明書をS/MIMEで使用できるようにするには、メールアドレスが含まれている必要があります。

次のように、電子メールアドレスを件名に追加できます(シンプルですが正式には非推奨)。

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

または(「通常のソリューション」ですが、より複雑です)「Subject Alt Name」拡張機能の一部として(OpenSSLでは、-extensionsフラグと構成ファイル。 ドキュメント を参照)。

5
Thomas Pornin

emailAddressではなくsubjectAltNameを使用してください。これは、単一のコマンドで、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:[email protected]')

詳細については、次を参照してください。 subjectAltNameをコマンドラインでopensslに直接指定

3
vog