次の方法で共有


SCHANNEL_CRED構造体 (schannel.h)

手記

SCHANNEL_CRED 構造体は非推奨です。 代わりに SCH_CREDENTIALS を使用する必要があります。

SCHANNEL_CRED 構造体には、Schannel 資格情報のデータが含まれています。

構文

typedef struct _SCHANNEL_CRED {
  DWORD          dwVersion;
  DWORD          cCreds;
  PCCERT_CONTEXT *paCred;
  HCERTSTORE     hRootStore;
  DWORD          cMappers;
  _HMAPPER       **aphMappers;
  struct         _HMAPPER;
  DWORD          cSupportedAlgs;
  ALG_ID         *palgSupportedAlgs;
  DWORD          grbitEnabledProtocols;
  DWORD          dwMinimumCipherStrength;
  DWORD          dwMaximumCipherStrength;
  DWORD          dwSessionLifespan;
  DWORD          dwFlags;
  DWORD          dwCredFormat;
} SCHANNEL_CRED, *PSCHANNEL_CRED;

メンバーズ

dwVersion

SCHANNEL_CRED_VERSIONに設定します。

cCreds

paCred 配列内の構造体の数。

paCred

CERT_CONTEXT 構造体へのポインターの配列。 各ポインターは、アプリケーションの認証に使用する 秘密キーを含む証明書を指定します。 通常、この配列には、アプリケーションでサポートされているキー交換メソッドごとに 1 つの構造体が含まれます。

多くの場合、クライアント アプリケーションは空のリストを渡し、Schannel に依存して適切な証明書を見つけるか、必要に応じて後で証明書を作成します。

hRootStore

随意。 サーバー アプリケーションに対してのみ有効です。 アプリケーションによって信頼された証明機関 (CA) に 自己署名 ルート証明書を含む証明書ストアへの処理。 このメンバーは、クライアント認証を必要とするサーバー側アプリケーションでのみ使用されます。

cMappers

引っ込み思案。

aphMappers

引っ込み思案。

_HMAPPER

cSupportedAlgs

palgSupportedAlgs 配列内のアルゴリズムの数。

palgSupportedAlgs

随意。 この構造体を使用して取得された資格情報で行われた接続でサポートされるアルゴリズムを表す、ALG_ID アルゴリズム識別子の配列へのポインター。 cSupportedAlgs がゼロであるか、palgSupportedAlgs が NULL場合、Schannel はシステムの既定値を使用します。

現在、アルゴリズム識別子 CALG_AESCALG_AES_128、および CALG_AES_256 はサポートされていません。

grbitEnabledProtocols

随意。 この構造体を使用して取得された資格情報で行われた接続でサポートされるプロトコルを表すビット文字列を含む DWORD。 このメンバーが 0 の場合、Schannel はプロトコルを選択します。 新しい開発では、アプリケーション grbitEnabledProtocols を 0 に設定し、既定でシステムで有効になっているプロトコル バージョンを使用する必要があります。

このメンバーは、Microsoft Unified Security Protocol Provider セキュリティ パッケージでのみ使用されます。

グローバル システム レジストリ設定は、この値よりも優先されます。 たとえば、レジストリで SSL3 が無効になっている場合、このメンバーを使用して有効にすることはできません。

このメンバーには、次のいずれかのフラグを含めることができます。

価値 意味
SP_PROT_PCT1_SERVER
0x00000001
Private Communications Technology 1.0 サーバー側。
メモ 廃止されました。
 
SP_PROT_PCT1_CLIENT
0x00000002
プライベート 通信テクノロジ 1.0 クライアント側。
メモ 廃止されました。
 
SP_PROT_SSL2_SERVER
0x00000004
Secure Sockets Layer 2.0 サーバー側。 SP_PROT_TLS1_SERVERに置き換えられます。
重要 Secure Sockets Layer 2.0 フラグとトランスポート層セキュリティ 1.2 フラグは相互に排他的です。
 
Windows 10 バージョン 1607 および Windows Server 2016.: サポートは終了します。
SP_PROT_SSL2_CLIENT
0x00000008
Secure Sockets Layer 2.0 クライアント側。 SP_PROT_TLS1_CLIENTに置き換えられます。
重要 Secure Sockets Layer 2.0 フラグとトランスポート層セキュリティ 1.2 フラグは相互に排他的です。
 
Windows 10 バージョン 1607 および Windows Server 2016.: サポートは終了します。
SP_PROT_SSL3_SERVER
0x00000010
Secure Sockets Layer 3.0 サーバー側。
SP_PROT_SSL3_CLIENT
0x00000020
Secure Sockets Layer 3.0 クライアント側。
SP_PROT_TLS1_SERVER
0x00000040
トランスポート層セキュリティ 1.0 サーバー側。
SP_PROT_TLS1_CLIENT
0x00000080
トランスポート層セキュリティ 1.0 クライアント側。
SP_PROT_TLS1_0_SERVER
SP_PROT_TLS1_SERVER
トランスポート層セキュリティ 1.0 サーバー側。
SP_PROT_TLS1_0_CLIENT
SP_PROT_TLS1_CLIENT
トランスポート層セキュリティ 1.0 クライアント側。
SP_PROT_TLS1_1_SERVER
0x00000100
トランスポート層セキュリティ 1.1 サーバー側。
SP_PROT_TLS1_1_CLIENT
0x00000200
トランスポート層セキュリティ 1.1 クライアント側。
SP_PROT_TLS1_2_SERVER
0x00000400
トランスポート層セキュリティ 1.2 サーバー側。
重要 Secure Sockets Layer 2.0 フラグとトランスポート層セキュリティ 1.2 フラグは相互に排他的です。
 
