さくらのVPSのRedmineをLet's EncryptでSSL化した

さくらのVPSにインストールしたRedmineですが、一応双方向の通信をしますので、SSL化してみました。

環境

OSはさくらのVPSの標準インストールのCentOS7です。証明書はLet's Encryptのものを使わせていただきます。

RedmineはBitnamiのものです。ウェブサーバーもBitnami Redmineに付属のものですので、一般的なhttpdでの設定とは設定方法が若干異なります。

Redmineは 別の投稿のようにインストールしたもの で、インストール先が/opt/redmineになっています。適宜読み替えてください。

目次

  1. 証明書のインストール
  2. 証明書を自動更新する

証明書のインストール

Bitnamiにも自動インストールのスクリプトがあるのですが、それでは動かなかったので 半自動 にします。

半自動設定用のスクリプトがあるかどうかの確認をします。legoというファイルです。無ければ 公式のマニュアル に従ってダウンロードします。

$ sudo ls /opt/redmine/letsencrypt/
accounts  certificates  lego  scripts

BitnamiのHTTPサーバーを停止します。

$ sudo /opt/redmine/ctlscript.sh stop
Syntax OK
/opt/redmine/apache2/scripts/ctl.sh : httpd stopped
/opt/redmine/mysql/scripts/ctl.sh : mysql stopped

Let's Encryptの証明書を取得します。

$ sudo /opt/redmine/letsencrypt/lego --tls --email="test@example.com" --domains="test.com" --domains="www.test.com" --path="/opt/redmine/letsencrypt" run

証明書をダウンロードできたか確認します。

$ sudo ls /opt/redmine/letsencrypt/certificates/
test.com.crt         test.com.json
test.com.issuer.crt  test.com.key

古いファイルをバックアップして、ダウンロードした証明書にリンクを張ります。

$ sudo mv /opt/redmine/apache2/conf/server.crt /opt/redmine/apache2/conf/server.crt.old
$ sudo mv /opt/redmine/apache2/conf/server.key /opt/redmine/apache2/conf/server.key.old
$ sudo mv /opt/redmine/apache2/conf/server.csr /opt/redmine/apache2/conf/server.csr.old

$ sudo ln -sf /opt/redmine/letsencrypt/certificates/test.com.key /opt/redmine/apache2/conf/server.key
$ sudo ln -sf /opt/redmine/letsencrypt/certificates/test.com.crt /opt/redmine/apache2/conf/server.crt

$ sudo chown root:root /opt/redmine/apache2/conf/server*
$ sudo chmod 600 /opt/redmine/apache2/conf/server*

HTTPサーバーを再起動します。

$ sudo /opt/redmine/ctlscript.sh start
/opt/redmine/mysql/scripts/ctl.sh : mysql  started at port 3306
Syntax OK
/opt/redmine/apache2/scripts/ctl.sh : httpd started at port 80

HTTPSでアクセスすると、証明書が有効になっていると思います。

実行画面

証明書を自動更新する

記事を書いている時点では最初の証明書が有効な期間なので、これが正しく動くかどうかはまだわかりません。

まず、自動更新用のスクリプトを作成します。

$ sudo nano /opt/redmine/letsencrypt/scripts/renew-certificate.sh
#!/bin/sh

sudo /opt/redmine/ctlscript.sh stop apache
sudo /opt/redmine/letsencrypt/lego --tls --email="test@example.com" --domains="test.com" --domains="www.test.com" --path="/opt/redmine/letsencrypt" renew --days 90
sudo /opt/redmine/ctlscript.sh start apache

スクリプトに実行権限を付与します。

$ sudo chmod +x /opt/redmine/letsencrypt/scripts/renew-certificate.sh

スクリプトを定期実行するように設定します。

$ sudo crontab -e
0 0 1 * * /opt/redmine/letsencrypt/scripts/renew-certificate.sh 2> /dev/null

さあ、自動的に更新されるかな?

公開日

広告