TLS SSL (Schannel SSP) の概要

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

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

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 (Server-Side 状態なしの 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 プロトコルを実行するアプリを使用して Google や Twitter などのオンラインサービスにアクセスできます。

動作のしくみ

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

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

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

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

Windows Server 2012 および Windows 8 する前に、Schannel SSP (HTTP.sys および IIS を含む) を使用するアプリケーションまたはプロセスは、証明書信頼リスト (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 プロバイダーは信頼された発行者の一覧のソースとして信頼された ルート証明書機関 ストアを使用します。 (これは Windows Server 2008 R2 の動作です)。

使用された 信頼されたルート証明書 authority ストアにルート (自己署名) と証明機関 (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 では、非推奨の機能はありません。

その他の参照情報