さくらのVPSのRedmineをLet's EncryptでSSL化した
さくらのVPSにインストールしたRedmineですが、一応双方向の通信をしますので、SSL化してみました。
環境
OSはさくらのVPSの標準インストールのCentOS7です。証明書はLet's Encryptのものを使わせていただきます。
RedmineはBitnamiのものです。ウェブサーバーもBitnami Redmineに付属のものですので、一般的なhttpdでの設定とは設定方法が若干異なります。
Redmineは 別の投稿のようにインストールしたもの で、インストール先が/opt/redmineになっています。適宜読み替えてください。
目次
証明書のインストール
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
さあ、自動的に更新されるかな?
公開日
広告