SP_PROT_TLS1_2_CLIENT
0x00000800
トランスポート層セキュリティ 1.2 クライアント側。
重要 Secure Sockets Layer 2.0 フラグとトランスポート層セキュリティ 1.2 フラグは相互に排他的です。
 
SP_PROT_TLS1_3_SERVER
0x00001000
トランスポート層セキュリティ 1.3 サーバー側。
重要 Secure Sockets Layer 2.0 フラグとトランスポート層セキュリティ 1.2 フラグは相互に排他的です。
 
SP_PROT_TLS1_3_CLIENT
0x00002000
トランスポート層セキュリティ 1.3 クライアント側。
重要 Secure Sockets Layer 2.0 フラグと Transport Layer Security 1.3 フラグは相互に排他的です。
 
SP_PROT_DTLS_SERVER
0x00010000
データグラム トランスポート層セキュリティ サーバー側。

Windows 8 および Windows Server 2012: サポートが追加されました。

SP_PROT_DTLS_CLIENT
0x00020000
データグラム トランスポート層セキュリティ クライアント側。

Windows 8 および Windows Server 2012: サポートが追加されました。

SP_PROT_DTLS1_0_SERVER
SP_PROT_DTLS1_SERVER
データグラム トランスポート層セキュリティ 1.0 サーバー側。

Windows 8 および Windows Server 2012: サポートが追加されました。

SP_PROT_DTLS1_0_CLIENT
SP_PROT_DTLS1_CLIENT
データグラム トランスポート層セキュリティ 1.0 クライアント側。

Windows 8 および Windows Server 2012: サポートが追加されました。

SP_PROT_DTLS1_2_SERVER
0x00040000
データグラム トランスポート層セキュリティ 1.2 サーバー側。

Windows 10 バージョン 1607 および Windows Server 2016.: サポートが追加されました。

SP_PROT_DTLS1_2_CLIENT
0x00080000
データグラム トランスポート層セキュリティ 1.2 クライアント側。

Windows 10 バージョン 1607 および Windows Server 2016.: サポートが追加されました。

SP_PROT_DTLS1_X_SERVER
データグラム トランスポート層セキュリティでサポートされているすべてのバージョンのサーバー側。

Windows 10 バージョン 1607 および Windows Server 2016.: サポートが追加されました。

SP_PROT_DTLS1_X_CLIENT
データグラム トランスポート層セキュリティでサポートされているすべてのバージョンのクライアント側。

Windows 10 バージョン 1607 および Windows Server 2016.: サポートが追加されました。

dwMinimumCipherStrength

接続に許可される最小一括暗号化暗号強度 (ビット単位)。

このメンバーが 0 の場合、Schannel はシステムの既定値を使用します。 このメンバーが –1 の場合、SSL3/TLS MAC 専用暗号スイート (NULL 暗号とも呼ばれます) のみが有効になります。

dwMaximumCipherStrength

接続に許可される最大一括暗号化暗号強度 (ビット単位)。

このメンバーが 0 の場合、Schannel はシステムの既定値を使用します。

このメンバーが –1 の場合、SSL3/TLS MAC 専用暗号スイート (NULL 暗号とも呼ばれます) のみが有効になります。 この場合、dwMinimumCipherStrength –1 に設定する必要があります。

dwSessionLifespan

Schannel がセッション キャッシュにセッションを保持するミリ秒数。 この時間が経過すると、クライアントとサーバー間の新しい接続には、新しい Schannel セッションが必要になります。 既定値の 360000000 ミリ秒 (10 時間) を使用するには、このメンバーの値を 0 に設定します。

dwFlags

Schannel の動作を制御するビット フラグが含まれています。 このメンバーには、0 または次の値の組み合わせを指定できます。

価値 意味
SCH_CRED_AUTO_CRED_VALIDATION
0x00000020
クライアントのみ。

このフラグはSCH_CRED_MANUAL_CRED_VALIDATIONの反対であり、Schannel の既定の動作の一部です。

SCH_CRED_CACHE_ONLY_URL_RETRIEVAL_ON_CREATE
0x00020000
AcquireCredentialsHandle (Schannel)の呼び出し中に指定された資格情報を検証するときに、CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL フラグを CertGetCertificateChain 関数に渡すように Schannel に指示します。

Windows Server 2003 および Windows XP/2000: このフラグはサポートされていません。

SCH_CRED_DISABLE_RECONNECTS
0x00000080
サーバーのみ。

このフラグが設定されている場合、この資格情報を使用して実行された完全なハンドシェイクでは、再接続は許可されません。 キャッシュ エントリが作成されるため、後で ApplyControlToken 関数を使用してセッションを再開できます。

