2013年08月10日
このエントリーをはてなブックマークに追加
今までSSLを利用するには、1サイトごとにIPアドレスが必要でした。 http のように name base のバーチャルホストはできなかったのです。
最近になって、いくつかの厳しい条件を満たせばそれが可能になりました。
ということで先日より行っているリバースプロキシーの設定と共に以下の通り行います。


ここで、コンテンツサーバーは 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 を再起動して完了です。

※最初やったときは、 の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 設定


stock_value at 18:16│Comments(0)TrackBack(0)技術:2013年 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