web-dev-qa-db-ja.com

マルチドメインのCSRの生成

マルチドメインのCSRを生成する方法。

単一ドメインのCSRを生成すると、次のようになることがわかりました。

openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr

しかし、どうすればCSRマルチドメインを生成できますか

31
Elisa

X.509証明書が複数のドメインをサポートするには、 RFC 2818(HTTP over TLS) (またはRFC 6125)に従って、複数のサブジェクト代替名DNSエントリを使用する必要があります。

タイプdNSNameのsubjectAltName拡張が存在する場合、それをIDとして使用する必要があります。それ以外の場合は、証明書のSubjectフィールドの(最も具体的な)Common Nameフィールドを使用する必要があります。 Common Nameの使用は既存の慣行ですが、非推奨であり、代わりにdNSNameを使用することを認証局に推奨しています。

マッチングは、[RFC2459]で指定されたマッチングルールを使用して実行されます。特定のタイプの複数のIDが証明書に存在する場合(たとえば、複数のdNSName名、セットのいずれかでの一致は許容できると見なされます。)

このドキュメント で説明されているように(genrsaコマンドに-des3も使用して、秘密キーを保護する場合を除きます):

  • 最初のopenssl.cnfファイルをコピーします(オリジナルはおそらくLinuxの/etcのどこかにあります)。
  • これを編集して、req_extensions = v3_reqセクションに[ req ]を追加します。
  • これを編集して、subjectAltName=DNS:www.example.com,DNS:www.other-example.comセクションにDNS:(必要なホスト名ごとに1つの[ v3_req ]エントリ)を追加します。
  • OpenSSLがその構成ファイルを使用するようにします。 OPENSSL_CONF=/path/to/your/openssl.cnf openssl req ...で呼び出す

そうは言っても、CSRに拡張機能を設定することについてはあまり心配しません。優れたCAは、CSRで設定したものをすべて無視し、実際の証明書を発行するときに実際に確認したものだけを設定する必要があります。サブジェクトDN内のRDN(国、組織など)と拡張(SANまたはキーの使用法)は喜んで置き換えられます。まず、申請者がCSRで要求したとおりに延長を許可すると、一部の申請者は実際に何でも取得できるため、これはセキュリティリスクになります。第二に、それは彼らがあちこちにいくつかのビットを設定するためにあなたに請求することによって追加のお金を稼ぐ方法です(例えば、コード署名拡張):彼らはあなたがあなたが証明書で支払ったものだけを確実に得ることを保証します。ただし、念のため、リクエストするすべての名前をCSRに含めることもできます。

33
Bruno