はじめに
XserverVPSのRedmineイメージをLet’s EncryptでSSL化してみたので、その手順をまとめます。
今回はXserverVPSのRedmineイメージを利用していますが、他のRedmine環境でも同様の手順でSSL化できると思います。
環境
- XserverVPS [メモリ 2GB、vCPU 3コア、 NVMe 50GB]
- Redmine 5.0.5-64bit [ubuntu-22.04]
事前準備
certbot関係のライブラリをインストール
$ sudo apt install certbot python3-certbot-apache
Apacheのオプションを有効化
# SSL Engine
$ sudo a2enmod ssl
# RewriteEngine
$ sudo a2enmod rewrite
# apache2を再起動
$ sudo service apache2 restart
certbotを使ってLet’s EncryptのSSL証明書を取得する
ApacheのDocumentRootは/etc/apache2/sites-enabled/000-default.conf
で確認できます。
私の環境では、/var/www/html/redmine/public
になっていました。
$ certbot certonly --webroot -w [ApacheのDocumentRoot] -d [ドメイン名] --email [管理者メールアドレス] -n --agree-tos --debug
取得したSSL証明書をApacheに適用する
まずは000-default.conf
を開きます。
$ sudo vim /etc/apache2/sites-enabled/000-default.conf
/etc/letsencrypt/live/ドメイン名/
に証明書が保存されているので、それをApacheの設定ファイルに記述します。
<VirtualHost *:80>
ServerName ドメイン名
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/redmine/public
# 以下を追加
RewriteEngine on
RewriteRule (.*)?$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# ここまで
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
# 以下を追加
<VirtualHost *:443>
ServerName ドメイン名
DocumentRoot /var/www/html/redmine/public
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/ドメイン名/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ドメイン名/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/ドメイン名/chain.pem
</VirtualHost>
# ここまで
設定ファイルをリロードします。
$ sudo systemctl reload apache2
SSL証明書の自動更新設定
SSL証明書の自動更新設定を行います。
なお、SSL証明書が更新はSSLShopperで確認できます。
# root権限でcron設定
$ sudo crontab -e
# 以下を追加(毎日00:00に実行。ついでにログも出力。)
# 0 0 * * * certbot renew >> /tmp/cron.log 2>&1
参考
EC2(Ubuntu)上のRedmineコンテナをSSLで公開するまで
let’s encryptを使ってSSLに対応しようにもcertbot-autoできない場合
Let’s Encryptの証明書の自動更新の手順(Apacheに適用した例で解説)