SSL証明書のapacheの適用方法
モジュールの確認
cat /etc/apache2/mods-available/rewrite.load
cat /etc/apache2/mods-available/ssl.load
cat /etc/apache2/mods-available/headers.load
モジュール有効化
以下、必須となるモジュールの確認と設定です。
sudo a2enmod rewrite
sudo a2enmod ssl
sudo a2enmod headers
モジュール反映
sudo systemctl restart apache2
Apache設定ファイルの作成
ここでは、Redmineサイトの常時SSL化を元に行います。どのWebアプリであっても、Apacheであれば、この手順は一緒です。
- http接続のみの設定ファイル無効化とコンフィグファイル退避
sudo mkdir -p /etc/apache2/old
cd /etc/apache2/sites-available && pwd
sudo a2dissite redmine.conf
sudo systemctl restart apache2.service
http接続のみの設定ファイルを無効化し、設定を反映します
sudo mv redmine.conf ../old/redmine.conf.$(date +%Y%m%d)
上記、http接続のみの設定ファイルをバックアップ用ディレクトリに移動します
- 常時SSL化の設定ファイル作成
- 自分の環境に合わせます。(【】でくくっている部分の直下にコメントで詳細を書いています
- cat ~ __EOF__の部分をコピーして別のエディタに貼り付け → 【】内を編集(このとき、【】も取り除きます) → コマンド実行という流れがやりやすいです。
cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/redmine.conf
<VirtualHost *:80>
servername 【hoge.example.com】
# ドメイン名を指定します
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# HTTPアクセスを強制的にHTTPSにリダイレクトします
</VirtualHost>
<VirtualHost *:443>
ServerName 【hoge.example.com】
# ドメイン名を指定します
DocumentRoot 【/home/www-data/redmine/public】
# 自身の環境に合わせます
<Directory 【/home/www-data/redmine/public】>
# 自身の環境に合わせます
Options -MultiViews
AllowOverride All
Require all granted
</Directory>
#SSL設定
SSLEngine on
Protocols h2 http/1.1
# SSLを有効化します
SSLProtocol -ALL +TLSv1.2 +TLSv1.3
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
# SSL Stapling 設定
# 2025年5月より、Let's EncryptはOCSP Staplingを無効化しました。
# そのため、筆者環境では以下のように Stapling を明示的に無効化しています。
SSLUseStapling Off
# ※ SSL Stapling が有効な証明書(たとえば GlobalSign や Sectigo 等)を使用する場合は、
# 以下をコメントインし、上の行をコメントアウトしてください。
#SSLUseStapling On
#SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
# SSL証明書を指定します
SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】
# 秘密鍵を指定します
# SSLCACertificateFile 【/etc/certs/hoge.example.com.CA.crt】
# 中間証明書が発行元から別ファイルで提供されている場合は、この直上をコメントアウトして中間証明書を指定します
#セキュリティヘッダー付与
Header always set Strict-Transport-Security "max-age=63072000"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
</VirtualHost>
__EOF__
設定を反映します
sudo a2ensite redmine
再設定したredmineの設定を有効化します
sudo apache2ctl configtest
Syntax OKを確認します。エラーがある場合はモジュールのインストールミスやファイルの指定ミスが多いです。
sudo systemctl restart apache2.service
設定反映後、ブラウザで指定したredmineのドメインにアクセスします。
- https接続になっている
- 証明書が設定されている
- 設定した証明書が有効期限である
を確認します。
コメントを残す