あるまげどーーーん

某ITベンチャー会社に所属する技術者たちの自習室

VPS上にNextclowd構築(Let's Encryptの証明書自動更新)

きりんです。

以下の記事の残作業を片付けていきます。 まずはLet's Encryptの証明書を自動的に更新する設定を行います。

armageddooon.hatenablog.com

Let's Encryptの証明書自動更新

Let's Encryptの証明書の有効期限は90日間となっており、その期限が切れる前に証明書の更新を行う必要があります。 手動での更新も可能ですが、面倒くさいし忘れる可能性もあるので、定期的に自動実行されるように設定します。

証明書の有効期限の確認

念のため現在の証明書の有効期限を確認してみます。

# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: (ドメイン名)
    Domains: (ドメイン名)
    Expiry Date: 2019-11-02 04:06:00+00:00 (VALID: 66 days)
    Certificate Path: /etc/letsencrypt/live/(ドメイン名)/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/(ドメイン名)/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

まだまだ有効期限は残っているようです。

更新のテスト

自動更新が正しく行われるか、事前に確認をします。この作業では証明書は更新されません。

# certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/(ドメイン名).conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator webroot, Installer None
Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org
Renewing an existing certificate

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed without reload, fullchain is
/etc/letsencrypt/live/(ドメイン名)/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/(ドメイン名)/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates above have not been saved.)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

問題なさそうです。

更新の自動実行設定

--dry-runオプションを外せばそのまま更新のコマンドになりますので、それをcronに登録します。 証明書の更新後にhttpdの再起動が必要になるので、そのオプションを追加します。

0 3 * * sun /usr/bin/certbot renew --post-hook "systemctl restart httpd"

コマンドの実行間隔については毎日というサイトもあれば月イチというサイトもあるので、間をとって週イチで様子を見ることにします。

(追記)証明書の更新確認

書きかけの記事をしばらく放置してしまっていたのですが、逆にいい感じに時間が経過したので証明書の更新状況を確認してみました。

# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: (ドメイン名)
    Domains: (ドメイン名)
    Expiry Date: 2020-01-03 17:01:43+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/(ドメイン名)/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/(ドメイン名)/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

ちゃんと更新されているようです。

(参考サイト) Linux CentOS7でLet's Encryptを自動更新にする | のるぼるのるの

残りの作業

一気に片付けようと思うとなかなか進まないので、少しずつやっていくことにしました。 残りの作業は以下の通り。

  • DB、データのバックアップ
  • ログローテートの設定
  • セキュリティ設定