マルチドメイン証明書を使うと、ひとつのサーバー証明書で複数のホスト名を有効にすることはできます。これはワイルドカード証明書とは異なり、www.hoge.jp と www.hoo.jp のような全く異なるホスト名を有効にする技術です。
全く関係のないドメインがこの証明書を使うことは適当とはいえませんが、それらが同一の所有者のものである場合や、同一の責任者に管理されている場合は有効な方法です。
Internet Explorer 、Firefox 等主要ブラウザがこの証明書に対応しています。
SSL通信で使われる x509 証明書には Subject Alternative Names(サブジェクトの別名)という機能があります。
Subject Alternative Names(サブジェクトの別名)は証明書のsubjectに別名を記述できることを意味しています。
マルチドメイン証明書はSubject Alternative Names(サブジェクトの別名)に複数のホスト名を記述することでその機能を実現しています。
opensslを使ってマルチドメイン証明書用のCSRを作成する場合、openssl.cnf (FreeBSD /etc/ssl/openssl.cnf, RedHat Linux /usr/share/ssl/openssl.cnf, /etc/pki/tls/openssl.cnf)を編集する必要があります。
オリジナルファイルを以下の例のようにコピーし、コピーしたファイル(例:/etc/ssl/san_openssl.cnf)を編集することをお勧めします。
cp /etc/ssl/openssl.cnf /etc/ssl/san_openssl.cnf
[req]セクションで
[req] req_extensions = v3_req
上記記述がコメントアウトされている場合は、有効にします。
記述がない場合は上記を追加してください。
[ v3_req ]セクションで
[ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
上記に続けて以下を追加してください。
subjectAltName = @alt_names [alt_names] DNS.1 = foo.com DNS.2 = www.foo.org
上記は、Subject Alternative Names(サブジェクトの別名)に foo.com と www.foo.org を登録する例です。
DNS.1 =、DNS.2 = .. に続けて、Subject Alternative Names(サブジェクトの別名)に登録するホスト名を記載してください。
以下のコマンドで /etc/ssl/san_openssl.cnf を使ってコモンネーム www.foo.com の CSR を作成します。
openssl req -config /etc/ssl/san_openssl.cnf -new
この後は通常の openssl コマンドと同様に、対話的にデータを入力します。コモンネーム www.foo.com も入力します。
作成できた CSR は以下のコマンドで内容を確認できます。$CSR_FILENAME は内容を確認する CSR ファイルの名称です。
openssl req -text -noout -in $CSR_FILENAME
以下の様な内容が表示されるはずです。
Attributes: Requested Extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment X509v3 Subject Alternative Name: DNS:www.foo.com, DNS:foo.com, DNS:www.foo.org