SSLマルチサイトのテスト環境

ユーザーが複数のサイトをWordpressで運用していて、テスト環境用にPCのVMwareでCentOS 6.5をインストールしています。
そんなに頻繁にテストサイトが必要にならないことから、次の手順でテスト環境を構築しています。

1.変更が必要なサイトだけを、本番環境からFTPでごっそりコピー(chown -R apache:apacheを忘れずに)
2.データベースのエクスポートとインポート
3.VirtualHostの定義をコピーしたサイト名に変更
4.ブラウザ側OSのhostsファイルを書き換え。

基本的にはこれだけで、本番と同一のテスト環境が作成できます。

サイト間の連携をテストする場合には、VirtualHostの定義を複数にします。
ところが、SSLサイトを複数入れる方法がわからず、SSLサイト間の連携テストができていませんでした。

apacheのSSLは基本的にIPベースのVirtualHostしか認めないことが原因です。
手っ取り早くは、CentOSをコピーして、もう一つテスト環境を作成し、VMwareで2つのCentOSを起動することですが、
ディスク容量の心配と、管理も面倒です。3つになるとさすがにハイスペックのPCが必要になります。


ネットを彷徨うと、
「IPエイリアス」を使ってIP毎にサイトを分ける。
「Subject Alternative Names(SAN)を含む証明書」を使う。
の2つの方法がありそうです。

「IPエイリアス」の場合は、
/etc/sysconfig/network-scripts/ifcfg-eth0 に、IPADDR2,NETMASK2 を追加して、

ssl.confを

<VirtualHost 192.168.0.1:443>
    DocumentRoot /var/www/html/xxxx.com
    ServerName www.xxxx.com:443
    ...
    SSLCertificateFile /etc/ht tpd/conf/server1.crt
    SSLCertificateKeyFile /etc/ht tpd/conf/server1.key
</VirtualHost>

<VirtualHost 192.168.0.2:443>
    DocumentRoot /var/www/html/yyyy.jp
    ServerName www.yyyy.jp:443
    ...
    SSLCertificateFile /etc/ht tpd/conf/server2.crt
    SSLCertificateKeyFile /etc/ht tpd/conf/server2.key
</VirtualHost>

のようにするのだろうと思いますが、
今回は、SANを使う方法を試しました。


【/etc/pki/tls/openssl.conf の修正】

[ req ]
req_extensions = v3_req ←コメントをはずす。

[ v3_req ]
subjectAltName = @alt_names ←追加する

[ alt_names ] ←このセクションを追加
DNS.1 = www.xxxx.com
DNS.2 = www.yyyy.jp
DNS.2 = www.zzzz.co.jp


【鍵ファイル作成】

/etc/pki/tls/private に移動して

openssl genrsa 2048 > server.key
openssl req -new -key server.key > server.csr
openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt

できたファイルを /etc/ht tpd/conf にコピー。


【ssl.confの編集】

ssl.conf では、VirtualHost のところを次のように変更します。

<VirtualHost *:443>
    DocumentRoot /var/www/html/xxxx.com
    ServerName www.xxxx.com:443
    ...
    SSLCertificateFile /etc/ht tpd/conf/server.crt
    SSLCertificateKeyFile /etc/ht tpd/conf/server.key
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot /var/www/html/yyyy.jp
    ServerName www.yyyy.jp:443
    ...
    SSLCertificateFile /etc/ht tpd/conf/server.crt
    SSLCertificateKeyFile /etc/ht tpd/conf/server.key
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot /var/www/html/zzzz.co.jp
    ServerName www.zzzz.co.jp:443
    ...
    SSLCertificateFile /etc/ht tpd/conf/server.crt
    SSLCertificateKeyFile /etc/ht tpd/conf/server.key
</VirtualHost>

これで、ht tpdを再起動して準備完了です。
もちろん、オレオレ証明書なので、ブラウザで最初に開くときに警告が出ますが、
テスト環境なので特に気にしません。



Tags: Wordpress
author : HUNDREDSOFT | - | -