Deprecated : The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
SSLによるSecureWWWサーバの構築(SuSE編)
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へ