1つのIPで複数のSSLサイトを運用する方法


バーチャルホストにて、
http://www.hoge.com
http://www.moge.net
という2つのドメインを運営しているのですが、
両方のドメインで、SSLの認証を行う必要に迫られました。

https://www.hoge.com
https://www.moge.net:444
というURLになっても問題ありません。

1つのIPアドレスに複数ポートを定義することにより、
このような運用は可能だということは分かったのですが、
どのように設定すればいいのか分かりません。

「CentOSで自宅サーバ構築」を参考に
サーバを構築させて頂きました。

httpd.conf
ssl.conf

にどのような記述をすればいいのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/03/29 21:30:31
  • 終了:2007/04/03 13:08:24

ベストアンサー

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/03/29 23:17:12

ポイント50pt

まず、443 以外での HTTPS の使用は推奨しかねる為、正攻法は2つのドメインに別々のIPを割り当てる方法です。

バーチャルホストによる複数サイトの同時運用(2/2)

出来るだけこの形の方が好ましいですが、状況によっては難しいかもしれません。


設定方法はまず、通常の形で SSL を使用できるところまでは設定してください。(モジュールのインストール・有効化など)

その上で、IPアドレスを aaa.bbb.ccc.ddd とすると

Listen 443
Listen 444
NameVirtualHost aaa.bbb.ccc.ddd:443
NameVirtualHost aaa.bbb.ccc.ddd:444

<VirtualHost aaa.bbb.ccc.ddd:443>
SSLEngine on
ServerName www.hoge.com
DocumentRoot /www/httpd/www.hoge.com
ServerAdmin webmaster@www.hoge.com
ErrorLog logs/error_log
TransferLog logs/access_log
SSLCertificateFile ssl.crt/www.hoge.com.crt
SSLCertificateKeyFile ssl.key/www.hoge.com.key
</VirtualHost>

<VirtualHost aaa.bbb.ccc.ddd:444>
SSLEngine on
ServerName www.moge.net
DocumentRoot /www/httpd/www.moge.net
ServerAdmin webmaster@www.moge.net
ErrorLog logs/error_log
TransferLog logs/access_log
SSLCertificateFile ssl.crt/www.moge.com.crt
SSLCertificateKeyFile ssl.key/www.moge.com.key
</VirtualHost>

という設定を出来るだけ後ろに追加することで、VirtualHost が使用できます。

また、各ファイルのパス等については実際に使用するものに読み替えてください。

id:wakutan

下記のように設定を行いましたが、

sslで保護されたページにアクセスすると

https://www.hoge.com

https://www.moge.net:444

の両方で、どこを見にいけばいいのか分からないという感じで、

少し時間が経ったあと「ページを表示できません。」

という画面になります。

ssl.confの元の設定では、

<VirtualHost _default_:443>

</VirtualHost>

のようになっていました。

この部分を教えて頂いたように変更してテストをして見ました。


設定をかえた この部分を

<VirtualHost aaa.bbb.ccc.ddd:443>→<VirtualHost _default_:443>

元に戻すと、https://www.hoge.com のSSLにはアクセスできました。

どの部分がおかしいのでしょうか?

どうぞよろしくお願いいたします。



virtualhost.conf

-----------------------------------------------------

NameVirtualHost *:80

<VirtualHost *:80>

ServerName www.hoge.com

</VirtualHost>

<VirtualHost *:80>

ServerName www.moge.net

ErrorLog logs/virtual-error_log

CustomLog logs/virtual-access_log common

DocumentRoot /var/www/html/moge

</VirtualHost>

<VirtualHost *:80>

ServerName www.moge.net

ErrorLog logs/virtual-error_log

CustomLog logs/virtual-access_log common

DocumentRoot /var/www/html/moge

</VirtualHost>

-----------------------------------------------------

ssl.conf

-----------------------------------------------------

Listen 443

Listen 444

NameVirtualHost aaa.bbb.ccc.ddd:443

NameVirtualHost aaa.bbb.ccc.ddd:444

<VirtualHost aaa.bbb.ccc.ddd:443>

ServerName hoge.com

ServerAlias www.hoge.com

DocumentRoot /var/www/html

ErrorLog logs/ssl_error_log

TransferLog logs/ssl_access_log

LogLevel warn

SSLEngine on

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

SSLCertificateFile /etc/httpd/conf/ssl.crt/www.hoge.com.crt

SSLCertificateKeyFile /etc/httpd/conf/ssl.key/www.hoge.com.key

<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

CustomLog logs/ssl_request_log \

"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>


<VirtualHost aaa.bbb.ccc.ddd:444>

ServerAlias www.moge.net

ServerName moge.net

DocumentRoot /var/www/html/www.moge.net

ErrorLog logs/ssl_error_log

TransferLog logs/ssl_access_log

LogLevel warn

SSLEngine on

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

SSLCertificateFile /etc/httpd/conf/ssl.crt/www.moge.net.crt

SSLCertificateKeyFile /etc/httpd/conf/ssl.key/www.moge.net.key

<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

CustomLog logs/ssl_request_log \

"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

-----------------------------------------------------

2007/03/30 13:31:12

