SSLによるSecureWWWサーバの構築(SuSE編)
ここでは、SuSE 標準の Apache を SSL 対応にします。 基本的には、RedHat と変わりありませんが、一箇所だけ分かりにくいところがあります。
なお、Apache のインストールは、
こちらを参考に済ませて置いてください。
■SSL の有効化
SuSE の Apache では SSL がデフォルトで動作するかと思いましたが、conf ファイルの設定だけでは駄目で
YaST から起動スクリプトの設定をする必要がありました。おやじは、かなりハマリまりました。下記のような
warning が Apache の error_log に出ていたので、SSLSessionCache 関係がおかしいと思いいろいろ調べましたが駄目でした。
[warn] Init: Session Cache is not configured [hint: SSLSessionCache]
いろいろ調べた結果、Apache の起動オプションが指定されていないということが判明し、それを有効にして解決しました。昔を思いだしたらRedHat
の時もはまって、自分でスクリプトに追加してました。SuSE の場合、設定は以下のように
YaST で行います。
- YaST コントロールセンタを起動し、「システム」の「/etc/sysconfig エディター」を起動する。
- 「設定のオプション」 で 「Network」 -> 「WWW」 -> 「Apache2」 と開き、「APACHE_SERVER_FLAGS」を選択して「設定」欄に「 -D SSL」と入力し
「完了」 ボタンを押す。
- 変更された変数が表示されるので、確認し 「了解」 ボタンを押す。
■SSL 関係の設定
SuSE の Apache では、 SSL 関係の設定は実際はどこでもいいでしょうが、一応
/etc/apache2/vhosts.d ディレクトリ配下に置くことになっていますので、これに従いました。このディレクトリ内に
vhost_ssl.template というファイルがありますので、これをベースに設定していきます。なお、SSL
関係ではその他にlisten.conf と ssl_global.conf が関係しますが、isten.conf
にはデフォルトの 443 番ポートを SSL で liste するよう設定されている他、
ssl_global.conf も変更するような項目はないので、特に変更は不要です。
◆ vhost_ssl.conf の設定
前述の vhost_ssl.template から vhost_ssl.conf を作成し、これを編集していきます。名前は何でも構いませんが、「.conf」という拡張子のファイルのみが
Include されるようになっているので、拡張子は「.conf」にしてください。
# cp /etc/apache2/vhosts.d/vhost_ssl.template /etc/apache2/vhosts.d/vhost_ssl.conf
|
なお、その他の設定は、SSLが無いときと全く同一ですので、
こちらを参考にしてください。
おやじが、設定を変更した項目は以下のとおりです。ここでは、単純に通常のポート
(80番) でサービスしているドキュメントを、そのまま SSL でアクセスできるイメージで設定していきます。おやじは、実際にはバーチャルホストを動作させているので、若干設定が違いますが、基本的には大きな差異はありません。(青字は削除、赤字は追加、緑字は変更したものです。)
- バーチャルサーバの設定
サーバ名と管理者のメールアドレスをデフォルトサーバと同じように変更するとともに、アクセスログをデフォルトサーバで作成した
costom_log.conf を使用するように変更した。なお、一番最後に ssl_request_log
があるので、不要ならコメントアウトする。
# General setup for the virtual host
DocumentRoot "/srv/www/htdocs"
#ServerName www.example.com:443
#ServerAdmin webmaster@example.com
ErrorLog /var/log/apache2/error_log
TransferLog /var/log/apache2/access_log
↓追加(コメントアウト)
# General setup for the virtual host
DocumentRoot "/srv/www/htdocs"
ServerName www.aconus.com:443
ServerAdmin webmaster@mail.aconus.com
ErrorLog /var/log/apache2/error_log
#TransferLog /var/log/apache2/access_log
Include /etc/apache2/my_conf/custom_log.conf
- 証明書の指定
こちらで作成するサーバ用デジタル証明書を指定します。
SSLCertificateFile /etc/apache2/ssl.crt/server.crt
#SSLCertificateFile /etc/apache2/ssl.crt/server-dsa.crt
↓変更
#SSLCertificateFile /etc/apache2/ssl.crt/server.crt
#SSLCertificateFile /etc/apache2/ssl.crt/server-dsa.crt
SSLCertificateFile /usr/local/certs/server.crt
- 秘密鍵の指定(同上)
SSLCertificateKeyFile /etc/apache2/ssl.key/server.key
#SSLCertificateKeyFile /etc/apache2/ssl.key/server-dsa.key
↓変更
#SSLCertificateKeyFile /etc/apache2/ssl.key/server.key
#SSLCertificateKeyFile /etc/apache2/ssl.key/server-dsa.key
SSLCertificateKeyFile /usr/local/certs/server.key
以上で、https://www.aconus.com/~oyaji/ と SSL でのアクセスが可能となります。アクセス時に
SSL の alert が出るのは、他の自己認証サイトをアクセスした時と同じです。
クライアント側のこの警告に対する対策については、Internet Exploler と Netscape
Navigator で異なります。
こちらを参照願います。
■クライアント認証関係の設定
クライアント認証は、サーバ全体やバーチャルサーバ、ディレクトリ単位で行うことができますが、ここではバーチャルサーバで行うことを前提とし、上記の
vhost_ssl.conf に追加設定していきます。
◆ vhost_ssl.conf の設定
上記設定に、下記を追加設定します。特定ディレクトリだけを対象にするなら、下記の2項目の
SSLVerifyClient/SSLVerifyDepth を対象とするディレクトリディレクティブ内に記述すればよい。
- CA証明書へのパスとファイル名の設定を行う
#SSLCACertificatePath /etc/apache2/ssl.crt
#SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle-client.crt
↓追加
#SSLCACertificatePath /etc/apache2/ssl.crt
#SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle-client.crt
SSLCACertificatePath /usr/local/certs/demoCA
SSLCACertificateFile /usr/local/certs/demoCA/cacert.pem
- クライント認証の指定とルート認証局までの階層設定
CA によって直接署名された証明書だけを信用するので、SSLVerifyDepth は 1
に設定する。
#SSLVerifyClient require
#SSLVerifyDepth 10
↓追加
#SSLVerifyClient require
#SSLVerifyDepth 10
SSLVerifyClient require
SSLVerifyDepth 1
- 証明書失効リストの指定
#SSLCARevocationPath /etc/apache2/ssl.crl
#SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl
↓追加
#SSLCARevocationPath /etc/apache2/ssl.crl
#SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl
SSLCARevocationFile /usr/local/certs/demoCA/crl/crl.pem
Top Pageへ