「1台のマシンでバーチャルホスト毎に別のSSL証明書を使用する方法」の版間の差分
(ページの作成:「== 概要 == ブラウザが https(SSL) リクエストを要求すると、最初に、 SSL 暗号化をセットアップするための証明書がブラウザに送...」) |
The Pioneer (ノート | 投稿記録) (大松「ブロックされないから荒らしやすいンゴねえ」) |
||
行1: | 行1: | ||
− | == 概要 == | + | <nowiki>Wikiduccaは終了しました。今後はゴールドペディアをご利用ください。== 概要 == |
ブラウザが https(SSL) リクエストを要求すると、最初に、 | ブラウザが https(SSL) リクエストを要求すると、最初に、 | ||
SSL 暗号化をセットアップするための証明書がブラウザに送られる。 | SSL 暗号化をセットアップするための証明書がブラウザに送られる。 |
2019年1月1日 (火) 13:08時点における版
Wikiduccaは終了しました。今後はゴールドペディアをご利用ください。== 概要 == ブラウザが https(SSL) リクエストを要求すると、最初に、 SSL 暗号化をセットアップするための証明書がブラウザに送られる。 これは要求する URL よりも先に行われるため、名前ベースのバーチャルホストを 選択することができない。 == 対策案 == 案1) クライアント側で別のポート(例: https://example.com:8443) にアクセスさせる。 =>かっこわるいので却下。 案2) FW で https://example.com へのアクセスを example.com:8443 に転送する。 => 使用している FW のマニュアルに できるけどおすすめしないよ と書いてあったので却下。 案3) IPアドレスベースのバーチャルホストを使用する。 => '''この方法が一般的とのこと。これを設定する。''' == 設定内容 == === 仮想IPアドレスの割り当て === 一つのNICに2つのIPアドレスを割り当てる。 手順は以下。 使用中の IP アドレス 192.168.1.100 今回割り当てる仮想IPアドレス 192.168.1.101 まず、NIC の設定ファイルである /etc/sysconfig/network-scripts/ifcfg-eth0 をコピーする。 # cd /etc/sysconfig/network-scripts/ # cp -p ifcfg-eth0 ifcfg-eth0:1 ← eth0の複製eth0:1を作成 次に、ifcfg-eth0:1を開いて編集する。 <pre> # vi ifcfg-eth0:1 ........................ DEVICE=eth0:1 ← eth0をeth0:1に変更 BOOTPROTO=static BROADCAST=192.168.1.255 HWADDR=00:11:AA:BB:CC:DD IPADDR=192.168.1.101 ← IPアドレスを変更 NETMASK=255.255.255.0 NETWORK=192.168.1.0 ONBOOT=yes </pre> 最後にifupで、仮想インターフェースを立ち上げる。 # ifup eth0:1 以上で、仮想IPアドレスが使用できるようになった。 === 証明書を2つ用意する === 今回は自己証明書を2つ作成した。 * /usr/local/apache2/conf/vhost01_ssl/ * /usr/local/apache2/conf/vhost02_ssl/ それぞれのディレクトリ内で以下のコマンドを実行する。 秘密鍵の作成 # openssl genrsa -des3 -out server.key 1024 自己証明書の作成 # openssl req -new -x509 -days 365 -key server.key -out server.crt Apache起動時のパスワード要求を解除 # openssl rsa -in server.key -out server.key httpd.conf 設定 バーチャルホストの作成方法は省略。 * vhost01.example.com * vhost02.example.com という2つのサイトを作成した。 ポイントは以下の箇所。 バーチャルホストディレクティブの部分を <pre> <VirtualHost *:80> ServerName vhost01.example.com 〜 以下略 〜 </pre> から、 <pre> <VirtualHost 192.168.1.100:80> ServerName vhost01.example.com 〜 以下略 〜 </pre> のように変更する。 同じように vhost02 も変更しておく。 変更前 <pre> <VirtualHost *:80> ServerName vhost02.example.com 〜 以下略 〜 </pre> 変更後 <pre> <VirtualHost 192.168.1.101:80> ServerName vhost02.example.com 〜 以下略 〜 </pre> 以上を設定し、Apache を再起動し、IPアドレスごとにブラウザアクセスできるようになったことを確認。 === httpd-ssl.conf 設定 === /usr/local/apache2/conf/extra/httpd-ssl.conf を編集する。 httpd.confと同様にバーチャルホストディレクティブを編集する。 変更前 <VirtualHost _default_:443> 変更後 <VirtualHost 192.168.1.100:443> また、ディレクティブの中でcrtとkeyの指定をする。 変更前 SSLCertificateFile "/usr/local/apache2/conf/server.crt" SSLCertificateKeyFile "/usr/local/apache2/conf/server.key" 変更後 SSLCertificateFile "/usr/local/apache2/conf/vhost01_ssl/server.crt" SSLCertificateKeyFile "/usr/local/apache2/conf/vhost01_ssl/server.key" 同じように vhost02 用のディレクティブも追加する。 <pre> <VirtualHost 192.168.1.101:443> SSLCertificateFile "/usr/local/apache2/conf/vhost02_ssl/server.crt" SSLCertificateKeyFile "/usr/local/apache2/conf/vhost02_ssl/server.key" </pre> Apache再起動 httpd.conf で httpd-ssl.conf が Include されていることを確認した後、 Apache を再起動する。 httpd.conf Include conf/extra/httpd-ssl.conf 以上で、バーチャルホスト毎に個別のSSL証明書を使用されるようになる。 == 検証 == ブラウザにて、 https://vhost01.example.com https://vhost02.example.com にアクセスし、表示される証明書がそれぞれ作成したものになっていることを確認した。 以上。 == 参考・引用 == Apache のSSL対応マルチドメイン設定の方法 http://platz.jp/howto/ssl_virtualhost.html SSL自己証明書作成手順 http://www.pistolfly.jp/weblog/2008/09/macportsapache2ssl.html [[Category:Apache]]