TLS の概要 - SSL (Schannel SSP)

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows 10

IT 担当者向けのこのトピックでは、トランスポート層セキュリティ (TLS)、Secure Sockets Layer (SSL)、データグラム トランスポート層セキュリティ (DTLS) の各認証プロトコルを実装する、Windows Server 2012 R2、Windows Server 2012、Windows 8.1、および Windows 8 用 Schannel セキュリティ サポート プロバイダー (SSP) の機能の変更点について説明します。

Schannel は、SSL、TLS、および DTLS という標準的なインターネット認証プロトコルを実装するセキュリティ サポート プロバイダー (SSP) です。 セキュリティ サポート プロバイダー インターフェイス (SSPI) は、認証など、セキュリティ関係の機能を実行するために Windows システムで用いられる API の 1 種です。 SSPI は、Schannel SSP をはじめとする数種類のセキュリティ サポート プロバイダー (SSP) に共通のインターフェイスとして機能します。

Microsoft の Schannel SSP での TLS と SSL の実装の詳細については、TLS/SSL のテクニカル リファレンス (2003) に関するページを参照してください。

TLS/SSL (Schannel SSP) の機能

以下では、Schannel SSP での TLS の機能について説明します。

TLS セッションの再開

Schannel セキュリティ サポート プロバイダーのコンポーネントであるトランスポート層セキュリティ (TLS) プロトコルは、信頼されていないネットワーク上のアプリケーション間で送信されるデータを保護するために使用します。 TLS/SSL を使うと、サーバーとクライアント コンピューターを認証できるほか、認証された当事者間のメッセージを暗号化できます。

TLS をサーバーに接続するデバイスは、セッションの有効期限のために頻繁に再接続する必要があります。 Windows 8.1 および Windows Server 2012 R2 では、RFC 5077 (サーバー側の状態を使用しない TLS セッションの再開) をサポートするようになりました。 この変更に伴い、Windows Phone および Windows RT デバイスに次のような効果がもたらされました。

  • サーバー上のリソース使用量の削減

  • 使用帯域幅の削減によるクライアント接続の効率の向上

  • 接続の再開のための TLS ハンドシェイクに費やされる時間の短縮

Note

RFC 5077 のクライアント側の実装は、Windows 8 で追加されました。

ステートレスな TLS セッションの再開の詳細については、IETF のドキュメントの RFC 5077 を参照してください。

アプリケーション プロトコルのネゴシエーション

Windows Server 2012 R2 および Windows 8.1 では、クライアント側の TLS アプリケーション プロトコルのネゴシエーションがサポートされます。そのため、アプリケーションは、HTTP 2.0 標準開発の一部としてプロトコルを利用することができ、ユーザーは、SPDY プロトコルを実行するアプリを使用して Twitter、Google などのオンライン サービスにアクセスできます。

動作のしくみ

クライアント アプリケーションおよびサーバー アプリケーションは、優先順位の降順に指定されたサポートされているアプリケーション プロトコル ID の一覧を送信することで、アプリケーション プロトコルのネゴシエーション拡張を有効にします。 TLS クライアントは、ClientHello メッセージにアプリケーション レイヤー プロトコル ネゴシエーション (ALPN) 拡張と共にクライアントでサポートされるプロトコルの一覧を含めることによって、アプリケーション プロトコルのネゴシエーションをサポートしていることを示します。

TLS クライアントが要求をサーバーに送信すると、TLS サーバーは、サポートされているプロトコルの一覧を読み取り、クライアント側でもサポートされるアプリケーション プロトコルのうち最も優先されるアプリケーション プロトコルを判定します。 該当するプロトコルが見つかると、サーバーは、選択したプロトコルの ID を含む応答を返し、通常どおりにハンドシェイクを続行します。 共通のアプリケーション プロトコルがない場合、サーバーは、致命的なハンドシェイク エラー警告を送信します。

クライアント認証のための信頼された発行者の管理

SSL または TLS を使用したクライアント コンピューターの認証が必要な場合は、信頼された証明書の発行者の一覧を送信するようにサーバーを構成できます。 この一覧には、サーバーが信頼する証明書の発行者のセットが含まれます。これが、複数の証明書が存在する場合にクライアント コンピューターがどのクライアント証明書を選択するかについてのヒントとなります。 さらに、構成されている信頼された発行者の一覧に対して、クライアント コンピューターがサーバーに送信する証明書チェーンを検証する必要があります。

