バーチャルホスト+SSL
Apacheのバーチャルホストを使うと1つのIPでhttp://sanya.sweetduet.info/とhttp://eila.sweetduet.info/という2つのサイトを動かせる。ブラウザがホスト名を送る前に証明書が送られるので、これをHTTPSにしようとすると*.sweetduet.infoというワイルドカード証明書を使うしかない。さらに、https://example.com/というサイトを動かすのは無理。という話だと思っていたけど、Server Name Indication(SNI)という仕組みがあるらしい。設定も特に複雑なことはなくて、普通にバーチャルホストを書いてそれぞれに証明書を設定するだけ。XPは対応していないけど自分か身内しか使わないサイトだから構うまい。
こんな感じ
https://sanya.sweetduet.info/
https://eila.sweetduet.info/
おすすめはしないけど、↓を「信頼されたルート証明機関」にインストールすれば、エラーも無くなるはず。
https://sanya.sweetduet.info/kusano.crt
証明書作成
# cd /etc/pki/tls/certs/ # make kusano.crt ←オレオレルート証明書を作成 # make sanya.sweetduet.info.csr ←証明書発行要求を作成 # openssl x509 -CA kusano.crt -CAkey kusano.key -CAcreateserial -req -days 3650 -in sanya.sweetduet.info.csr -out sanya.sweetduet.info.crt ←署名 # openssl rsa -in sanya.sweetduet.info.key -out sanya.sweetduet.info.key ←秘密鍵からパスワードを削除 # make eila.sweetduet.info.csr # openssl x509 -CA kusano.crt -CAkey kusano.key -CAcreateserial -req -days 3650 -in eila.sweetduet.info.csr -out eila.sweetduet.info.crt # openssl rsa -in eila.sweetduet.info.key -out eila.sweetduet.info.key
httpd.conf
(略) NameVirtualHost *:80 <VirtualHost *:80> Include conf/sanya.conf ErrorLog logs/sanya/error_log CustomLog logs/sanya/access_log combined </VirtualHost> <VirtualHost *:80> Include conf/eila.conf ErrorLog logs/eila/error_log CustomLog logs/eila/access_log combined </VirtualHost> NameVirtualHost *:443 <VirtualHost *:443> Include conf/sanya.conf Include conf/sslhost.conf SSLCertificateFile /etc/pki/tls/certs/sanya.sweetduet.info.crt SSLCertificateKeyFile /etc/pki/tls/certs/sanya.sweetduet.info.key SSLCertificateChainFile /etc/pki/tls/certs/kusano.crt ErrorLog logs/sanya/ssl_error_log TransferLog logs/sanya/ssl_access_log CustomLog logs/sanya/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> <VirtualHost *:443> Include conf/eila.conf Include conf/sslhost.conf SSLCertificateFile /etc/pki/tls/certs/eila.sweetduet.info.crt SSLCertificateKeyFile /etc/pki/tls/certs/eila.sweetduet.info.key SSLCertificateChainFile /etc/pki/tls/certs/kusano.crt ErrorLog logs/eila/ssl_error_log TransferLog logs/eila/ssl_access_log CustomLog logs/eila/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
conf.d/ssl.confから
sslhost.conf
LogLevel warn SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory> SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0
sanya.conf
ServerName sanya.sweetduet.info DocumentRoot "/var/www/html/sanya"
eila.conf
ServerName eila.sweetduet.info DocumentRoot "/var/www/html/eila"
Apacheの設定とか良くわからないので、変なことをしていたら、クラックする前に教えてください。