certbot公式のdockerイメージを使って証明書を管理する方法.
前提
- DNSの設定が完了していること.
具体的には,外部のサービスから取得したいFQDNにした時,証明書をインストールする ホストへ到達するようになっていること.
DNSの設定やNAPTの設定はここでは省略する. - 証明書は
/opt/certbot/etc
配下に配置する.
webサーバは,同ディレクトリの証明書を読み取れるようにする必要があるので, 運用のことも考えて指定するのをお勧めする. - もしwebサーバが動作していたらポート番号が衝突するので,webサーバを止めておく.
新規証明書の取得
certbotの公式docker imageを利用する.
証明書を取得したいドメインをFQDN
,ドメイン管理者のメールアドレスを,
ADMIN_MAIL_ADDR
とすると,以下のようなコマンドで取得する.
もしマルチドメイン証明書が欲しかったら-d
オプションを連ねる.
ワイルドカード証明書はわからん.
docker run --rm -p 80:80 \
-v /opt/certbot/etc/letsencrypt:/etc/letsencrypt \
-v /opt/certbot/var/log/letsencrypt:/var/log/letsencrypt \
certbot/certbot certonly --standalone --agree-tos \
--email ADMIN_MAIL_ADDR \
-d FQDN
nginxの場合,ファイルは以下を指定.
- ssl_certificate
/opt/certbot/etc/letsencrypt/live/FQDN/fullchain.pem
- ssl_certificate_key
/opt/certbot/etc/letsencrypt/live/FQDN/privkey.pem
- ssl_trusted_certificate
/opt/certbot/etc/letsencrypt/live/FQDN/chain.pem
(中間認証局証明書とルートCA証明書)
更新
以下のコマンドを定期的に実行すれば,証明書の残期間が1ヶ月未満になった時に
更新してくれる.
同ディレクトリでまとめて管理している証明書が複数あれば,全部まとめてやってくれる.
docker run --rm -p 80:80 \
-v /opt/certbot/etc/letsencrypt:/etc/letsencrypt \
-v /opt/certbot/var/log/letsencrypt:/var/log/letsencrypt \
certbot/certbot renew
失効&削除
普通セットだと思うのでまとめて.
証明書を失効させるには,証明書ファイルを直接指定する.
タイミングによっては,直前の証明書 (cert2.pem
) も有効である場合もあると思うの
で,気になる人はそっちも失効させてもいいかも.
docker run --rm -p 80:80 \
-v /opt/certbot/etc/letsencrypt:/etc/letsencrypt \
-v /opt/certbot/var/log/letsencrypt:/var/log/letsencrypt \
certbot/certbot revoke \
--cert-path=/etc/letsencrypt/archive/FQDN/cert1.pem
証明書を削除する. いくつかのファイルに分散してるので,手で消すのは面倒なのでコマンドで消すのをオ ススメ.
docker run --rm -p 80:80 \
-v /opt/certbot/etc/letsencrypt:/etc/letsencrypt \
-v /opt/certbot/var/log/letsencrypt:/var/log/letsencrypt \
certbot/certbot delete \
-d FQDN