Windows Server 2012 および Windows 8 以前では、(HTTP.sys と IIS を含む) Schannel SSP を使用するアプリケーションやプロセスは、クライアント認証のためにサポートしている信頼された発行者の一覧を証明書信頼リスト (CTL) を介して提供することができました。

Windows Server 2012 および Windows 8 では、基になる認証プロセスに変更が加えられ、次のようになりました。

  • CTL ベースの信頼された発行者の一覧の管理はサポートされなくなりました。

  • 信頼された発行者の一覧を送信する動作は既定でオフに設定されます。SendTrustedIssuerList レジストリ キーの既定値は、1 ではなく 0 です (既定でオフ)。

  • 以前のバージョンの Windows オペレーティング システムとの互換性は維持されます。

Note

クライアント アプリケーションによってシステム マッパーが有効になっていて、SendTrustedIssuers を構成していると、そのシステム マッパーによって CN=NT Authority が発行者の一覧に追加されます。

これの利点

Windows Server 2012 より、CTL の使用は証明書ストアベースの実装で置き換えられました。 これにより、certutil.exe などのコマンド ライン ツールや PowerShell プロバイダーの既存の証明書管理コマンドレットを使用して、管理がしやすくなりました。

Schannel SSP でサポートされる信頼された証明機関の一覧の最大サイズ (16 KB) は Windows Server 2008 R2 の場合と同じですが、Windows Server 2012 ではクライアント認証の発行者のための新しい専用の証明書ストアが用意されるため、関係のない証明書はメッセージに含まれません。

しくみ

Windows Server 2012 では、信頼された発行者の一覧は証明書ストアを使用して構成されます。その 1 つは既定のグローバル コンピューターの証明書ストア、もう 1 つはサイトごとにオプションの証明書ストアです。 一覧のソースは、次のように決定されます。

  • サイトに対して特定の資格情報ストアが構成されている場合は、それがソースとして使用されます。

  • アプリケーションで定義されたストアに証明書が存在しない場合、Schannel により、ローカル コンピューター上のクライアント認証の発行者ストアが調べられ、証明書が存在すればそのストアがソースとして使用されます。 どちらのストアにも証明書が見つからない場合は、信頼されたルート ストアが調べられます。

  • グローバル ストアとローカル ストアのどちらにも証明書が含まれていない場合、Schannel プロバイダーは、信頼されたルート証明書機関ストアを信頼された発行者の一覧のソースとして使用します (これは、Server 2008 R2 Windows の動作です)。

使用された信頼されたルート証明書機関ストアにルート (自己署名) と証明機関 (CA) の両方の発行者証明書が含まれている場合、既定で CA 発行者証明書のみがサーバーに送信されます。

信頼された発行者の証明書ストアを使用するように Schannel を構成する方法

Windows Server 2012 の Schannel SSP アーキテクチャでは、既に説明したように、既定でストアを使用して信頼された発行者の一覧が管理されます。 従来と同様、Certutil などのコマンド ライン ツールだけでなく、PowerShell プロバイダーの既存の証明書管理コマンドレットを使用して、証明書を管理することができます。

PowerShell プロバイダーを使用して証明書を管理する方法の詳細については、Windows での AD CS 管理コマンドレットに関するページを参照してください。

証明書ユーティリティを使用して証明書を管理する方法の詳細については、certutil.exe に関するページを参照してください。

Schannel の資格情報について定義されるデータ (アプリケーションによって定義されるストアを含む) の詳細については、SCHANNEL_CRED 構造 (Windows) に関するページを参照してください。

信頼モードの既定値

Schannel プロバイダーでは、3 種類のクライアント認証信頼モードがサポートされます。 信頼モードは、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel の下の REG_DWORD "ClientAuthTrustMode" によって制御されるシステム全体の設定であり、クライアントの証明書チェーンの検証を実行する方法を制御します。

信頼モード 説明
0 コンピューター信頼 (既定値) 信頼された発行者の一覧内の証明書によってクライアント証明書が発行される必要があります。
1 排他的ルート信頼 呼び出し元によって指定された信頼された発行者ストアに含まれているルート証明書にクライアント証明書をチェーンする必要があります。 さらに、信頼された発行者の一覧内の発行者から証明書を発行する必要があります。
2 排他的 CA 信頼 中間 CA 発行者または呼び出し元によって指定された信頼された発行者ストアに含まれているルート証明書にクライアント証明書をチェーンする必要があります。

