技術ブログ

Let’s Encryptの使い方〜SSL証明書の取得から更新の自動化まで〜

2017年7月7日

Lets-encrypt

CentOS7 で Let's Encrypt を使って無料の SSL 証明書を取得したので実行したコマンドなどをメモ。3ヶ月で有効期限が切れるので、更新を自動化する方法も紹介します。

目次

  1. Certbot クライアントをインストール
  2. SSL 証明書を取得する
  3. SSL 証明書の更新を自動化する

Certbot クライアントをインストール

Certbot クライアントのインストール - Let's Encrypt 総合ポータル を参考に Cerbot クライアントをインストールします。Centos7 の場合は以下のコマンドでインストールできます。

$ sudo yum install epel-release
$ sudo yum install certbot

SSL 証明書を取得する

SSL/TLS サーバ証明書の取得 を参考に証明書を取得します。
ファイアーウォールで 80 と 443 ポートを開けて、Apache や Nginx などの Web サーバを停止してから以下コマンドを実行。初回実行時はメールアドレスの入力と利用規約への同意を求められるので入力します。

$ certbot certonly --standalone -d www.example.com

複数の FQDN で使える証明書を取得したい場合は以下のようなコマンドで。

$ certbot certonly --standalone -d www.example.com -d www2.example.com

マニュアルによると、Web サーバが動いている状態でも以下のコマンドで取得できるようですが、WordPress が動いている私の環境では動作せず。

$ certbot certonly --webroot -w /var/www/www.example.com -d www.example.com

コマンドが正常終了すると、/etc/letsencrypt/live 以下に最新版の証明書へのシンボリックリンクが作成されるので、Nginx などの Web サーバに設定します。Nginx の場合の最小設定はこんな感じ。

server {
    listen 443 ssl;
    server_name {{ cashbook.host }};
    root /var/www/www.example.com/current/web;
    ssl_certificate /etc/letsencrypt/live/www.example.com/privkey.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.example.com/fullchain.pem;
}

SSL 証明書の更新を自動化する

証明書は 3 ヶ月で有効期限が切れるので、以下コマンドで更新します。以下のコマンドを実行しても、有効期限の 1 ヶ月前になるまでは何も起こりません。 1 ヶ月前になると新しい証明書をダウンロードしてきて、Nginx を再起動してくれます。私は cron で週に 1 回実行するようにするようにしました。

$ sudo certbot renew --pre-hook 'service nginx stop' --post-hook 'service nginx start'

-技術ブログ
-

© 2020 karakaram-blog