CentOS7 で Let's Encrypt を使って無料の SSL 証明書を取得したので実行したコマンドなどをメモ。3ヶ月で有効期限が切れるので、更新を自動化する方法も紹介します。
目次
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の証明書をRoute53とDockerで作成する
Let's Encrypt の SSL/TSL 証明書を Amazon Route53 と Docker で作成する機会 ...
続きを見る