Apache
mod_ssl

Apache 2.4にmod_sslを設定する

はじめに

昨今ウェブサイトのHTTPS化が必須になってきたので、Apacheサーバにmod_sslをインストールする手順をまとめました。
Apacheのインストール手順などは以下の関連記事をお読みください。

インストール手順

作業方針

前回までと同様にyumを使ってインストールします。

mod_sslインストール

以下のコマンドでApache向けmod_sslモジュールをインストールします。

yum -y install mod_ssl

mod_ssl設定

SSL設定は以下のように行います。
強度が弱すぎるプロトコルや暗号方式のみブロックしています。

/etc/httpd/conf.d/ssl.conf
Listen 443 https
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
SSLSessionCache shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
Mutex default ssl-cache

<VirtualHost *:443>
    ServerName ドメイン名
    ServerAdmin 管理者のメールアドレス
    DocumentRoot ドキュメントルートパス
    ErrorLog logs/ssl_error_log
    TransferLog logs/ssl_access_log
    LogLevel warn
    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3
    SSLStrictSNIVHostCheck off
    SSLCompression off
    SSLHonorCipherOrder On
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-MD5:-EXP:-IDEA:-eNULL:-SEED
    SSLCertificateKeyFile 秘密鍵ファイル(KEY)のパス
    SSLCertificateFile サーバ証明書ファイル(CRT)のパス
    SSLCertificateChainFile 中間証明書ファイルのパス(※中間証明書が不要な場合は行削除)
    BrowserMatch "MSIE [2-5]" 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"
</VirtualHost>

HTTP→HTTPS転送設定

以下の設定で、mod_rewriteモジュールを使って全てのHTTPアクセスをHTTPSに転送します。
(※httpdパッケージに同梱されており、yumで追加インストールは必要ありません)
必要に応じて設定してください。

/etc/httpd/conf.d/rewrite.conf
<IfModule rewrite_module>
    RewriteEngine On
    LogLevel alert rewrite:trace3
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>