SSL証明書とは
SSL証明書(セキュアソケットレイヤー証明書)はウェブサーバーのアイデンティティを認証し、ウェブサーバーとブラウザ間の暗号化接続を確立するデジタル証明書です。SSLはTLS(トランスポートレイヤーセキュリティ)に取って代わられましたが、「SSL証明書」という用語は広く使用され続けています。これらの証明書はHTTPSウェブサイトに不可欠で、訪問者にセキュリティを信号する南京錠のアイコンを表示します。SSL証明書の仕組み
ハンドシェイクプロセス
1. ブラウザが安全な接続をリクエスト
2. サーバーはSSL証明書+公開鍵を送信
3. ブラウザがCAで証明書を確認
4. ブラウザがセッションキーを作成し、公開鍵で暗号化
5. サーバーが秘密鍵で復号化
6. 暗号化されたセッションが確立
証明書タイプ
検証レベル別
| タイプ | 検証 | 時間 | 信頼レベル | ユースケース |
|---|---|---|---|---|
| DV(ドメイン) | ドメイン所有権のみ | 数分 | 基本 | ブログ、小規模サイト |
| OV(組織) | ビジネス確認 | 1-3日 | 中程度 | ビジネスウェブサイト |
| EV(拡張) | 広範な検証 | 1-2週間 | 最高 | 銀行、eコマース |
カバレッジ別
| タイプ | カバー | 例 |
|---|---|---|
| シングルドメイン | 1つのドメイン | example.com |
| ワイルドカード | ドメイン+すべてのサブドメイン | *.example.com |
| マルチドメイン(SAN) | 複数の特定ドメイン | example.com、example.org |
認証局(CA)
証明書を発行する信頼できる実体:
- 商用: DigiCert、Sectigo、GlobalSign
- 無料: Let's Encrypt、ZeroSSL
- クラウドプロバイダー: AWS Certificate Manager、Cloudflare
SSL証明書の取得
無料オプション(Let's Encrypt)
# Certbotを使用
sudo certbot --nginx -d example.com -d www.example.com
# 自動更新
sudo certbot renew --dry-run
商用購入プロセス
1. CSR(証明書署名要求)を生成
2. 認証局に送信
3. 検証を完了(DV/OV/EV)
4. 証明書をダウンロードしてインストール
DNS設定(CAAレコード)
どのCAが証明書を発行できるかを指定します:
example.com. CAA 0 issue "letsencrypt.org"
example.com. CAA 0 issuewild "letsencrypt.org"
証明書コンポーネント
| コンポーネント | 目的 |
|---|---|
| 公開鍵 | サーバーに送信されるデータを暗号化 |
| 秘密鍵 | データを復号化(秘密にしてください!) |
| 証明書チェーン | 信頼できるルートCAにリンク |
| 有効期限 | 有効期限日(通常90日~1年) |
ベストプラクティス
1. TLS 1.2+を使用: 古いプロトコルを無効化
2. 更新を自動化: 有効期限切れの停止を防止
3. 秘密鍵を保護: 共有または公開しない
4. 強力な暗号を使用: セキュアな暗号スイートを構成
5. HSTSを実装: HTTPS接続を強制
6. 有効期限を監視: 有効期限切れになる前にアラート
一般的な問題
- 証明書の不一致: ドメインが証明書と一致しない
- 期限切れ証明書: 有効期限が超過
- 不完全なチェーン: 中間証明書がない
- 混合コンテンツ: HTTPSページのHTTPリソース
SSL証明書はウェブセキュリティの基本で、転送中に機密データを保護する暗号化通信を有効にします。