SSL/TLS証明書: ウェブサイト接続のセキュリティ確保
· 12分で読めます
目次
SSL/TLS証明書とは?
SSL(Secure Sockets Layer)とその後継であるTLS(Transport Layer Security)は、ウェブブラウザとサーバー間の通信を暗号化する暗号化プロトコルです。ブラウザのアドレスバーに南京錠アイコンが表示され、URLに「https://」が含まれている場合、SSL/TLS証明書が機能しており、あなたとウェブサイト間を流れるデータを保護しています。
SSL/TLS証明書は、3つの重要な機能を果たすデジタル文書です:
- 暗号化 — データをスクランブルし、意図された受信者のみが読めるようにすることで、パスワード、クレジットカード番号、個人データなどの機密情報を盗聴者から保護します
- 認証 — サーバーが主張する通りの存在であることを証明し、攻撃者が正規のウェブサイトになりすます中間者攻撃を防ぎます
- 完全性 — 転送中にデータが改ざんされていないことを保証し、サーバーが送信したものとクライアントが受信したものが完全に一致することを保証します
「SSL」は日常的な言葉として今でも一般的に使用されていますが、SSLプロトコル自体は、SSL 2.0とSSL 3.0で発見されたセキュリティ脆弱性のため廃止されました。現代のウェブサイトは、大幅に強力な暗号化とセキュリティ機能を提供するTLS 1.2またはTLS 1.3を使用しています。ただし、歴史的な慣習により、証明書は依然として「SSL証明書」と広く呼ばれています。
🛠️ 自分で試してみましょう: 当社のSSLチェッカーツールを使用して、任意のウェブサイトの証明書ステータス、有効期限、セキュリティ設定を即座に確認できます。
SSL/TLS証明書の重要性は、セキュリティだけにとどまりません。Googleなどの検索エンジンは、HTTPSをランキングシグナルとして使用しているため、SSL証明書のないウェブサイトは検索結果で低くランク付けされる可能性があります。さらに、現代のブラウザは非HTTPSサイトに対して目立つ警告を表示するため、ユーザーの信頼とコンバージョン率に大きな影響を与える可能性があります。
TLSハンドシェイクの仕組み
暗号化されたデータが交換される前に、クライアント(あなたのブラウザ)とサーバーはTLSハンドシェイクを実行して安全な接続を確立します。このプロセスはミリ秒単位で行われますが、双方が安全に通信できることを保証するいくつかの高度なステップが含まれます。
TLSハンドシェイクを理解することで、接続の問題をトラブルシューティングし、シンプルな南京錠アイコンの背後にある複雑さを理解できます。典型的なTLS 1.2ハンドシェイク中に起こることは次のとおりです:
- Client Hello — ブラウザは、サポートするTLSバージョンと暗号スイートのリストと、後で鍵生成プロセスで使用される乱数をサーバーに送信します
- Server Hello — サーバーは、クライアントのリストから選択されたTLSバージョンと暗号スイート、独自の乱数、公開鍵を含むSSL/TLS証明書で応答します
- 証明書の検証 — ブラウザは、信頼された認証局(CA)のリストに対してサーバーの証明書を検証します。証明書の有効期間、ドメイン名の一致、失効ステータスを確認します
- 鍵交換 — クライアントはプリマスターシークレットを生成し、証明書からのサーバーの公開鍵で暗号化してサーバーに送信します。サーバーのみが秘密鍵でこれを復号化できます
- セッション鍵の生成 — クライアントとサーバーの両方が、2つの乱数とプリマスターシークレットを使用して、対称暗号化用の同一のセッション鍵を独立して生成します
- 完了メッセージ — 両者は暗号化された「完了」メッセージを送信して、ハンドシェイクが成功し、安全に通信できることを確認します
最新バージョンのTLS 1.3は、このプロセスを大幅に合理化します。ハンドシェイクを2回ではなく1回のラウンドトリップに削減し、接続速度を最大40%向上させます。また、古い脆弱な暗号スイートのサポートを削除し、デフォルトで前方秘匿性を実装しています。
プロのヒント: ブラウザの開発者ツールでTLSハンドシェイクの詳細を表示できます。Chromeでは、DevToolsを開き、Securityタブに移動し、「View certificate」をクリックして、完全な証明書チェーンとプロトコルの詳細を確認します。
ハンドシェイクは、セッションに使用される暗号スイートも確立します。暗号スイートは、暗号化、認証、メッセージの完全性がどのように処理されるかを定義するアルゴリズムの組み合わせです。現代の暗号スイートは、暗号化にAES-256、鍵交換にECDHE、ハッシュ化にSHA-256などのアルゴリズムを使用します。
証明書の種類と検証レベル
すべてのSSL/TLS証明書が同じように作られているわけではありません。検証レベル、カバレッジ範囲、想定される使用ケースが異なります。適切なタイプを選択することは、ウェブサイトのニーズ、予算、訪問者との間に確立したい信頼のレベルによって異なります。
検証レベル
認証局(CA)は、発行前に異なる量の検証を必要とする3つの主要な検証レベルを提供しています:
| 検証タイプ | 検証プロセス | 発行時間 | 最適な用途 |
|---|---|---|---|
| ドメイン検証(DV) | メール、DNS、またはHTTPを介してドメインの所有権のみを検証 | 数分から数時間 | ブログ、個人サイト、開発環境 |
| 組織検証(OV) | ドメインの所有権に加えて、事業者登録チェックを通じて組織のアイデンティティを検証 | 1〜3日 | ビジネスウェブサイト、企業サイト、イントラネット |
| 拡張検証(EV) | 組織の法的、物理的、運用上の存在を含む厳格な検証 | 1〜2週間 | Eコマース、銀行、高セキュリティアプリケーション |
ドメイン検証証明書は最も一般的で手頃なオプションです。ほとんどのウェブサイトに最適で、Let's Encryptなどのサービスを通じて無料で取得できます。CAは、DNSレコードを追加するか、管理者アドレスに送信されたメールに応答することで、ドメインを制御していることを単純に検証します。
組織検証証明書は、ビジネスが正当で法的に登録されていることを検証することで、追加の信頼層を提供します。組織名は証明書の詳細に表示され、ユーザーは南京錠アイコンをクリックして表示できます。
拡張検証証明書は、かつてブラウザのアドレスバーに組織名を緑色のハイライトで直接表示することで区別されていました。しかし、主要なブラウザはこの視覚的なインジケーターを削除したため、EV証明書はかつてほど視覚的に際立っていません。依然として最高レベルの検証を提供していますが、多くの組織にとってROIは低下しています。
カバレッジ範囲
証明書は、保護できるドメインとサブドメインの数も異なります:
- 単一ドメイン — 1つの特定のドメインを保護します(例:example.com)。明示的に含まれていない限り、www.example.comはカバーされません
- ワイルドカード — ドメインとそのすべての第1レベルサブドメインを保護します(例:*.example.comは、blog.example.com、shop.example.com、api.example.comをカバー)
- マルチドメイン(SAN) — サブジェクト代替名(SAN)を使用して、単一の証明書で複数の異なるドメインを保護します(例:example.com、example.org、example.net)
- マルチドメインワイルドカード — ワイルドカードとマルチドメイン機能を組み合わせて、複数のドメインとそのサブドメインを保護します
クイックヒント: ワイルドカード証明書は複数のサブドメインレベルをカバーしません。*.example.comの証明書はblog.example.comを保護しますが、api.blog.example.comは保護しません。そのためには、*.blog.example.comも必要です。
SSL/TLS証明書の構造
SSL/TLS証明書には、ブラウザとサーバーが信頼を確立し、安全な接続を確立するために使用するいくつかの重要なフィールドが含まれています。これらのコンポーネントを理解することで、問題をトラブルシューティングし、証明書を取得する際に情報に基づいた決定を下すことができます。
すべての証明書には、次の重要な情報が含まれています:
- サブジェクト — 証明書が発行されるエンティティ。通常はドメイン名であるコモンネーム(CN)を含みます
- 発行者 — 証明書を発行して署名した認証局
- 有効期間 — 証明書が有効な開始日と終了日。現代の証明書の最大有効期間は398日(約13か月)です
- 公開鍵 — TLSハンドシェイク中の暗号化と鍵交換に使用される暗号化公開鍵
- 署名アルゴリズム — CAが証明書に署名するために使用したアルゴリズム(例:SHA-256 with RSA)
- サブジェクト代替名(SAN) — 証明書でカバーされる追加のドメインとサブドメイン
- 鍵の使用法 — 証明書が使用できる用途を指定します(例:デジタル署名、鍵暗号化)
- 証明書ポリシー — CAのポリシーと検証手順への参照
任意のブラウザで南京錠アイコンをクリックし、「証明書」または「証明書を表示」を選択することで、証明書の詳細を表示できます。これにより、通常3つのレベルを含む完全な証明書チェーンが表示されます:
- エンドエンティティ証明書 — あなたのウェブサイトの証明書
- 中間証明書 — 証明書をルートにリンクする1つ以上の証明書
- ルート証明書 — ブラウザとオペレーティングシステムにプリインストールされているCAの信頼されたルート証明書
証明書チェーンは信頼を確立するために重要です。ブラウザは証明書を直接信頼するのではなく、ルートCAを信頼し、証明書は中間証明書を通じてその信頼された機関によって署名されたことを証明します。
プロのヒント: 中間証明書を含む完全な証明書チェーンを送信するようにウェブサーバーを常に設定してください。中間証明書の欠落は、特にすべての中間証明書がキャッシュされていない可能性のあるモバイルデバイスで、SSLエラーの一般的な原因です。
SSL証明書の取得
SSL/TLS証明書の取得は、Let's Encryptなどの取り組みと改善された自動化ツールのおかげで、近年大幅に簡単で手頃になりました。ウェブサイトを保護するための包括的なガイドは次のとおりです。
無料の証明書オプション
Let's Encryptは、無料の自動化されたドメイン検証証明書を提供することで、SSL/TLSに革命をもたらしました。現在、世界最大の認証局であり、数億のウェブサイトを保護しています。証明書は90日間有効で、Certbotなどのツールを使用して自動的に更新できます。
Let's Encrypt証明書を取得するには:
- サーバーにCertbotまたは別のACMEクライアントをインストールします
- ウェブサーバー(Apache、Nginxなど)の証明書リクエストコマンドを実行します
- Certbotは自動的にドメインの所有権を検証し、証明書をインストールします
- 60日ごとに実行される自動更新を設定します
ほとんどの主要なホスティングプロバイダーは、コントロールパネルを通じてワンクリックSSLインストールを提供しており、多くの場合、バックグラウンドでLet's Encryptを使用しています。これには、cPanel、Plesk、AWS、DigitalOcean、Cloudflareなどのクラウドプロバイダーなどのプラットフォームが含まれます。
商用認証局
無料の証明書はほとんどの使用ケースで完璧に機能しますが、次の場合は