共用方式為


SCHANNEL_CRED 結構 (schannel.h)

注意

SCHANNEL_CRED 結構已被取代。 您應該改用 SCH_CREDENTIALS

SCHANNEL_CRED 結構包含安全通道認證的數據。

語法

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 結構的指標數位。 每個指標都會指定要用於驗證應用程式的 私鑰 的憑證。 一般而言,此陣列包含應用程式所支援之每個金鑰交換方法的一個結構。

用戶端應用程式通常會傳入空白清單,並依賴安全通道來尋找適當的憑證,或視需要稍後建立憑證。

hRootStore

選擇性。 僅適用於伺服器應用程式。 處理包含應用程式所信任之證書頒發機構單位 (CA) 自我簽署跟證書的證書存儲。 只有需要客戶端驗證的伺服器端應用程式才會使用此成員。

cMappers

保留的。

aphMappers

保留的。

_HMAPPER

cSupportedAlgs

palgSupportedAlgs 陣列中的演算法數目。

palgSupportedAlgs

選擇性。 ALG_ID演算法識別碼陣列的指標,代表使用此結構取得之認證所支持的演算法。 如果 cSupportedAlgs 為零,或 palgSupportedAlgs 為 NULL,Schannel 會使用系統預設值。

目前不支援演算法標識碼 CALG_AESCALG_AES_128CALG_AES_256

grbitEnabledProtocols

選擇性。 包含位字串的 DWORD ,表示使用此結構取得之認證所支援的通訊協定。 如果這個成員為零,Schannel 會選取通訊協定。 針對新的開發,應用程式應該將 grbitEnabledProtocols 設定為零,並使用系統上預設啟用的通訊協定版本。

此成員只能由 Microsoft Unified Security Protocol Provider 安全性套件使用。

全域系統登錄設定的優先順序高於此值。 例如,如果登錄中停用SSL3,就無法使用此成員加以啟用。

此成員可以包含下列任何旗標。

意義
SP_PROT_PCT1_SERVER
0x00000001
私人通訊技術 1.0 伺服器端。
注意 過時。
 
SP_PROT_PCT1_CLIENT
0x00000002
私人通訊技術 1.0 用戶端。
注意 過時。
 
SP_PROT_SSL2_SERVER
0x00000004
安全套接字第 2.0 層伺服器端。 由SP_PROT_TLS1_SERVER取代。
重要 安全套接字第 2.0 層和傳輸層安全性 1.2 旗標互斥。
 
Windows 10 版本 1607 和 Windows Server 2016..:支持結束。
SP_PROT_SSL2_CLIENT
0x00000008
安全套接字第 2.0 層用戶端。 由SP_PROT_TLS1_CLIENT取代。
重要 安全套接字第 2.0 層和傳輸層安全性 1.2 旗標互斥。
 
Windows 10 版本 1607 和 Windows Server 2016..:支持結束。
SP_PROT_SSL3_SERVER
0x00000010
安全套接字第 3.0 層伺服器端。
SP_PROT_SSL3_CLIENT
0x00000020
安全套接字第 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 伺服器端。
重要 安全套接字第 2.0 層和傳輸層安全性 1.2 旗標互斥。
 
SP_PROT_TLS1_2_CLIENT
0x00000800
傳輸層安全性 1.2 用戶端。
重要 安全套接字第 2.0 層和傳輸層安全性 1.2 旗標互斥。
 
SP_PROT_TLS1_3_SERVER
0x00001000
傳輸層安全性 1.3 伺服器端。
重要 安全套接字第 2.0 層和傳輸層安全性 1.2 旗標互斥。
 
SP_PROT_TLS1_3_CLIENT
0x00002000
傳輸層安全性 1.3 用戶端。
重要 安全套接字第 2.0 層和傳輸層安全性 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

允許連線的最小大量加密加密強度,以位為單位。

如果這個成員為零,Schannel 會使用系統預設值。 如果此成員為 –1,則只會啟用 SSL3/TLS MAC 專用加密套件 (也稱為 NULL 加密) 。

dwMaximumCipherStrength

允許連線的最大大量加密加密強度,以位為單位。

如果這個成員為零,Schannel 會使用系統預設值。

如果此成員為 –1,則只會啟用 SSL3/TLS MAC 專用加密套件 (也稱為 NULL 加密) 。 在此情況下, dwMinimumCipherStrength 必須設定為 –1。

dwSessionLifespan

安全通道在其會話快取中保留會話的毫秒數。 經過此時間之後,客戶端與伺服器之間的任何新連線都需要新的安全通道會話。 將此成員的值設定為零,以使用預設值 36000000 毫秒 (十小時) 。

dwFlags

包含控制安全通道行為的位旗標。 這個成員可以是零或下列值的組合。

意義
SCH_CRED_AUTO_CRED_VALIDATION
0x00000020
僅限用戶端。

此旗標與SCH_CRED_MANUAL_CRED_VALIDATION相反,且屬於安全通道的預設行為。

SCH_CRED_CACHE_ONLY_URL_RETRIEVAL_ON_CREATE
0x00020000
指示 Schannel 在呼叫 AcquireCredentialsHandle (Schannel) 期間驗證指定的認證時,將CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL旗標傳遞至 CertGetCertificateChain 函式。

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
僅限用戶端。

安全通道會嘗試自動提供憑證鏈結以進行客戶端驗證。 這個值與SCH_CRED_NO_DEFAULT_CREDS相反。

SCH_SEND_AUX_RECORD
0x00200000
指示 Schannel 將數據分割成兩個不同的記錄,以在搭配對稱加密區塊鏈結模式搭配對稱加密套件使用時,反轉 SSL/TLS 通訊協定中的弱點。 For more information, see "Vulnerability in SSL/TLS Could Allow Information Disclosure" in the Help and Support Knowledge Base at http://support.microsoft.com/kb/2643584.

Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP 和 Windows XP/2000: 不支援此旗標。

SCH_SEND_ROOT_CERT
0x00040000
安全通道會將跟證書傳送為憑證訊息的一部分。
注意 安全通道用戶端或伺服器透過網路傳送的跟證書不受信任。 它應該根據跟證書的受信任哈希進行驗證。
 
SCH_USE_STRONG_CRYPTO
0x00400000
指示安全通道停用已知的弱式密碼編譯演算法、加密套件,以及可能啟用的 SSL/TLS 通訊協定版本,以取得更佳的互操作性。
SCH_USE_PRESHAREDKEY_ONLY
0x00800000
指示 Schannel 只選取 PSK 加密套件,並停用所有其他加密套件。

dwCredFormat

內核模式安全通道支援下列值。

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

若要自訂安全通道的證書吊銷錯誤報告,請使用下列旗標:

  • SCH_CRED_IGNORE_NO_REVOCATION_CHECK
  • SCH_CRED_IGNORE_REVOCATION_OFFLINE

當安全通道檢查憑證鏈結的撤銷狀態時,這些旗標會指示它分別忽略任何CRYPT_E_NO_REVOCATION_CHECK和CRYPT_E_REVOCATION_OFFLINE錯誤。 如果未設定證書吊銷旗標,則會忽略這些旗標。

規格需求

需求
最低支援的用戶端 Windows 8.1 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2012 R2 [僅限傳統型應用程式]
標頭 schannel.h (包含 Schnlsp.h)

另請參閱

QuerySecurityContextToken