信頼された発行者の構成の問題によって発生する認証エラーの詳細については、サポート技術情報の記事 280256 を参照してください。

TLS が Server Name Indicator (SNI) 拡張をサポート

Server Name Indication は SSL プロトコルと TLS プロトコルを拡張する機能で、1 台のサーバーでいくつもの仮想イメージを実行している場合にサーバーを適切に認識できるようにします。 クライアント コンピューターとサーバーの間で通信のセキュリティを確保するために、クライアント コンピューターはサーバーにデジタル証明書を要求します。 その要求に応答してサーバーから証明書が送付されると、クライアント コンピューターはその証明書を確認し、通信の暗号化に使用します。その後は通常の要求と応答のやり取りとなります。 ところが、仮想ホスティングでは、証明書がそれぞれ異なる何種類ものドメインが 1 台のサーバーでホストされていることがあります。 このような場合、クライアント コンピューターに送信する証明書をサーバーで事前に認識することができません。 SNI を利用することで、クライアント コンピューターが対象となるドメインをプロトコル内で事前に通知できるため、サーバーが証明書を正しく選択できるようになります。

これの利点

この追加機能によって、次のことが可能になります。

  • 1 つの IP とポートの組み合わせで SSL Web サイトを多数ホストできます。

  • 1 台の Web サーバーに複数の SSL Web サイトをホストする場合に、メモリ使用量を削減できます

  • SSL Web サイトに同時接続できるユーザーの数を増やせます。

  • クライアント認証プロセスで正しい証明書を選択する際にコンピューター インターフェイス上でエンド ユーザーにヒントを出すことができます。

動作のしくみ

Schannel SSP は、クライアントに許可した接続状態に関するメモリ内キャッシュを保持します。 これによって、クライアント コンピューターは次にサイトを訪問したときに SSL ハンドシェイク処理を開始することなく、SSL サーバーにすばやく再接続できます。 このように証明書管理を効率的に用いることによって、1 台の Windows Server 2012 で以前のオペレーティング システム バージョンよりも多くのサイトをホストできます。

証明書の発行者名の候補一覧を作成し、エンド ユーザーに証明書を選択する際のヒントを提供できるため、エンド ユーザーが証明書を選択するうえで利便性が向上しています。 この一覧は、グループ ポリシーを使って構成できます。

データグラム トランスポート層セキュリティ (DTLS)

Schannel セキュリティ サポート プロバイダーに DTLS バージョン 1.0 プロトコルが追加されています。 DTLS プロトコルは、データグラム プロトコルの通信プライバシーを保護するものです。 クライアントとサーバーのアプリケーションはこのプロトコルにより、盗聴、改ざん、メッセージ偽造などを防ぐように設計された方法で通信できます。 DTLS プロトコルは、トランスポート層セキュリティ (TLS) プロトコルを基にしたものであり、TLS と同等のセキュリティ保証を提供します。これにより、IPsec を使う必要性が低下すると共に、アプリケーション層のセキュリティ プロトコルのカスタム設計が可能になります。

これの利点

データグラムは、ゲームやセキュリティが確保されたビデオ会議など、ストリーミング メディアに広く使われています。 Schannel プロバイダーに DTLS プロトコルを追加したことにより、クライアント コンピューターとサーバー間の通信セキュリティの確保に従来の Windows SSPI モデルを使うことができます。 DTLS は、セキュリティ技術を新たに開発する必要を最小限に抑えると共に、コードとインフラストラクチャをできるだけ再利用する目的から、可能な限り TLS に似せて設計してあります。

動作のしくみ

DTLS over UDP を使用するアプリケーションでは、Windows Server 2012 と Windows 8 で SSPI モデルを使用できます。 一部の暗号については、TLS の構成とほぼ同じやり方で構成に利用できます。 Schannel では引き続き、FIPS 140 認定を用いた CNG 暗号化プロバイダーを使います。この暗号化プロバイダーは、Windows Vista ではじめて導入されたものです。

非推奨の機能

Windows Server 2012 および Windows 8 用の Schannel SSP では、非推奨の機能はありません。

その他の参照情報