SCH_CRED_IGNORE_NO_REVOCATION_CHECK
0x00000800
失効した証明書をチェックするときは、CRYPT_E_NO_REVOCATION_CHECKエラーを無視します。 その他の制限については、「解説」を参照してください。
SCH_CRED_IGNORE_REVOCATION_OFFLINE
0x00001000
失効した証明書をチェックするときは、CRYPT_E_REVOCATION_OFFLINEエラーを無視します。 その他の制限については、「解説」を参照してください。
SCH_CRED_MANUAL_CRED_VALIDATION
0x00000008
クライアントのみ。

Schannel が受信したサーバー証明書チェーンを検証できないようにします。

SCH_CRED_NO_DEFAULT_CREDS
0x00000010
クライアントのみ。

Schannel がクライアント認証用の証明書チェーンを自動的に提供することを防ぎます。

SCH_CRED_NO_SERVERNAME_CHECK
0x00000004
クライアントのみ。

Schannel が、指定されたターゲット名と、サーバー証明書のサブジェクト名 比較できないようにします。

SCH_CRED_NO_SYSTEM_MAPPER
0x00000002
サーバーのみ。

Schannel が組み込みのシステム証明書マッピング関数を使用して、クライアント証明書 をユーザー アカウントにマップできないようにします。

SCH_CRED_REVOCATION_CHECK_CHAIN
0x00000200
証明書チェーンを検証する場合は、すべての証明書の失効を確認します。 その他の制限については、「解説」を参照してください。
SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT
0x00000400
証明書チェーンを検証するときは、ルートで失効を確認しないでください。 その他の制限については、「解説」を参照してください。
SCH_CRED_REVOCATION_CHECK_END_CERT
0x00000100
証明書チェーンを検証する場合は、最後の証明書のみを確認して失効を確認します。 その他の制限については、「解説」を参照してください。
SCH_CRED_USE_DEFAULT_CREDS
0x00000040
クライアントのみ。

Schannel は、クライアント認証用の証明書チェーンを自動的に提供しようとします。 この値は、SCH_CRED_NO_DEFAULT_CREDSの反対です。

SCH_SEND_AUX_RECORD
0x00200000
暗号化ブロック チェーン モードを使用して対称暗号スイートで使用する場合、SSL/TLS プロトコルに存在する弱点に対抗するために、暗号化するデータを 2 つの別個のレコードに分割するように Schannel に指示します。 詳細については、「SSL/TLS の脆弱性により、情報漏えいがされる可能性がある」を参照してください。

Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP および Windows XP/2000: このフラグはサポートされていません。

SCH_SEND_ROOT_CERT
0x00040000
Schannel は、証明書メッセージの一部としてルート証明書を送信します。
Schannel クライアントまたはサーバーによってネットワーク経由で送信されるルート証明書は信頼されません。 ルート証明書の信頼されたハッシュに対して検証する必要があります。
 
SCH_USE_STRONG_CRYPTO
0x00400000
相互運用性を向上させるために有効にできる既知の脆弱な暗号アルゴリズム、暗号スイート、SSL/TLS プロトコル バージョンを無効にするよう Schannel に指示します。
SCH_USE_PRESHAREDKEY_ONLY
0x00800000
PSK 暗号スイートのみを選択し、他のすべての暗号スイートを無効にするように Schannel に指示します。

dwCredFormat

カーネル モード Schannel では、次の値がサポートされます。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP および Windows XP/2000: このフラグはサポートされていないため、ゼロにする必要があります。

価値 意味
SCH_CRED_FORMAT_CERT_HASH
0x00000001
渡される SCHANNEL_CRED 構造体の paCred メンバーは、証明書の拇印を含む長さ 20 のバイト配列へのポインターである必要があります。 証明書は、ローカル コンピューターの "MY" ストアにあると見なされます。
SCH_CRED_FORMAT_CERT_HASH_STORE
0x00000002
SCHANNEL_CRED 構造体の paCred メンバーは、SCHANNEL_CERT_HASH_STORE 構造体を指します。

備考

次の証明書失効フラグは相互に排他的です。

  • SCH_CRED_REVOCATION_CHECK_CHAIN
  • SCH_CRED_REVOCATION_CHECK_END_CERT
  • SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT

Schannel の証明書失効エラーレポートをカスタマイズするには、次のフラグを使用します。

  • SCH_CRED_IGNORE_NO_REVOCATION_CHECK
  • SCH_CRED_IGNORE_REVOCATION_OFFLINE

Schannel が証明書チェーンの失効状態を確認すると、これらのフラグは、CRYPT_E_NO_REVOCATION_CHECKエラーとCRYPT_E_REVOCATION_OFFLINEエラーをそれぞれ無視するように指示します。 証明書失効フラグが設定されていない場合、これらのフラグは無視されます。

必要条件

要件 価値
サポートされる最小クライアント Windows 8.1 [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2012 R2 [デスクトップ アプリのみ]
ヘッダー schannel.h (Schnlsp.h を含む)

関連項目

QuerySecurityContextToken