ブログ

Let's Encryptを使ってみました

カトウ
こんにちは。
バックエンド部分を担当している加藤です。

先日のリニューアルに伴い、サーバも新しくなり、無事SSL化できました。
導入テストも兼ねて今回は、無料でSSL証明書が発行できるLet's Encryptを使ってみました。
自動更新もできるため、忘れた頃にやってくる更新作業もなくなります。

導入の手順は比較的簡単でしたが、
エラーが発生したときの対処法がなかなか見つからず、
類似の症状から推測したりと、少し手間取りました。

今後SSL化が必須になる時代が来るかもしれませんし、試せて良かったなと思います。
無料ですしね。


環境

・AWS Amazon Linux
・Apache 2.4.25

手順

Let's Encryptのインストール

# curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
# chmod 700 /usr/bin/certbot-auto

証明書の発行

# /usr/bin/certbot-auto certonly --webroot -w ドキュメントルート --debug -d ドメイン名
※ドキュメントルートを指定することで、サービスを停止させずに発行できます。
 但し、Aレコードがこのサーバを向いていないといけません。
※-d ドメイン名の部分は複数指定できます。
 複数ある場合は、はじめに指定したドメインがコモンネームになります。
※今回の環境ではここで問題がおきました。
 『~from certbot.main import main』と表示され、
 『~』にあるディレクトリを削除することで、うまくいきましたが、
 環境によってディレクトリ名が違うみたいなので、ここは戸惑いました。

証明書の指定

問題なく発行できれば以下の場所に証明書があるので、あとはssl.confなどで指定するだけです。
/etc/letsencrypt/live/コモンネーム/fullchain.pem
/etc/letsencrypt/live/コモンネーム/privkey.pem

自動化

まずは更新するコマンドが実行できるかチェックしてみて下さい。
# /usr/bin/certbot-auto renew --post-hook "sudo service httpd restart"

以下のように表示されれば大丈夫です。
/etc/letsencrypt/live/コモンネーム/fullchain.pem (skipped)

あとは更新するコマンドをcronに設定して完了です。
01 01 * * 1 root /usr/bin/certbot-auto renew --post-hook "service httpd restart"
この場合は、毎週月曜日の午前1時1分に更新するコマンドが実行されます。
設定後は2ヶ月後に更新されているかチェックして下さい。