その他の回答(1件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/03/29 23:17:12ここでベストアンサー

ポイント50pt

まず、443 以外での HTTPS の使用は推奨しかねる為、正攻法は2つのドメインに別々のIPを割り当てる方法です。

バーチャルホストによる複数サイトの同時運用(2/2)

出来るだけこの形の方が好ましいですが、状況によっては難しいかもしれません。


設定方法はまず、通常の形で SSL を使用できるところまでは設定してください。(モジュールのインストール・有効化など)

その上で、IPアドレスを aaa.bbb.ccc.ddd とすると

Listen 443
Listen 444
NameVirtualHost aaa.bbb.ccc.ddd:443
NameVirtualHost aaa.bbb.ccc.ddd:444

<VirtualHost aaa.bbb.ccc.ddd:443>
SSLEngine on
ServerName www.hoge.com
DocumentRoot /www/httpd/www.hoge.com
ServerAdmin webmaster@www.hoge.com
ErrorLog logs/error_log
TransferLog logs/access_log
SSLCertificateFile ssl.crt/www.hoge.com.crt
SSLCertificateKeyFile ssl.key/www.hoge.com.key
</VirtualHost>

<VirtualHost aaa.bbb.ccc.ddd:444>
SSLEngine on
ServerName www.moge.net
DocumentRoot /www/httpd/www.moge.net
ServerAdmin webmaster@www.moge.net
ErrorLog logs/error_log
TransferLog logs/access_log
SSLCertificateFile ssl.crt/www.moge.com.crt
SSLCertificateKeyFile ssl.key/www.moge.com.key
</VirtualHost>

という設定を出来るだけ後ろに追加することで、VirtualHost が使用できます。

また、各ファイルのパス等については実際に使用するものに読み替えてください。

id:wakutan

下記のように設定を行いましたが、

sslで保護されたページにアクセスすると

https://www.hoge.com

https://www.moge.net:444

の両方で、どこを見にいけばいいのか分からないという感じで、

少し時間が経ったあと「ページを表示できません。」

という画面になります。

ssl.confの元の設定では、

<VirtualHost _default_:443>

</VirtualHost>

のようになっていました。

この部分を教えて頂いたように変更してテストをして見ました。


設定をかえた この部分を

<VirtualHost aaa.bbb.ccc.ddd:443>→<VirtualHost _default_:443>

元に戻すと、https://www.hoge.com のSSLにはアクセスできました。

どの部分がおかしいのでしょうか?

どうぞよろしくお願いいたします。



virtualhost.conf

-----------------------------------------------------

NameVirtualHost *:80

<VirtualHost *:80>

ServerName www.hoge.com

</VirtualHost>

<VirtualHost *:80>

ServerName www.moge.net

ErrorLog logs/virtual-error_log

CustomLog logs/virtual-access_log common

DocumentRoot /var/www/html/moge

</VirtualHost>

<VirtualHost *:80>

ServerName www.moge.net

ErrorLog logs/virtual-error_log

CustomLog logs/virtual-access_log common

DocumentRoot /var/www/html/moge

</VirtualHost>

-----------------------------------------------------

ssl.conf

-----------------------------------------------------

Listen 443

Listen 444

NameVirtualHost aaa.bbb.ccc.ddd:443

NameVirtualHost aaa.bbb.ccc.ddd:444

<VirtualHost aaa.bbb.ccc.ddd:443>

ServerName hoge.com

ServerAlias www.hoge.com

DocumentRoot /var/www/html

ErrorLog logs/ssl_error_log

TransferLog logs/ssl_access_log

LogLevel warn

SSLEngine on

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

SSLCertificateFile /etc/httpd/conf/ssl.crt/www.hoge.com.crt

SSLCertificateKeyFile /etc/httpd/conf/ssl.key/www.hoge.com.key

<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

CustomLog logs/ssl_request_log \

"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>


<VirtualHost aaa.bbb.ccc.ddd:444>

ServerAlias www.moge.net

ServerName moge.net

DocumentRoot /var/www/html/www.moge.net

ErrorLog logs/ssl_error_log

TransferLog logs/ssl_access_log

LogLevel warn

SSLEngine on

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

SSLCertificateFile /etc/httpd/conf/ssl.crt/www.moge.net.crt

SSLCertificateKeyFile /etc/httpd/conf/ssl.key/www.moge.net.key

<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

CustomLog logs/ssl_request_log \

"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

-----------------------------------------------------

2007/03/30 13:31:12
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402007/03/30 13:38:51

ポイント35pt

aaa.bbb.ccc.ddd の部分はサーバーのIPアドレスに正しく書き換えていますか?

また、サーバーのエラーログ、erro_log か ssl_request_log に情報が出力されていませんか?

http://q.hatena.ne.jp/answer

id:wakutan

返答が遅れまして、申し訳ございません。

ローカル環境でテストを行ったところうまく行きました。

ポートスキャンのテストを行ったところ

444のポートが解放できないことが問題だと

分かりました。

http://www.cman.jp/network/support/port.html

ルータでいくら設定を行っても、

ポートスキャンのテストで、アクセスできない

メッセージが表示されます。

ルータを変えて、テストを行いましたが、同様の症状がでたため、

プロバイダー(BBIQ)に問い合わせを行いましたが、

ポートの制限は行っていないとのこと。

ローカル側からうまくいくことを考えると

サーバで拒否しているわけでもなさそうですし、

途方にくれております。

2007/04/02 21:58:10
  • id:wakutan
    サーバのファイヤーウォールが原因で
    ポートが開けない状態でした。
    ファイヤーウォールの設定を変更すると
    うまくいきました。
    ありがとうございました。
  • id:takuya_1st
    SNIオススメです

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません