投稿者:Nihito Kawahara

Tech

Let’s Encryptの更新処理の自動化を行う(nginx使用)

blog-details

コラビットでは一部のプロジェクトでstaging環境でSSLを使用するため Let's Encrypt を使用しています。

Let’s Encryptとは

Let’s Encrypt は、認証局(CA)として「SSL/TLSサーバ証明書」を無料で発行するとともに、証明書の発行・インストール・更新のプロセスを自動化することにより、TLS や HTTPS(TLSプロトコルによって提供されるセキュアな接続の上でのHTTP通信)を普及させることを目的としているプロジェクトです。2016年4月12日 に正式サービスが開始されました。

引用元: Let’s Encrypt 総合ポータル

つまりは、無料で使えるSSLです!なんてありがたいプロジェクトなんでしょう。

無料で使えますが、いくつか不便な点もあります。

  • rate 使用制限がある(ドメインは週に20登録できて、ドメインごとに100の証明書。つまり週に最大2000の制限)
  • 有効期限が90日間(60日ごとに更新することがすすめられている)

Rate Limits https://letsencrypt.org/docs/rate-limits/

しかし商用でも無料で使えるのは強いです。利用しない手はないでしょう。

インストール方法や使い方

公式サイトを見るのが早いです!英語ですがわかりやすいです。

記事の内容としては、更新するところなのでこちらはリンクだけ貼っておきます。

https://www.linode.com/docs/security/ssl/install-lets-encrypt-to-create-ssl-certificates/

証明書の更新方法

まず、下記のコマンドで証明書の更新ができます。

cd letsencrypt/
./certbot-auto renew

更新処理を記述するシェルスクリプトを書きます。 (一旦homeディレクトリに移動してますがどこでも構いません。)

cd ~
vim renew.sh

中身は下記のように記述してください。

nginxのrestartはstartとstopを分けて書いてください。そうしないと失敗します。

#!/bin/sh
 
# nginxをstop(stopしないと更新に失敗する)
sudo service nginx stop
 
# 証明書を更新
sudo ./certbot-auto renew
 
# 再スタート
sudo service nginx start

次にcronの設定を行います。

crontab -e

内容は下記の通りです。pathは適宜に変更してください。

# 毎月1日の朝4時に実行する
00 4 1 * * /bin/sh /home/someone/letoencrypt/renew.sh

以上で設定は完了です。