独自ドメインとSSL証明書を自前サーバーで使う|設定と更新の確認
自前サーバーで独自ドメインをHTTPSにした後に、DNSの向け先、証明書の発行元と有効期限、自動更新のしくみを確かめる方法を解説します。読み取りだけのコマンドと、Claude Codeへの頼み方も紹介します。
本記事はプロモーションを含みます。紹介する情報は、実際の成果や効果を保証するものではありません。
目次
この記事でわかること
- 自前サーバーで独自ドメインをHTTPSにした後に、確かめておくこと
- DNSの向け先・証明書の期限・自動更新のしくみを、読み取りだけで確かめるコマンド
- 証明書の有効期間が短くなっていくことへの備え
- Claude Codeに、変更させずに確かめさせる頼み方
結論から書くと、証明書は自動更新に任せたうえで、公開中の証明書の期限と、更新のタイマーの動きを、ときどき外側から確かめるのが安全です。ドメインの選び方と取り方は独自ドメインの選び方で紹介しています。
自前サーバーでHTTPSを使うまでの流れ
独自ドメインを自前サーバーで使うときは、次の順で進みます。
| 段階 | 確かめること |
|---|---|
| 1. DNS | ドメインがサーバーを向いているか |
| 2. 証明書の取得 | 発行元と有効期限 |
| 3. Webサーバーの設定 | HTTPSで応答するか |
| 4. 自動更新 | タイマーが動いているか |
このサイトのサーバーも、Let's Encryptの証明書を使い、snapで入れたCertbotの更新のタイマーで自動更新しています。サーバーの作り方はClaude CodeでAlmaLinuxサーバーを構築・運用する方法で紹介しました。
この記事では、取得や設定の手順よりも、動いているものを確かめる方法を中心に書きます。どれも表示するだけで、サーバーの状態は変えません。
DNSがサーバーを向いているか確かめる
最初に、ドメインの名前が、自分のサーバーのアドレスを返すかを確かめます。digは、何も指定しなければAレコード(IPv4のアドレス)を調べます。
【用途】ドメインの向け先を確かめる /【実行場所】作業PCかサーバー(digを使える環境) /【状態変更】なし(読み取りだけ)
dig +short example.com A
dig +short www.example.com A
出てきたアドレスが、自分のサーバーのグローバルなアドレスと同じなら、向け先は合っています。wwwの付く名前も使う場合は、両方を確かめます。何も出ないときは、DNSの設定がまだ反映されていないか、レコードが無い状態です。
公開中の証明書の期限を確かめる
次に、ブラウザが受け取るのと同じ証明書を、外側から取り出して確かめます。-servernameは、どのドメインの証明書を求めるかを伝える指定です。
【用途】公開中の証明書の発行元と有効期限を確かめる /【実行場所】作業PCかサーバー(opensslを使える環境) /【状態変更】なし(読み取りだけ)
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer -dates
issuerの行が発行元、notBeforeとnotAfterの行が有効期間の始まりと終わりです。このサイトのサーバーで2026年10月17日に確かめたときは、発行元はLet's Encryptで、有効期間は10月14日から2027年1月12日まででした。
期限までの日数を、数字で判定することもできます。-checkendは、指定した秒数のうちに期限が来るかを調べ、来るなら0以外、来ないなら0で終わります。
【用途】30日以内に期限が来るかを判定する /【実行場所】作業PCかサーバー /【状態変更】なし(読み取りだけ)
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -checkend 2592000; echo $?
2592000は30日分の秒数です。最後に0が出れば、30日のうちに期限は来ません。
自動更新のしくみを確かめる
Certbotの公式の説明では、多くの入れ方で自動更新が初めから設定されています。どの方法で動いているかは、systemdのタイマーの一覧で確かめられます。
【用途】証明書の更新のタイマーの状態を確かめる /【実行場所】サーバー(SSHで接続した一般ユーザー) /【状態変更】なし(読み取りだけ)
systemctl list-timers --all | grep -i certbot
NEXTの列が次に動く時刻、LASTの列が前回動いた時刻です。このサイトのサーバーでは、snap.certbot.renew.timerが有効で、同じ日の朝に前回の実行があり、その日の夜に次の実行が予定されていました。
更新が動いても、証明書が毎回入れ替わるわけではありません。Certbotの公式の説明では、4.0.0以降は、有効期間の残りが3分の1を切ったときに更新の対象になります。
root権限で実行できる人は、Certbotが管理している証明書の一覧と、更新の試し方も使えます。--dry-runは試験用のサーバーに対して更新を試すもので、証明書をディスクに保存しないと説明されています。
【用途】管理している証明書の一覧と、更新を試す /【実行場所】サーバー(sudoの使える人) /【状態変更】なし(一覧は読み取りだけ、--dry-runは証明書を保存しない)
sudo certbot certificates
sudo certbot renew --dry-run
この2つは、この記事の検証では実行していません。sudoの使える人が、自分で内容を確かめてから実行してください。
証明書の有効期間は短くなっていく
Let's Encryptの公式の説明では、標準の証明書の有効期間は90日で、60日ごとの更新が勧められています。さらに、有効期間を段階的に短くすることが告知されています。
- 2027年2月10日から、標準の証明書は64日になります
- 2028年2月16日から、標準の証明書は45日になります
告知では、60日ごとのように決め打ちの間隔で更新する作りでは足りなくなるため、手作業の更新は勧めないこと、更新されなかったときに気づける仕組みを用意することが書かれています。自動更新に任せることと、外側から期限を確かめることを、組み合わせておくと安心です。
Claude Codeに読み取りだけで確かめさせる
ここまでのコマンドは、Claude Codeにまとめて頼むこともできます。変更をさせないことと、読めなかったものを推測で埋めないことを、依頼に書いておきます。
【用途】証明書と自動更新の状態を、変更なしで調べてもらう /【実行場所】Claude Codeに頼む文 /【状態変更】なし(結果を表で受け取る)
example.com のHTTPSの証明書と自動更新の状態を確かめてください。
- DNSの向け先、公開中の証明書の発行元と有効期限、更新のタイマーの次と前回の実行を調べてください
- 使うのは状態を表示するコマンドだけにして、証明書の発行・更新・設定の変更・sudoの操作は行わないでください
- 権限が足りずに確かめられなかった項目は、その旨を表にそのまま書いてください
表にまとめて報告したら、私が読むまで待ってください。
サーバーでの作業の頼み方の考え方はApacheのリバースプロキシで複数のアプリを公開する方法でも紹介しています。
つまずきやすいところ
- 一般ユーザーでApacheの設定を確かめると、証明書のファイルが無いと言われる: このサイトのサーバーでも起きました。証明書を置くフォルダがrootだけ読める権限だったため、一般ユーザーでは読めなかっただけで、sudoで確かめると設定に問題はありませんでした
- wwwの付く名前を忘れる: DNSにも証明書にも、使う名前をすべて入れておく必要があります
- 自動更新があるから、と期限を見なくなる: タイマーが止まっていても、すぐには気づけません
- 更新の後にWebサーバーが古い証明書のまま: 公開中の証明書を外側から取り出して、期限が新しくなったかを確かめます
更新を任せきりにしないための判断のポイント
自動更新が動いているサーバーでも、次の3つで、どこまで確かめるかを決めます。
- 公開しているサイトの数: ドメインが増えるほど、期限の切れたものに気づきにくくなります。一覧で確かめる仕組みを考えます
- 更新の間隔: 有効期間が短くなるほど、更新の失敗に気づくまでの余裕も短くなります
- 気づく仕組みがあるか: このサイトでも、期限を見張って知らせる仕組みはまだ作っておらず、今後の候補として記録しています。まずは、月に一度、外側から期限を確かめることから始めます
まとめ
- DNSの向け先は、digでドメインのアドレスを見て確かめます
- 公開中の証明書の発行元と期限は、opensslで外側から取り出して確かめます
- 自動更新は、systemctl list-timersでタイマーの次と前回の実行を見ます
- 証明書の有効期間は短くなっていくため、自動更新と外側からの確認を組み合わせます
よくある質問
Let's Encryptの証明書は、どのくらいの期間使えますか?
Let's Encryptの公式の説明では、標準の証明書の有効期間は90日です。今後は段階的に短くなると告知されているため、日数を決め打ちにせず、自動更新に任せる前提で考えます。
自動更新が動いているかは、どう確かめますか?
snapやパッケージで入れたCertbotは、自動更新が初めから設定されていることが多いです。systemctl list-timersで更新のタイマーの次の実行と前回の実行を見て、公開中の証明書の期限と合わせて確かめます。
certbot renew --dry-runを実行すると、証明書が入れ替わりますか?
Certbotの公式の説明では、--dry-runは試験用のサーバーに対して更新を試すもので、証明書をディスクに保存しません。ただし、実行にはroot権限が要ります。この記事の検証では実行していません。
一般ユーザーでApacheの設定を確かめると、証明書のファイルが無いと言われるのはなぜですか?
証明書のフォルダがrootだけ読める権限のときは、一般ユーザーでは読めないため、ファイルが無いように見えるエラーになることがあります。このサイトでも起き、sudoで確かめると設定に問題はありませんでした。
Claude Codeに証明書の更新を任せてもよいですか?
確かめる作業は、読み取りのコマンドだけに限って頼めます。証明書の発行や更新、設定の変更はroot権限が要るため、内容を確かめたうえで自分で実行します。