LoginSignup
1
1

More than 3 years have passed since last update.

letsencryptの運用

Last updated at Posted at 2019-07-20

certbot設定

証明書発行失効更新などなどはcertbotを使って行います。便利。
設定ミスなんかでトライ回数が多いと1週間ペナルティを食らうので、注意。
too manyなんちゃらみたいなエラーがでたら、その時は素直に後日リトライしましょう。
エラーのとしては、nginxの設定ファイル証明書のパスを記述したまま実行したり、証明書の設定を記述しないままnginx起動とかです。(よくやる

certbotのインストール

$ sudo wget https://dl.eff.org/certbot-auto -O /usr/local/certbot-auto
$ sudo chmod a+x /usr/sbin/certbot-auto

nginxの停止

nginxの設定ファイルに余計なSSLの記述がないか確認する。
あればコメントアウト。

$ sudo service nginx stop

証明書のインストール

letsencryptではSANを利用した複数ドメインへのインストールが可能。その場合は"-d ドメイン"を併記する。
e.g. hoge.com,www.hoge.com
コケるときはnginxの設定ファイルを確認。nginxを停止させた状態で実行する。
※ただし、SANなので後からドメイン追加する場合は証明書を都度再発行となる。
※ドキュメントルートが別サブドメインは都度発行。
e.g. blog.hoge.com

$ sudo certbot certonly --webroot-path /var/www/hoge.com/html -d hoge.com -d www.hogehoge.com -m hoge@gmail.com

Saving debug log to /var/log/letsencrypt/letsencrypt.log
How would you like to authenticate with the ACME CA?
-------------------------------------------------------------------------------
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1

上手く行けばCongratulations!みたいなメッセージが出ます。
作成した証明書とパスを確認。

$sudo certbot certificates
-------------------------------------------------------------------------------
Found the following certs:
  Certificate Name: hoge.com
    Domains: hoge.com www.hoge.com
    Expiry Date: 2019-09-15 14:06:29+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/hoge.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/hoge.com/privkey.pem

nginxの設定追記

こちらも各々の環境で。
vhostで運用してる場合はconf.dに入れてると思う。

$ sudo vi /etc/nginx/conf.d/hoge.com.conf

下記をserverディレクティブ内に追記
※必ずドメイン列記すること。".hoge.com"や"*.hoge.com"の表記はNG

server {
        server_name hoge.com www.hoge.com;
      (省略)
        listen 443 ssl;
        ssl_certificate     /etc/letsencrypt/live/hoge.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/hoge.com/privkey.pem;
}

サービス再起動

起動でコケるときはnginxの設定ファイルを見直してください。

$ sudo service nginx restart

自動化

90日で期限が切れてしまうので、週1程度自動更新を設定します。
letsencriptは残り30日以内になると更新される。
下記コマンドは事前に通るかチェックしておくが吉。

$ crontab -e

毎週月曜1時に実行します
※左から、「分」「時」「日」「月」「曜日」

0 1 * * 1 root /usr/local/certbot-auto renew --force-renewal && service nginx restart

証明書とドメイン設定の削除

証明書の失効、設定削除は下記。
また、アーカイブに以前のドメイン設定が残ってたまま、証明書を再作成すると、"hoge.com-0001"みたいな名前の設定が作られて気持ち悪い。
そういうときは、下記のコマンドでドメイン設定ごと消してからやる。
ただし、追記したnginxのconfファイルは手動で消す。

$ sudo certbot delete -d hoge.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log

Which certificate would you like to delete?
---------------------------------------------------------------------
1: hoge.com
2: hoge.com-0001
---------------------------------------------------------------------
Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 1

---------------------------------------------------------------------
Deleted all files relating to certificate example.com.
---------------------------------------------------------------------

その他気をつけること

・letsencryptではワイルドカードドメイン指定はできない。明示的にドメイン指定する必要がある
e.g. *.hoge.com → wp.hoge.com

・うまくいかない場合は意図しない箇所にletsencryptがnginxの設定に追記していないか確認したり。
$ grep server_name /etc/nginx/conf.d/*

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1