メインコンテンツまでスキップ

Certbot

Ubuntuでドメイン証明書を取得する準備

※1.Certbotでのドメイン取得には実行できる回数制限(時間単位、週単位)があります
※2.時間がない、不安な場合等はサブドメイン,テストドメインなどでテストしてください。

更新を念のためかけておきます

sudo apt -y update
sudo apt -y upgrade

ポートを開放する(必要がある場合)

sudo ufw allow 80
sudo ufw allow 443
sudo ufw reload

Certbotをインストールする

sudo apt -y install certbot

証明書を取得する

注意

ポート80が必須です。
nginx等で使われている場合は停止してください。

sudo certbot certonly --standalone -d momijiina.com

証明書を一覧を表示する

証明書一覧を取得する

sudo certbot certificates

証明書を削除する

証明書が不要になった場合に使ってください。
※証明書一覧を確認してください。

削除するドメインを指定してください。

sudo certbot delete --cert-name momijiina.com

証明を自動更新する

rootでcronを実行する

sudo crontab -u root -e

人によっては毎日更新を実行するようにするべきという人もいますので最適解は不明。
fpmの自動リロードは気を付けてください。
fpmの設定が甘いと503になる場合があります。

一応Cronの書式について

分   時   日   月   曜日   コマンドを入力
フィールド数値
0~59
0~23
1~31
1~12
曜日0~7(0と7は日曜、1は月曜)
  • * * * * * → 毎分、毎時、毎日、毎月、毎曜日に実行

毎月1日の午前3時に更新をかける設定です

00 03 01 * * certbot renew --quiet

nginx,fpm等もリロードが必要な場合があります(まとめるとこんな感じ)。 証明書が更新された場合のみリロードを実行します

毎週月曜日の午前3時に更新

0 3 * * 1 certbot renew --quiet --deploy-hook "systemctl reload nginx && systemctl reload php8.3-fpm.service"

毎週日曜の場合: 0 3 * * 0
毎週金曜の場合: 0 3 * * 5

毎月1日の1時に更新

00 03 01 * * certbot renew --quiet --deploy-hook "systemctl reload nginx && systemctl reload php8.3-fpm.service"

証明書取得モードを変更する

これはNginx環境などでポート80を常に使われている場合に必要です

証明書更新モードの設定

sudo vi /etc/letsencrypt/renewal/momijiina.com.conf

以下のように編集する
/var/www/htmlはnginxと同じ公開できるWEBファイルがある場所等

# renew_before_expiry = 30 days
version = 1.21.0
archive_dir = /etc/letsencrypt/archive/momijiina.com
cert = /etc/letsencrypt/live/momijiina.com/cert.pem
privkey = /etc/letsencrypt/live/momijiina.com/privkey.pem
chain = /etc/letsencrypt/live/momijiina.com/chain.pem
fullchain = /etc/letsencrypt/live/momijiina.com/fullchain.pem

# Options used in the renewal process
#[renewalparams]
#account = f4bef560da32591dc52f173c01af1ga7
#authenticator = standalone
#server = https://acme-v02.api.letsencrypt.org/directory

[renewalparams]
account = f4bef560da32591dc52f173c01af1ga7
authenticator = webroot
server = https://acme-v02.api.letsencrypt.org/directory
webroot_path=/var/www/html
[[weboroot_map]]
momijiina.com = /var/www/html

nginxを使う場合は以下を追加する
ポート80からSSLに自動転送される場合は443側に必要

    location ^~ /.well-known/acme-challenge {
root /var/www/html;
}

location = /.well-known/acme-challenge/ {
return 404;
}

更新可能か試す

sudo certbot renew --dry-run

以上が更新方法です。