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 結構的指標數位。 每個指標都會指定一個憑證,其中包含要用於驗證應用程式的 私鑰。 一般而言,此陣列包含應用程式所支援之每個金鑰交換方法的一個結構。
用戶端應用程式通常會傳入空的清單,並視 Schannel 而定,以尋找適當的憑證,或視需要稍後建立憑證。
hRootStore
自選。 僅適用於伺服器應用程式。 處理包含應用程式所信任
cMappers
保留。
aphMappers
保留。
_HMAPPER
cSupportedAlgs
palgSupportedAlgs 陣列中的演算法數目。
palgSupportedAlgs
自選。
ALG_ID 演算法識別碼陣列的指標,表示使用此結構取得之認證所支持的演算法。 如果 cSupportedAlgs
目前不支援演算法識別碼 CALG_AES、CALG_AES_128和 CALG_AES_256。
grbitEnabledProtocols
自選。 DWORD,其中包含一個位字串,代表使用這個結構取得之認證所支援的通訊協定。 如果此成員為零,則 Schannel 會選取通訊協定。 針對新的開發,應用程式應該將 grbitEnabledProtocols 設為零,並使用預設在系統上啟用的通訊協定版本。
這個成員只能由Microsoft統一安全性通訊協定提供者 安全性套件使用。
全域系統登錄設定的優先順序高於此值。 例如,如果登錄中停用SSL3,就無法使用此成員來啟用它。
這個成員可以包含下列任何旗標。
dwMinimumCipherStrength
允許連線的最低大量加密加密強度,以位為單位。
如果這個成員為零,Schannel 會使用系統預設值。 如果此成員為 –1,則只會啟用 SSL3/TLS MAC 專用加密套件(也稱為 NULL 加密)。
dwMaximumCipherStrength
允許連線的最大大量加密加密強度,以位為單位。
如果這個成員為零,Schannel 會使用系統預設值。
如果此成員為 –1,則只會啟用 SSL3/TLS MAC 專用加密套件(也稱為 NULL 加密)。 在此情況下,dwMinimumCipherStrength 必須設定為 –1。
dwSessionLifespan
Schannel 在其會話快取中保留會話的毫秒數。 經過此時間之後,客戶端與伺服器之間的任何新連線都需要新的 Schannel 會話。 將此成員的值設定為零,以使用預設值 36000000 毫秒(十小時)。
dwFlags
包含控制安全通道行為的位旗標。 這個成員可以是零或下列值的組合。
價值 | 意義 |
---|---|
|
僅限用戶端。
此旗標與SCH_CRED_MANUAL_CRED_VALIDATION相反,且屬於安全通道的預設行為。 |
|
指示 Schannel 在呼叫 AcquireCredentialsHandle (Schannel)時,將CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL旗標傳遞至 CertGetCertificateChain 函式。
Windows Server 2003 和 Windows XP/2000:不支援此旗標。 |
|
僅限伺服器。
如果已設定此旗標,則使用此認證執行的完整交握將不允許重新連線。 系統會建立快取專案,以便稍後使用 applyControlToken 函式,讓會話可以繼續。 |
|
檢查撤銷的憑證時,請忽略CRYPT_E_NO_REVOCATION_CHECK錯誤。 如需其他限制,請參閱。 |
|
檢查撤銷的憑證時,請忽略CRYPT_E_REVOCATION_OFFLINE錯誤。 如需其他限制,請參閱。 |
|
僅限用戶端。
防止 Schannel 驗證收到的伺服器證書鏈結。 |
|
僅限用戶端。
防止 Schannel 嘗試自動提供憑證鏈結以進行客戶端驗證。 |
|
僅限用戶端。
防止 Schannel 將所提供的目標名稱與 伺服器憑證中的主體名稱進行比較,。 |
|
僅限伺服器。
防止 Schannel 使用內建的系統憑證對應函式,將 客戶端憑證對應至使用者帳戶。 |
|
驗證憑證鏈結時,請檢查所有憑證是否有撤銷。 如需其他限制,請參閱。 |
|
驗證憑證鏈結時,請勿檢查根目錄是否有撤銷。 如需其他限制,請參閱。 |
|
驗證憑證鏈結時,只檢查最後一個憑證是否有撤銷。 如需其他限制,請參閱。 |
|
僅限用戶端。
安全通道會嘗試自動提供憑證鏈結以進行客戶端驗證。 此值與SCH_CRED_NO_DEFAULT_CREDS相反。 |
|
指示 Schannel 使用加密區塊鏈結模式搭配對稱加密套件時,將數據分割成兩個不同的記錄,以對抗 SSL/TLS 通訊協定中的弱點。 如需詳細資訊,請參閱 SSL/TLS 中 弱點允許資訊洩漏。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP 和 Windows XP/2000:不支援此旗標。 |
|
安全通道會將跟證書傳送為憑證訊息的一部分。
注意 安全通道用戶端或伺服器透過網路傳送的跟證書不受信任。 它應該根據跟證書的受信任哈希進行驗證。
|
|
指示 Schannel 停用已知的弱式密碼編譯演算法、加密套件,以及可能啟用的 SSL/TLS 通訊協定版本,以提升互操作性。 |
|
指示 Schannel 只選取 PSK 加密套件,並停用所有其他加密套件。 |
dwCredFormat
內核模式通道支援下列值。
Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP 和 Windows XP/2000:不支援此旗標,而且必須是零。
價值 | 意義 |
---|---|
|
傳入之 SCHANNEL_CRED 結構的 paCred 成員必須是長度為 20 的位元組陣列指標,其中包含憑證指紋。 憑證假設位於本機計算機的「MY」存放區中。 |
|
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
當 Schannel 檢查憑證鏈結的撤銷狀態時,這些旗標會指示它分別忽略任何CRYPT_E_NO_REVOCATION_CHECK和CRYPT_E_REVOCATION_OFFLINE錯誤。 如果未設定任何證書吊銷旗標,則會忽略這些旗標。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 8.1 [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2012 R2 [僅限傳統型應用程式] |
標頭 | schannel.h (包括 Schnlsp.h) |