SSL/TLS証明書究極ガイド:X.509, PEM、そして現代の標準規格
ブラウザのアドレスバーにある「鍵マーク」は、接続が安全であることを示しています。しかし、その小さなアイコンの裏側には、デジタル証明書、暗号鍵、そして信頼された認証局からなる複雑なインフラが隠されています。
本ガイドでは、SSL/TLS証明書の仕組み、ファイル形式、そしてWebを安全に保つためのプロトコルについて分かりやすく解説します。
1. X.509証明書とは?
X.509は、公開鍵証明書の形式に関する国際標準規格です。一般的に「SSL証明書」と呼ばれているものは、正確にはこのX.509規格に基づいた証明書のことです。
X.509証明書は、公開鍵と**ID(ドメイン名や組織名など)**を紐付け、認証局 (CA) によってデジタル署名が施されています。
2. 一般的な証明書形式
証明書にはさまざまな拡張子があり、混乱を招きやすい部分です。主なエンコード方式は以下の2つです。
PEM (Privacy Enhanced Mail)
ApacheやNginxなどのWebサーバーで最も一般的に使用される形式です。
- 拡張子:
.pem,.crt,.cer,.key - 形式: Base64でエンコードされたASCIIテキスト。
-----BEGIN CERTIFICATE-----で始まります。
DER (Distinguished Encoding Rules)
証明書のバイナリ版です。Javaベースの環境やWindowsでよく使用されます。
- 拡張子:
.der,.cer - 形式: バイナリデータ。
PKCS#12 (PFX)
証明書、中間証明書、そして秘密鍵を一つのパスワード保護されたファイルにまとめた形式です。
- 拡張子:
.p12,.pfx - 用途: サーバー間での証明書の移動や、Windows/IISへのインストールに使用されます。
3. 証明書のライフサイクル:CSRから発行まで
証明書を取得する手順は以下の通りです。
- 秘密鍵の生成: サーバー上にのみ保存される秘密の鍵を作成します。
- CSR (証明書署名要求) の作成: 公開鍵と組織情報を含むファイルを作成します。
- 申請: CSRを 認証局 (CA)(Let's Encrypt, DigiCert, Sectigoなど)へ送信します。
- 検証: 認証局が、あなたがドメインの所有者であることを確認します。
- 発行: 認証局が証明書に署名し、あなたに送り返します。
4. 現代の標準:TLS 1.3 とその先へ
現在も「SSL証明書」と呼ばれていますが、古いSSLプロトコルはすでに脆弱で安全ではありません。現在は TLS (Transport Layer Security) が使用されています。
TLS 1.3: 現在の標準
2018年にリリースされたTLS 1.3は、以前のバージョンよりも高速で安全です。
- スピード: 接続を確立するための「ハンドシェイク」の回数を減らし、Webサイトの読み込みを高速化します。
- セキュリティ: MD5やSHA-1などの古い不安全な暗号アルゴリズムが廃止されました。
SNI (Server Name Indication)
SNIはTLSの拡張機能で、一つのサーバー(一つのIPアドレス)で、異なるドメインの複数のSSL証明書を運用することを可能にします。これにより、現在の共有ホスティングやCDNが実現されています。
OCSP (Online Certificate Status Protocol)
OCSPは、証明書が期限切れになる前に失効していないか(秘密鍵が盗まれていないか等)をブラウザがリアルタイムで確認するための仕組みです。
5. 拡張子まとめ表
| 拡張子 | 形式 | 内容 | 用途 |
|---|---|---|---|
| .pem / .crt | PEM (テキスト) | 証明書のみ | Linuxサーバー (Nginx/Apache) |
| .key | PEM (テキスト) | 秘密鍵 | Linuxサーバー (Nginx/Apache) |
| .p12 / .pfx | PKCS#12 (バイナリ) | 証明書+鍵+中間鍵 | Windows (IIS), Java |
| .csr | PEM (テキスト) | 署名要求 | 証明書の申請時 |
ベストプラクティス
- 秘密鍵を厳重に管理する:
.keyファイルが盗まれると、第三者があなたのサーバーになりすますことができてしまいます。 - Let's Encryptを活用する: ほとんどのWebサイトにとって、Let's Encryptの無料かつ自動更新される証明書は、有料のものと同等の安全性を持ちます。
- 有効期限を監視する: 証明書が切れると「この接続はプライベートではありません」というエラーが表示されます。事前に通知を受け取れるようにしましょう。
- 古いプロトコルを無効化する: TLS 1.2 および 1.3 のみを許可するようにサーバーを設定してください。
結論
SSL/TLS証明書は、インターネット上の信頼の基盤です。X.509やPEMといった技術用語は難しく感じるかもしれませんが、その本質はシンプルです。「自分が自分であることを証明し、ユーザーのデータを守る」ためのものです。
証明書の形式変換やハッシュ値の確認が必要ですか?専用ツールは準備中ですが、ファイルの整合性確認には当サイトの ハッシュ生成ツール をご利用いただけます。