宅内オンプレだけではなくAWSでの運用も始めたredmine。こちらではドメインを取得するためmkcertではくLet's Encryptで証明書を取得します。
環境
- OS:Ubuntu 20.04
- Apache 2.4
手順
全て管理者権限で実施しました。
Let's Encryptのcertbotをインストールします。
aptitude install certbot python3-certbot-apache
botの指示に従って証明書を取得します。
certbot --apache
ウィザードに従って設定するだけの非常に簡単な作業。その後、以下のファイルが作成されます。
/etc/apache2/sites-available/redmine-le-ssl.conf
# 既に作成しているバーチャルファイルの内容をコピーしてSSLの設定が追加されていました
SSL接続強化準備
以下のモジュールを有効にして再起動します。
a2enmod headers
a2enmod rewrite
ファイル編集
vi /etc/apache2/sites-available/redmine-le-ssl.conf
ファイルの内容
<VirtualHost _default_:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# http通信を強制的にhttpsにリダイレクト
</VirtualHost>
<VirtualHost _default_:443>
servername servername
CustomLog /var/log/redmine/access.log combined
ErrorLog /var/log/redmine/error.log
# アクセスログ格納ディレクトリ
Alias /redmine /var/lib/redmine/public
<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
Require all granted
</Location>
# redmineの設定
SSLEngine on
SSLProtocol All -SSLv2 -SSLv3 -TLSv1
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder On
SSLOptions +StrictRequire
Header set Strict-Transport-Security: "max-age=31536000; includeSubDomains; preload"
# 弱いSSLを無効化し、HSTSを有効化しています
SSLCertificateFile /etc/letsencrypt/live/serverdomain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/serverdomain/privkey.pem
# let's encryptの設定通りです
#Include /etc/letsencrypt/options-ssl-apache.conf
# バーチャルファイル上で用いる暗号化強度を明示しているのでlet's encryptの設定はコメントアウトしています
RewriteEngine On
RewriteCond %{HTTP_HOST} ^server\.domain
RewriteRule ^/$ https://server.domain/redmine/ [R]
# https://server.domainをhttps://server.domain/redmine にリダイレクトします
</VirtualHost>
設定を反映します。
cd /etc/apache2/sites-enable
unlink redmine.conf
# 既存のconfファイルを無効化
apache2ctl configtest
# syntax OKを確認
systemctl restart apache2
この設定後、SSL強度チェックで
A+を獲得しました。