はじめに
昨今ウェブサイトのHTTPS化が必須になってきたので、Apacheサーバにmod_sslをインストールする手順をまとめました。
以下の方針で設定しています。
- TLSv1.1以上を強制
- 割と強い暗号スイートのみを使用
更新履歴
2018.6.19 セキュリティ基準を強化
前回までの記事はこちら
Apacheのインストール手順などは以下の関連記事をお読みください。
- GCPに共通鍵を追加する手順まとめ
- GCP Compute Engineを使ってLinuxサーバを始める
- Cent OS 7開発用サーバを初期設定する
- Cent OS 7上でApache/PHP開発環境を構築する
- Cent OS 7上でApache/Tomcat開発環境を構築する
インストール手順
作業方針
前回までと同様にyumを使ってインストールします。
mod_sslインストール
以下のコマンドでApache向けmod_sslモジュールをインストールします。
yum -y install mod_ssl
mod_ssl設定
SSL設定は以下のように行います。
強度が弱すぎるプロトコルや暗号方式のみブロックしています。
/etc/httpd/conf.d/ssl.conf
Listen 443 https
Mutex default ssl-cache
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:!DSS
SSLCompression off
SSLCryptoDevice builtin
SSLHonorCipherOrder on
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
SSLSessionCache shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout 300
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache shmcb:/var/run/ocsp(128000)
SSLStrictSNIVHostCheck off
SSLUseStapling on
<VirtualHost *:443>
ServerName ドメイン名
ServerAdmin 管理者のメールアドレス
DocumentRoot ドキュメントルートパス
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
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>