さくらのクラウド Codex CLIでLet's EncryptのSSL証明書を取得してhttpsを設定する方法
前提条件
はじめに
今回は、さくらのクラウド上で稼働しているCodex CLIに、
日本語の指示だけで別のサーバーへSSHログインし、
Let's EncryptのSSL証明書を取得してhttpsを設定する手順を検証いたします。
動作環境
| 項目 | 説明 |
|---|---|
| 操作元サーバー | Rocky Linux9.8(test-server) 1コア・1GB (Codex CLIを動かすサーバー) |
| 対象サーバー | Rocky Linux9.8(test-server2) 1コア・1GB (SSL証明書を設定するサーバー) |
| リージョン | tk1a(東京第1) |
ApacheとHTTP(80番)・HTTPS(443番)の設定
Apacheのインストールと80番・443番の開放が完了していることが前提です。
詳細は以下の記事をご参照ください。
DNSの設定
対象サーバーのグローバルIPをドメインのAレコードに登録します。
Let's Encryptの証明書取得にはDNSが正しく設定されている必要があります。
| レコード | 値 |
|---|---|
| ホスト名 | www.d1j.jp |
| タイプ | A |
| 値 | 対象サーバーのグローバルIP |
※対象サーバーへログインするSSHの鍵は事前に設定してください。
事前に下記の内容を参考にCodex CLIをインストールしてください。
対象サーバーも作成してください。以下の内容を参考にしてください。
certbot SSL証明書を取得 https設定をする
この画面が表示されて指示を入力できない場合は、viで下記の内容を追記しましょう。
(v0.160.0以降から表示されます。)
| コマンド | 説明 |
|---|---|
| $ codex | Codex CLIを実行いたします。 |
| $ vi ~/.codex/config.toml [projects."/home/rocky/sakura"] trust_level = "trusted" | 下記の画面が表示された場合は、codexをCtrl+cで終了し、 viでconfig.tomlを追記いたします。 |

1. Codex CLIがインストールされている操作元サーバーで実行してください。
下記のコマンドを実施してください。(一般ユーザーで実施してください。)
| コマンド | 説明 |
|---|---|
| $ codex | 追記後、もう一度codexを起動してください。 |
| 「SSHでtest-server2にログインしてcertbotをインストールし、www.d1j.jpのSSL証明書を取得してhttpsの設定をしてください。certbot --apacheで自動設定をお願いします。」 と入力してください。 | Codex CLIに指示をいたします。 |

certbotのインストールからSSL証明書取得、HTTPS設定までを完了しました。

補足
| 補足 |
|---|
| 今回は、1回目と2回目のcertbot --apacheが失敗しました。Codex CLIは、最初に「パケットフィルタが原因では」と考えて確認しましたが、 ログを調べた結果、別の原因(Apacheのクラッシュ)に気づき、証明書の取得とApacheへの設定を分けて実行する方法に切り替えて 成功しています。エラーが出ても止まらずに、原因を調べて自動でやり直してくれます。 |
動作確認
2. ブラウザーでドメイン名を入力して確認いたしましょう。
「保護されていない通信」の警告が表示されず、httpsで正常にアクセスできれば完了です。
Apacheのデフォルトページ「HTTP Server Test Page」が表示されれば正常に動作しています。

3. 自動更新タイマーの設定はコマンドでも確認できます。
対象サーバーにSSHでログインし、下記のコマンドを実施してください。
| コマンド | 説明 |
|---|---|
| # systemctl is-enabled certbot-renew.timer | 自動更新タイマーが有効になっているか確認いたします。 「enabled」と表示されれば問題ありません。 |

注意事項
| 項目 | 説明 |
|---|---|
| DNS設定 | 証明書を取得する前に、Aレコードを正しく設定しておく必要があります。 |
| 80番・443番 | Let's Encryptの検証と、https接続の両方で必要です。 事前にパケットフィルタで許可してください。 |
| 有効期限 | Let's Encryptの証明書は90日間有効です。 自動更新タイマーで更新されますので、certbot-renew.timerが 有効になっているか確認してください。 |
| メールアドレス | 今回は指示文に書かなかったため、メール登録なしで取得しています。 |
まとめ
・事前に、DNS(Aレコード)の設定と、ファイアウォールの80番・443番の開放が必要。
・certbotがエラーになっても、Codex CLIがログなどから原因を調べ、証明書の取得と
Apacheへの設定を分けて実行するなど、やり方を変えて自動でやり直してくれる。
・HTTPからHTTPSへのリダイレクトと、自動更新タイマーの有効化まで実行してくれる。
以上で「さくらのクラウド Codex CLIでLet's EncryptのSSL証明書を取得してhttpsを設定する方法」を完了いたします。

