2013年08月10日
Tweet
今までSSLを利用するには、1サイトごとにIPアドレスが必要でした。 http のように name base のバーチャルホストはできなかったのです。
最近になって、いくつかの厳しい条件を満たせばそれが可能になりました。
ということで先日より行っているリバースプロキシーの設定と共に以下の通り行います。
ここで、コンテンツサーバーは https://example.com と https://example.jp などのように別々のドメインを管理しています。
今まではコンテンツサーバーに対して固定IPを割り当て、直接アクセスを行っていました。これを環境は変えずに集約したいのです。
http のみであれば、リバースプロキシーの設定を使って、これを実現するのは簡単です。
しかし https の場合はやっかいなのです。
ということで、まずは SNI の設定です。
conf ファイルを作成するか、 httpd.conf に追加します
apache を再起動して完了です。
※最初やったときは、 の1行を忘れたせいで以下のようなエラーが出てはまりました。
[Thu Aug XX 18:14:26 2013] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
これがでると、VirtualHost の最初の設定しか有効になりません。
参考
Apache 2.2.16 における SSL の SNI 設定
最近になって、いくつかの厳しい条件を満たせばそれが可能になりました。
ということで先日より行っているリバースプロキシーの設定と共に以下の通り行います。
ここで、コンテンツサーバーは https://example.com と https://example.jp などのように別々のドメインを管理しています。
今まではコンテンツサーバーに対して固定IPを割り当て、直接アクセスを行っていました。これを環境は変えずに集約したいのです。
http のみであれば、リバースプロキシーの設定を使って、これを実現するのは簡単です。
しかし https の場合はやっかいなのです。
ということで、まずは SNI の設定です。
conf ファイルを作成するか、 httpd.conf に追加します
NameVirtualHost *:443
<VirtualHost *:443>
ServerName example.com:443
ProxyPass/ http://[コンテンツサーバーIP]/ ※プロキシーサーバーとコンテンツ間は http アクセスになります
ProxyPassReverse / http://[コンテンツサーバーIP]/
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLCertificateFile [証明書ファイルへのパス]
SSLCertificateKeyFile [証明書ファイルへのパス]
</VirtualHost>
<VirtualHost *:443>
ServerName example.jp:443
ProxyPass/ http://[コンテンツサーバーIP]/ ※プロキシーサーバーとコンテンツ間は http アクセスになります
ProxyPassReverse / http://[コンテンツサーバーIP]/
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLCertificateFile [証明書ファイルへのパス]
SSLCertificateKeyFile [証明書ファイルへのパス]
</VirtualHost>
apache を再起動して完了です。
※最初やったときは、
[Thu Aug XX 18:14:26 2013] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
これがでると、VirtualHost の最初の設定しか有効になりません。
参考
Apache 2.2.16 における SSL の SNI 設定