Hatena::ブログ(Diary)

サラリーマンから起業するリアル このページをアンテナに追加 RSSフィード


cakePHPに関する記事はこれから下記のブログに書いていきます。
http://d.hatena.ne.jp/cakephper



2009-02-26

[][] 1つのIPSSLの複数のバーチャルホストをしたい

ブラウザからSSLでアクセスした際に、信頼されてない証書というエラーダイアログが出ても良いので、下記のことを実現したいんですが、可能なのでしょうか?誰か知ってる人がいたら教えて下さい。

WEBサーバApache 2.2.11です。


やりたいことは、下記のようなssl設定ファイルで、httpsでアクセスするURLによってドキュメントルートを変えたいということです。どちらのURLも同じ証書を使うのでも問題なく、ブラウザに信頼されてない証書というエラーダイアログが出ても問題ないです。

このブログを参考に、

http://d.hatena.ne.jp/simpraight/20070502/1178154663

下記の設定ファイルを使ってみましたが、どちらのURLでアクセスしても同じドキュメントルートのコンテンツが表示されてしまいます。

NameVirtualHost *:443
#
<VirtualHost *:443>
    ServerAdmin admin@[ドメイン名]
    DocumentRoot /home/www
    ServerName www.[ドメイン名]
    ErrorLog logs/www/error_log
    CustomLog logs/www/access_log combined env=!nolog

    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
    SSLCertificateFile /etc/httpd/conf/ssl.crt/[ドメイン名].crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/[ドメイン名].key
    <Files ~ "\.(cgi|shtml|phtml|php3?)$">
        SSLOptions +StdEnvVars
    </Files>
    SetEnvIf User-Agent ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin admin@[ドメイン名]
    DocumentRoot /home/member
    ServerName member.[ドメイン名]
    ErrorLog logs/member/error_log
    CustomLog logs/member/access_log combined env=!nolog

    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
    SSLCertificateFile /etc/httpd/conf/ssl.crt/[ドメイン名].crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/[ドメイン名].key
    <Files ~ "\.(cgi|shtml|phtml|php3?)$">
        SSLOptions +StdEnvVars
    </Files>
    SetEnvIf User-Agent ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0
</VirtualHost>

追記(2009/3/3)ごめんなさい、出来ました。

上記の方法で問題なかったみたいです。どっか記述ミスしてたっぽい。

最終的なhttpd-ssl.confは下記のようにしました。


Listen 443


AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl


SSLPassPhraseDialog  builtin


SSLSessionCache        "shmcb:/usr/local/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300


SSLMutex  "file:/usr/local/apache/logs/ssl_mutex"

##
## SSL Virtual Host Context
##

NameVirtualHost *:443


<VirtualHost *:443>
	ServerName www.hoge.com
	ServerAdmin root@hoge.com
	
	
	ErrorLog "/home/hoge/logs/error_log"
	TransferLog "/home/hoge/logs/access_log"
	
	DocumentRoot /home/hoge/public_html
	DirectoryIndex  index.html index.htm index.shtml index.php index.pl
	
	<Directory /home/hoge/public_html>
	    Options All -Indexes
	    AllowOverride All
	    Order deny,allow
	    Allow from all
	</Directory>
	
	
	
	
	#   SSL Engine Switch:
	#   Enable/Disable SSL for this virtual host.
	SSLEngine on
	
	SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
	
	
	SSLCertificateFile "/usr/local/apache/conf/ssl/wwwhogecom.crt"
	
	SSLCertificateKeyFile "/usr/local/apache/conf/ssl/wwwhogecom.key"
	
	<FilesMatch "\.(cgi|shtml|phtml|php)$">
	    SSLOptions +StdEnvVars
	</FilesMatch>
	<Directory "/usr/local/apache/cgi-bin">
	    SSLOptions +StdEnvVars
	</Directory>
	
	
	BrowserMatch ".*MSIE.*" \
	         nokeepalive ssl-unclean-shutdown \
	         downgrade-1.0 force-response-1.0
	
	CustomLog "/usr/local/apache/logs/ssl_request_log" \
	          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>




<VirtualHost *:443>
	ServerName www.hoge2.com
	ServerAdmin root@hoge2.com
	
	ErrorLog "/home/hoge2/logs/error_log"
	TransferLog "/home/hoge2/logs/access_log"
	
	DocumentRoot /home/hoge2/public_html
	DirectoryIndex  index.html index.htm index.shtml index.php index.pl
	
	<Directory /home/hoge2/public_html>
	    Options All -Indexes
	    AllowOverride All
	    Order deny,allow
	    Allow from all
	</Directory>
	
	
	
	
	##   SSL Engine Switch:
	##   Enable/Disable SSL for this virtual host.
	SSLEngine on
	
	
	SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
	
	
	SSLCertificateFile "/usr/local/apache/conf/ssl/wwwhogecom.crt"
	
	SSLCertificateKeyFile "/usr/local/apache/conf/ssl/wwwhogecom.key"
	
	<FilesMatch "\.(cgi|shtml|phtml|php)$">
	    SSLOptions +StdEnvVars
	</FilesMatch>
	<Directory "/usr/local/apache/cgi-bin">
	    SSLOptions +StdEnvVars
	</Directory>
	
	BrowserMatch ".*MSIE.*" \
	         nokeepalive ssl-unclean-shutdown \
	         downgrade-1.0 force-response-1.0
	
	CustomLog "/usr/local/apache/logs/ssl_request_log" \
	          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
	

</VirtualHost>



masaki@masaki@ 2009/02/27 14:14 ポートを分ければ、同一IPできるっぽいんだけどね。
あとは、ワイルドカード証明書を使うと複数のサブドメインに対して1枚の証明書でいけるらしい。

http://www.onlinessl.jp/product/rapidssl_wildcard.html

やった事がないので、中途半端な回答ですみません。
ホスティング会社の知り合いに聞いてみるか…

ichikawayichikaway 2009/02/27 14:22 コメントありがとう
ポートを分けてとりあえず対応したんだけどね。
ワイルドカード証明書で、Apacheを使って、複数のサブドメインのバーチャルホストで、ドキュメントルートを分けれるのか知りたいっす。

KanatokoKanatoko 2009/03/03 08:58 SSL関連の設定項目(SSLEngine onとか)をすべて
<VirtualHost>...</VirtualHost>の外側に出すとできるような気がします

試してませんすみません

ichikawayichikaway 2009/03/03 15:34 kanatokoさん
コメントありがとうございます。
ごめんなさい、元々書いてた方法でできました。
夜中に設定してたので、単純ミスしてたっぽいです。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/ichikaway/20090226/1235656129