Linux の使い方: Apache で SSL 暗号化通信の利用準備を整える (CentOS 5.4)
SSL 暗号化通信
CentOS 5.4 では Web サーバーとして "Apache" が用意されています。
この Apache に SSL サイトを登録しようとしたところ、モジュールが見つからないとのことでエラーとなってしまいました。どうやら SSL 暗号化通信を行う際に使用するモジュール mod_ssl が既定ではインストールされていなかった感じです。
そこで、今回は Apache に mod_ssl を組み込んで、ひとまず動作テストを行うための SSL 設定ファイルを用意してみることにしました。
まず、次のようにして mod_ssl をインストールします。
yum install mod_ssl
mod_ssl のインストールが完了したら、SSL 設定ファイルを用意します。
設定ファイルを次のような感じの内容で、"/etc/httpd/conf.d/ssl.conf" ファイルに用意しておきます。なお、下記内容は当方の環境で見つかった既定の設定内容のコメント部分を除いたものです。
LoadModule ssl_module modules/mod_ssl.so
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-x509-ca-cert .cer
AddType application/x-pkcs7-crl .crl
SSLPassPhraseDialog builtin
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
<VirtualHost _default_:443>
</VirtualHost>DocumentRoot "/var/www/html"
ServerName www.example.com:443
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ここまで出来たら Apache の設定が正しいかどうか、次の命令を使って確認してみます。
service httpd configtest
このような形で設定を行えば、SSL による暗号化通信が可能になると思います。
SSL で利用する電子証明書の作成などについては、またいつか別の機会で触れようと思います。