SSL/TLS証明書をわかりやすく解説
HTTPS証明書の役割、ブラウザが警告を表示する理由、そして自分のドメインの有効期限やチェーンの問題を確認する方法。
ブラウザに南京錠のアイコンが表示されているとき、TLS(いまだにSSLと呼ばれることも多い)があなたとサーバー間の通信を暗号化しています。証明書は公開鍵をホスト名(場合によっては企業の身元情報)に紐付けるもので、同じWi-Fi上の偽サイトではなく、本物のサイトと通信していることをブラウザが確認できるようにします。
証明書が実際に証明すること
- ドメイン認証(DV) — ドメインを管理していることを証明します。訪問者は暗号化を利用できますが、身元確認は最低限です。
- 組織認証(OV)/拡張認証(EV) — 法人に対してより厳格な審査を行います。EVはかつてグリーンバーで表示されていましたが、現代のブラウザでは目立たなくなっています。
ほとんどのサイトでは、Let's Encryptの無料DV証明書で十分です。暗号化と自動更新が利用できます。
証明書チェーン
ブラウザはOSに組み込まれたルートCAを信頼しています。サーバーはリーフ証明書+中間証明書を送信し、ブラウザは信頼されたルートまでチェーンをたどります。中間証明書が欠けていると、手元のPCでOpenSSLが正常に見えても、一部のクライアントで**「証明書が信頼できません」**と表示されることがあります。
CAのドキュメントに従って、フルチェーンを配信するようサーバーを必ず設定してください。
有効期限と更新
証明書には有効期限があります。Let's Encryptは自動化を促進するために短期間の証明書(90日)を発行しています。ACME更新(Certbot、Caddy、Traefik、またはホスティングのコントロールパネル)を設定し、更新失敗を監視しましょう。
証明書の期限切れは以下に影響します:
- ユーザーへのHTTPS通信
- TLSをピン留めしているか、厳格なクライアントを使用しているAPI
- 受信側のアウトバウンドTLS検証が不十分な場合のWebhook
ホスト名の不一致
www.example.com 向けの証明書は、SANエントリに両方が含まれていないか、ワイルドカード *.example.com を使用していない限り、example.com をカバーしない場合があります(なお、ワイルドカードはベアドメインのapexをカバーしません)。
SSL Checkerを使用すると、公開インターネット側から有効期限、発行者、ホスト名のカバレッジを確認できます。
TLSの前にDNSを確認する
TLSは、クライアントが正しいIPに到達できることが前提です。移行後は、暗号スイートのデバッグに時間を費やす前に、DNS LookupでA/AAAA/CNAMEレコードを確認してください。
HTTPリダイレクトが正しく動作しない場合は、HTTP Status Checkerを使って http → https の301/302チェーンを確認できます。
実践チェックリスト
- HTTPSをすべての場所で有効にし、HTTPを301でリダイレクトする
- すべてのサブドメインがHTTPSに対応していることを確認してからHSTSを配信する
- 更新を自動化し、有効期限まで14日未満になったらアラートを設定する
- 社内ネットワークだけでなく、モバイルネットワークや企業のプロキシからもテストする
HTTPSはSEO、セキュリティ、ユーザーの信頼において必須の要件です。チェーンやホスト名の問題は、何を確認すべきかさえわかれば、思ったより素早く解決できます。