Apache2 での SSL設定

Debian etch

  • tasksel のウェブサーバーで入った apache2
  • sslモジュール は既に入っているが有効化されていない
    • a2enmod ssl をすれば、(そして適宜 force-reload)、ssl.load と ssl.conf が有効化されるが、それだけでは SSL の有効化に十分ではない。

サーバ鍵の設定やバーチャルホストの設定があるんだけど、どこから持ってきて何処に置こうか迷う。etchApacheのバーションが 2.2 になってるし、Debianパッケージは設定ファイルの分割の仕方や場所にちょっと癖があるので悩む。

  1. サーバ証明書とサーバ鍵については省略。どっかからとってくる。
    1. ベリサインの手順書「Verisign, Inc. Is A Leader In Domain Names And Internet Security - Verisign」参考
  • /etc/ssl
    • 証明書 /etc/ssl/certs/、鍵 /etc/ssl/private/ に置いてみた
  • sslの設定ファイルは、/etc/apache2/sites-available/ssl ということにする
    • 原型は下記より
      • /usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-ssl.conf.gz
      • /usr/share/doc/apache2.2-common/examples/apache2/original/extra/httpd-ssl.conf.gz
      • 開いて diff で比べてみたら一緒だったんで安心する
    • 前段、VirtualHost関係の記述が始まるより前の部分は、mods-available/ssl.conf にまとめられてる物と内容的には同等だったので全削除。
    • VirtualHost定義
      • VirtualHost の名前と ServerName 重要:443ポートで
      • ErrorLog, TransferLog は名前を変えとく。ログファイル名接頭辞 ssl_ をつけとく。いっしょでも良かったかな
    • SSLCertificateFile, SSLCertificateKeyFile, SSLCACertificateFile 上記 /etc/ssl/以下ファイル名
    • DocumentRoot "/var/www" と
      • 取り敢えず、site-available/defaults のその辺に合わせておく。(コピーしてくる、細かい調整は必要、ログの設定とか)
      • それ以外の ssl.conf にあったオプションとかは儘。

そしてポート設定

  • etc/apache2/ports.conf
    • Listen 443
    • 追記
      • 基本的に Listen する IP (想定するNICのIP) も書いておいた方がいいでしょう

site-available/defaults の NameVirtualHost *:80 と にはポート番号を明記しておく。今更 * もまずいよね、サーバ名ちゃんと書こう

  • a2enmod ssl
  • a2ensite ssl
  • /etc/init.d/apache2 force-reload

SSLProxyEngine

前記 Apache2 での Proxy設定 - Rubyとか Illustratorとか SFとか折紙とか にあった、Proxy設定なんだけど、Proxy転送の際 SSL を使うなら「SSLProxyEngine on」も必要。

それを何処に書くかはちょっと悩む。

site-available/proxy に「」条件付きで書くか、今書いた site-available/ssl の中でしょう。其々によって有効範囲が変わってくるのでそれに合わせて。