飼育係(べべ)日記


2016-05-07(Sat) [長年日記]

_ Let's Encryptでサーバ証明書を仕込む

仕事柄ちょっと気になるし、パブリックベータも取れたそうだし、HTTP/2とかもやっておかないとだし。

Let's Encryptクライアントのインストール

$ cd /opt
$ sudo git clone https://github.com/letsencrypt/letsencrypt letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto

とすると、Let's Encryptクライアントの実行に必要な(Ubuntuの)パッケージがインストールされた。

サーバ証明書の取得

すでに動いているWebサーバを使ってドメイン使用の認証をしてもらいたいので、Webrootプラグインを使う。証明書が必要なホスト(ドメイン)名と、ホスト名毎のドキュメントルートを指定する。複数のホスト(ドメイン)名を指定すれば、SAN(Subject Alternative Name)に入るので、共通で使える。

$ ./letsencrypt-auto certonly --webroot -w /home/bebe/hepopublic -d www.hepo.jp -w /home/bebe/bbnpublic -d bbn.hepo.jp

証明書更新スクリプトを仕掛ける

Let’s EncryptとNginx : セキュアなWebデプロイメントの現状」から拝借してcrontabに仕掛けた。

#!/bin/sh

if ! /opt/letsencrypt/letsencrypt-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; then
    echo Automated renewal failed:
    cat /var/log/letsencrypt/renew.log
    exit 1
fi
systemctl restart nginx

nginxの設定

あとは、nginxの設定ファイルの適当なところ(serverの中)に、ssl_certificateとかssl_certificate_keyとかを記載。listenのところにsslとhttp2も設定。

listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/www.hepo.jp/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.hepo.jp/privkey.pem;
Tags: Linux