Let’s Encrypt=Certbot。
SSL/TLS証明書の発行
Let’s Encryptの導入手順はXserverのマニュアルを参考にした。
dnf install certbot python3-certbot-nginx
Certbotをインストールした後、certbotコマンドからSSL/TLS証明書を取得する。
Nginxを使っているので、certbotコマンドのオプションには「–nginx」を付ける。
certbot --nginx -d <ドメイン名>
コマンド後、Let’s Encryptからメールを受け取るメールアドレスを入力し、利用規約に同意する。
最後にLet’s Encryptのパートナーにメールアドレスを公開していいかどうかを聞かれる。私はNoなのでNを入力して終わらせる。
「Requesting a certificate for <ドメイン名>」のところでしばらく待つ。「Successfully deployed certificate」の案内が来たらSSL/TLS証明書の発行が完了。
独自ドメインのあとサブドメインのSSL/TLS証明書を取得するcertbotコマンドを打つと、すぐに「Requesting a certificate for <ドメイン名>」の表示になった。
ドメイン判定かサーバー判定かで前に必要な情報を入力したかどうか判定しているのかもしれない。
どのドメインがSSL/TLS証明書されたのかわからなくなったら「/etc/letsencrypt/live/」を覗いてみること。
SSL/TLS証明書を発行したら自動的にSSLに繋がる
CertbotがNginxのドメイン個別設定ファイルに自動で設定を書き込んでくれているので、サーバー側で手動での非SSL→SSLの対応は特にない。
ただし証明書の自動更新機能はサーバー側で対応すること。
Let’s Encryptは有効期間が90日間(約3ヶ月)の証明書で、スクリプトを設定することによって自動で更新することができます。
https://ssl.sakura.ad.jp/column/free-or-paid/
timerを使ったSSL/TLS証明書の自動更新設定
よく聞くパターンはcronを使った自動更新だが、私はメンターに勧めてもらったtimerでの自動更新を実装することにした。
「/usr/lib/systemd/system/」の中にちゃんとcertbot-renew.timerが入ってた。やったやった。
参考記事の通りにやってみる。CentOS Stream 9でも同様のやり方でOKだった。
timerを有効にする。
systemctl enable --now certbot-renew.timer
「/etc/sysconfig/certbot」ファイルのPOST_HOOKの値を変える。
# POST_HOOK=""
POST_HOOK="--post-hook 'systemctl restart httpd'"
timerを再起動する。
systemctl restart certbot-renew.timer
以下のコマンドで「certbot-renew.service」が表示されていて、「LAST」「PASSED」が反映されていたらtimer設定が完了。
systemctl list-timers
POST_HOOKにはhttpdを指定してるけど、SSL/TLS証明書の発行でcertbotのオプションにNginxを指定しているので「systemctl restart nginx」でなくていいのだろうか?
今のところ自動更新には問題ないけれど、後々検証してみたいところ。
SSL/TLS証明書の自動更新タイミング
timerでのSSL/TLS証明書の自動更新は60日後くらいに行われる。
以下は2024/5/16にSSL/TLS証明書を発行し、2024/7/16に自動更新されたときの記録。
いちばんめのサーバー構築の流れ
-
1-1 初期設定
-
1-2 新規ユーザー(一般ユーザー)の作成と設定
-
1-3 Nginx導入とhttpの準備
-
1-4 Nginxの初期設定
-
1-5 php導入
-
1-6 Apache導入と初期設定
-
1-7 リバースプロキシを準備する前の事前知識
-
1-8 サーバーIPアドレスとドメイン(ワイルドカード指定)の設定
-
1-9 ドメイン個別設定とリバースプロキシ構築
-
1-10 Let’s Encrypt(Certbot)を使ったSSL/TLS証明書の発行と自動更新設定
-
1-11 MySQL導入
-
1-12 MySQLのパフォーマンスチューニング
-
1-13 MySQLへのログインと初期設定
-
1-14 MySQLからDB・ユーザーの準備/ユーザーの権限設定
-
1-15 Zabbix導入
-
1-16 (寄り道)Zabbixのアップグレード
-
1-17 PHPの詳細設定
-
1-18 WP-CLIとWordPressの導入