Let’s Encrypt のワイルドカード証明書を ConoHa API で自動更新する

conoha Linux
このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
スポンサーリンク

この記事は ConoHa VPS 2.0 API 向けの内容になります。

Certbot を使って Let' Encrypt の SSL 証明書を取得するには、外部に公開された Web サーバーか DNS サーバーで認証する必要があります。

ConoHa VPS に検証用として RHEL9 の設定を進めているのですが、現状では Web サーバーを外部には公開しておらず、管理者の IP アドレスからしかアクセスできない設定になっています。

Certbot の DNS 認証を使えば、非公開の Web サーバー用の SSL 証明書を取得でき、ワイルドカード証明書も取得できるので一石二鳥ですが、更新のたびに DNS を手動で書き換えるのは手間になります。

探してみたところ、ConoHa API を使って自動で TXT レコードを書き換えてくれるスクリプトがありましたので、これを使った設定方法を記録しておきます。

Let's Encrypt の証明書を取得

Certbot のインストール

EPEL リポジトリから Certbot をインストールします。

※EPEL リポジトリが未導入の場合は下記を参考に入れてください。

letsencrypt-dns-conoha のセットアップ

Let's Encrypt ワイルドカード自動更新(ConoHa)
はじめに 2回に渡りLet’s EncryptのSSL証明書を試してきましたが、今回はワイルドカー…

ConoHa API を介して認証用コードを自動的に設定してくれるスクリプトなのですが、オリジナルでは tyo2 リージョンに対応していなかったので、フォークされたものを使用しました。(https://github.com/tsukumijima/letsencrypt-dns-conoha

git コマンドで一式をダウンロードします。

Let's Encrypt ディレクトリ内で完結させたいので、/etc/letsencrypt にファイル一式を移動します。

スクリプトファイルに実行権限を付与します。

設定ファイル(.env)をリネームします。

ConoHa コントロールパネルから API のタブに移動し、API のユーザーネームとパスワード、テナント ID を確認します。また、エンドポイントの URL からリージョン(tyo1 か tyo2)もあわせて確認します。

※API ユーザーが設定されていない場合は作成してください。パスワードを設定するだけで、ユーザー名は自動的に割り当てられます。

上記の内容を、letsencrypt-dns-conoha の設定ファイルに記載します。

また、スクリプト内で jq コマンドを使用しますので、インストールしておきます。

以上で、準備は完了しました。

SSL 証明書の取得

実際に SSL 証明書を取得します。

このとき指定したオプションは /etc/letsencrypt/renewal/example.com.conf に保存され、更新(certbot renew)時にも自動的に指定されます。

証明書の自動更新

以前は Cron で月に一回程度 certbot renew を実行するのが一般的でした。

最近では certbot をインストールすると一緒に導入される certbot-renew が自動的に更新してくれるため、cron を設定する必要はありません。

certbot-renew.service は certbot-renew.timer によって呼び出され、定期的に実行されます。

証明書が更新された際に、自動的にサービスを再起動して反映させるためには /etc/letsencrypt/renewal-hooks/deploy/ の中にスクリプトを設置します。

以上で Let's Encrypt のワイルドカード SSL 証明書を自動運用する事ができるようになりました。

コメント

タイトルとURLをコピーしました