目次
1. そもそも「証明書」とは何か?
インターネットの世界における「サーバーの身分証明書」です。サーバーと通信する際、あなたは「本当に your-domain.mydns.jp に繋がっているのか?偽のサーバーじゃないか?」を判断する必要があります。
| 用語 | 意味 |
|---|---|
| 証明書 | 「このサーバーは間違いなく your-domain.mydns.jp です」ということを、第三者機関(認証局)が保証してくれるパスポートのようなものです。 |
| SSL/TLS | 証明書を使って「暗号化された安全なトンネル」を作る技術の名称です。 |
2. なぜ「Let's Encrypt」を使うのか?
以前は、この証明書を高いお金(年間数万円など)を払って取得していました。Let's Encrypt は、「インターネットを安全にするために、自動的・無料で証明書を発行する」という画期的な非営利プロジェクトです。
3. なぜ取得時に「80番ポート」を開ける必要があるのか?
ここが一番の「論理的プロセス」です。証明書を発行する Let's Encrypt サーバーは、「本当にあなたがそのドメインの持ち主か?」を疑います。そこで行われるのが「所有権の証明(チャレンジ)」です。
※解説:だから、証明書を取得する時だけは「外部から80番ポート(HTTP)にアクセスできる状態」にする必要があったのです。
4. 取得したファイルの正体(あなたのサーバーの中身)
コマンドを実行したとき、以下の2つの大事なファイルが生成されました。
| ファイル | 役割 |
|---|---|
/etc/letsencrypt/live/your-domain.mydns.jp/fullchain.pem | 「パスポート本体」。相手サーバーに渡して「私は本物です」と証明するためのファイルです。 |
/etc/letsencrypt/live/your-domain.mydns.jp/privkey.pem | 「自分専用のハンコ(秘密鍵)」。このデータとペアでなければ、証明書は使えません。絶対に外部に漏らしてはいけない最重要ファイルです。 |
💡 「fullchain(完全な連鎖)」と呼ばれる理由
証明書は実は単独では信頼されません。「Let's Encryptの中間証明書」→「さらにその上位の信頼された認証局(ルートCA)」という信頼の連鎖(チェーン)を辿って初めてブラウザに信用されます。fullchain.pem には、あなたのサーバー用証明書に加えて、この中間証明書までが1つのファイルにまとめて収録されているため「full(完全な)chain(連鎖)」と呼ばれます。
5. メールサーバーでの読み込み(SSLの確立)
PostfixやDovecotは、起動した瞬間にこのファイルを読み込みます。
- 読み込みの仕組み:設定ファイル(
main.cfや10-ssl.conf)にこれらのパスを書くことで、サーバーソフトは「この証明書と鍵を使って、通信を暗号化しなさい」という命令を受け取ります。 - 暗号化の確立:あなたのメールサーバーに、Thunderbirdが接続しに来た瞬間、サーバーは
fullchain.pemを見せ、「暗号化の鍵を交換しよう」と交渉して安全なトンネル(TLS)を作ります。
6. 自動更新の仕組み(運用と保守)
Let's Encrypt の証明書には「90日間」という有効期限があります。しかし、あなたのサーバーでは「自動更新の仕組み」が既に組み込まれています。
systemctl list-timers | grep certbot
このタイマーが、期限の30日前になると自動的にLet's Encryptへアクセスし、新しい証明書を受け取ってきます。あなたは何もしなくても、勝手に証明書が最新の状態に保たれるようになっています。
💡 管理者としての「復習ポイント」
将来、もしメールサーバーの設定がうまく動かなくなった場合、この証明書の確認は「基本中の基本」になります。「証明書が正しく読み込まれているか?」と疑問に思ったら:
sudo doveconf -n | grep ssl_cert
これを見て、正しいファイルパスが表示されていれば、通信の暗号化は正常です。
コマンド早見表
| 操作 | コマンド |
|---|---|
| 証明書の一覧・有効期限を確認 | sudo certbot certificates |
| 自動更新タイマーの状態確認 | systemctl list-timers | grep certbot |
| 更新をリハーサル(実際には更新しない) | sudo certbot renew --dry-run |
| 手動で更新を強制実行 | sudo certbot renew --force-renewal |
| Dovecotが読んでいる証明書パスを確認 | sudo doveconf -n | grep ssl_cert |
| Apacheが読んでいる証明書パスを確認 | sudo apachectl -S | grep -i ssl |
実機で確認した設定状況
2026年8月4日時点で、本サイトのRocky Linux 9サーバーの実際の状態を確認しました。
$ systemctl list-timers | grep certbot
Wed 2026-08-05 07:37:40 JST 11h left
Tue 2026-08-04 16:50:40 JST 3h ago
certbot-renew.timer certbot-renew.service
- certbot-renew.timer が稼働中で、直近も正常に実行された記録あり 証跡あり
- HTTPS通信自体が正常(同サーバーの他ページ検証で curl による内部接続200を確認済み) 証跡あり
お疲れ様でした!
このガイドを保存しておけば、「証明書ってどうなってるんだっけ?」という疑問を持ったときに、このロジックを読み返すだけで、すぐに全容が把握できます。このサーバー管理の知識は、ITスキルを格段に引き上げる一生モノです!