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

2017年7月7日

Let's Encrypt

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

目次

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

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

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

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

SSL 証明書を取得する

Let's Encrypt の使い方 SSL/TLS サーバ証明書の取得 - Let's Encrypt 総合ポータル を参考に証明書を取得します。

ファイアーウォールで 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 ヶ月で有効期限が切れるので、以下コマンドで更新します。

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

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

Amazon Route53 と Docker による証明書の作成と更新

Route53 と Docker を使って証明書を作成したり更新する方法の記事も書きました。Route53 でドメインを管理しているサイトで使える方法です。

Let's Encrypt
Let’s Encryptの証明書をRoute53とDockerで作成する

Let's Encrypt の SSL/TSL 証明書を Amazon Route53 と Docker で作成する機会 ...

続きを見る

-技術ブログ
-