skip to content
barorin&?

XserverVPSのRedmineイメージをLet's EncryptでSSL化してみた

/ 3 min read

はじめに

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に適用した例で解説)