コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
全カテゴリ
カテゴリ未導入のページ
利用者の投稿記録
最近の更新
特別ページ一覧
ヘルプ
新規作成
新しい記事
検索
検索
表示
ログイン
個人用ツール
ログイン
1台のマシンでバーチャルホスト毎に別のSSL証明書を使用する方法のソースを表示
ページ
ノート
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
表示
サイドバーに移動
非表示
←
1台のマシンでバーチャルホスト毎に別のSSL証明書を使用する方法
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
== 概要 == ブラウザが 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]]
1台のマシンでバーチャルホスト毎に別のSSL証明書を使用する方法
に戻る。