Bagikan melalui


struktur SCHANNEL_CRED (schannel.h)

Nota

Struktur SCHANNEL_CRED tidak digunakan lagi. Anda harus menggunakan SCH_CREDENTIALS sebagai gantinya.

Struktur SCHANNEL_CRED berisi data untuk kredensial Schannel.

Sintaksis

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;

Anggota

dwVersion

Atur ke SCHANNEL_CRED_VERSION.

cCreds

Jumlah struktur dalam array paCred .

paCred

Array pointer ke struktur CERT_CONTEXT. Setiap penunjuk menentukan sertifikat yang berisi kunci privat yang akan digunakan dalam mengautentikasi aplikasi. Biasanya, array ini berisi satu struktur untuk setiap metode pertukaran kunci yang didukung oleh aplikasi.

Aplikasi klien sering meneruskan daftar kosong dan bergantung pada Schannel untuk menemukan sertifikat yang sesuai atau membuat sertifikat nanti jika diperlukan.

hRootStore

Fakultatif. Hanya berlaku untuk aplikasi server. Tangani ke penyimpanan sertifikat yang berisi sertifikat akar yang ditandatangani sendiri untuk otoritas sertifikasi (CA) yang dipercaya oleh aplikasi. Anggota ini hanya digunakan oleh aplikasi sisi server yang memerlukan autentikasi klien.

cMappers

Dipesan.

aphMappers

Dipesan.

_HMAPPER

cSupportedAlgs

Jumlah algoritma dalam array palgSupportedAlgs .

palgSupportedAlgs

Fakultatif. Penunjuk ke array pengidentifikasi algoritma ALG_ID yang mewakili algoritma yang didukung oleh koneksi yang dibuat dengan kredensial yang diperoleh menggunakan struktur ini. Jika cSupportedAlgs adalah nol atau palgSupportedAlgsNULL, Schannel menggunakan default sistem.

Saat ini, pengidentifikasi algoritma CALG_AES, CALG_AES_128, dan CALG_AES_256 tidak didukung.

grbitEnabledProtocols

Fakultatif. DWORD yang berisi string bit yang mewakili protokol yang didukung oleh koneksi yang dibuat dengan kredensial yang diperoleh dengan menggunakan struktur ini. Jika anggota ini nol, Schannel memilih protokol. Untuk pengembangan baru, aplikasi harus mengatur grbitEnabledProtocols ke nol dan menggunakan versi protokol yang diaktifkan pada sistem secara default.

Anggota ini hanya digunakan oleh Penyedia Protokol Keamanan Terpadu Microsoft paket keamanan.

Pengaturan registri sistem global lebih diutamakan daripada nilai ini. Misalnya, jika SSL3 dinonaktifkan di registri, SSL3 tidak dapat diaktifkan menggunakan anggota ini.

Anggota ini dapat berisi salah satu bendera berikut.

Nilai Arti
SP_PROT_PCT1_SERVER
0x00000001
Sisi server Private Communications Technology 1.0.
Catatan Usang.
 
SP_PROT_PCT1_CLIENT
0x00000002
Sisi klien Private Communications Technology 1.0.
Catatan Usang.
 
SP_PROT_SSL2_SERVER
0x00000004
Sisi server Secure Sockets Layer 2.0. Digantikan oleh SP_PROT_TLS1_SERVER.
bendera Important Secure Sockets Layer 2.0 dan Transport Layer Security 1.2 saling eksklusif.
 
Windows 10, versi 1607 dan Windows Server 2016.: dukungan berakhir.
SP_PROT_SSL2_CLIENT
0x00000008
Sisi klien Secure Sockets Layer 2.0. Digantikan oleh SP_PROT_TLS1_CLIENT.
bendera Important Secure Sockets Layer 2.0 dan Transport Layer Security 1.2 saling eksklusif.
 
Windows 10, versi 1607 dan Windows Server 2016.: dukungan berakhir.
SP_PROT_SSL3_SERVER
0x00000010
Sisi server Secure Sockets Layer 3.0.
SP_PROT_SSL3_CLIENT
0x00000020
Sisi klien Secure Sockets Layer 3.0.
SP_PROT_TLS1_SERVER
0x00000040
Sisi server Transport Layer Security 1.0.
SP_PROT_TLS1_CLIENT
0x00000080
Sisi klien Transport Layer Security 1.0.
SP_PROT_TLS1_0_SERVER
SP_PROT_TLS1_SERVER
Sisi server Transport Layer Security 1.0.
SP_PROT_TLS1_0_CLIENT
SP_PROT_TLS1_CLIENT
Sisi klien Transport Layer Security 1.0.
SP_PROT_TLS1_1_SERVER
0x00000100
Sisi server Transport Layer Security 1.1.
SP_PROT_TLS1_1_CLIENT
0x00000200
Sisi klien Transport Layer Security 1.1.
SP_PROT_TLS1_2_SERVER
0x00000400
Sisi server Transport Layer Security 1.2.
bendera Important Secure Sockets Layer 2.0 dan Transport Layer Security 1.2 saling eksklusif.
 
SP_PROT_TLS1_2_CLIENT
0x00000800
Sisi klien Transport Layer Security 1.2.
bendera Important Secure Sockets Layer 2.0 dan Transport Layer Security 1.2 saling eksklusif.
 
SP_PROT_TLS1_3_SERVER
0x00001000
Sisi server Transport Layer Security 1.3.
bendera Important Secure Sockets Layer 2.0 dan Transport Layer Security 1.2 saling eksklusif.
 
SP_PROT_TLS1_3_CLIENT
0x00002000
Sisi klien Transport Layer Security 1.3.
bendera Important Secure Sockets Layer 2.0 dan Transport Layer Security 1.3 saling eksklusif.
 
SP_PROT_DTLS_SERVER
0x00010000
Sisi server Keamanan Lapisan Transportasi Datagram.

Windows 8 dan Windows Server 2012: dukungan ditambahkan.

SP_PROT_DTLS_CLIENT
0x00020000
Sisi klien Keamanan Lapisan Transportasi Datagram.

Windows 8 dan Windows Server 2012: dukungan ditambahkan.

SP_PROT_DTLS1_0_SERVER
SP_PROT_DTLS1_SERVER
Sisi server Datagram Transport Layer Security 1.0.

Windows 8 dan Windows Server 2012: dukungan ditambahkan.

SP_PROT_DTLS1_0_CLIENT
SP_PROT_DTLS1_CLIENT
Sisi klien Datagram Transport Layer Security 1.0.

Windows 8 dan Windows Server 2012: dukungan ditambahkan.

SP_PROT_DTLS1_2_SERVER
0x00040000
Sisi server Datagram Transport Layer Security 1.2.

Windows 10, versi 1607 dan Windows Server 2016.: dukungan ditambahkan.

SP_PROT_DTLS1_2_CLIENT
0x00080000
Sisi klien Datagram Transport Layer Security 1.2.

Windows 10, versi 1607 dan Windows Server 2016.: dukungan ditambahkan.

SP_PROT_DTLS1_X_SERVER
Keamanan Lapisan Transportasi Datagram semua sisi server versi yang didukung.

Windows 10, versi 1607 dan Windows Server 2016.: dukungan ditambahkan.

SP_PROT_DTLS1_X_CLIENT
Keamanan Lapisan Transportasi Datagram semua sisi klien versi yang didukung.

Windows 10, versi 1607 dan Windows Server 2016.: dukungan ditambahkan.

dwMinimumCipherStrength

Kekuatan sandi enkripsi massal minimum, dalam bit, diizinkan untuk koneksi.

Jika anggota ini nol, Schannel menggunakan default sistem. Jika anggota ini adalah –1, hanya suite sandi khusus MAC SSL3/TLS (juga dikenal sebagai cipher NULL) yang diaktifkan.

dwMaximumCipherStrength

Kekuatan sandi enkripsi massal maksimum, dalam bit, diizinkan untuk koneksi.

Jika anggota ini nol, Schannel menggunakan default sistem.

Jika anggota ini adalah –1, hanya suite sandi khusus MAC SSL3/TLS (juga dikenal sebagai cipher NULL) yang diaktifkan. Dalam hal ini, dwMinimumCipherStrength harus diatur ke –1.

dwSessionLifespan

Jumlah milidetik yang disimpan Schannel dalam cache sesinya. Setelah waktu ini berlalu, setiap koneksi baru antara klien dan server memerlukan sesi Schannel baru. Atur nilai anggota ini ke nol untuk menggunakan nilai default 36000000 milidetik (sepuluh jam).

dwFlags

Berisi bendera bit yang mengontrol perilaku Schannel. Anggota ini bisa nol atau kombinasi dari nilai berikut.

Nilai Arti
SCH_CRED_AUTO_CRED_VALIDATION
0x00000020
Hanya klien.

Bendera ini adalah kebalikan dari SCH_CRED_MANUAL_CRED_VALIDATION dan merupakan bagian dari perilaku default Schannel.

SCH_CRED_CACHE_ONLY_URL_RETRIEVAL_ON_CREATE
0x00020000
Instruksikan Schannel untuk meneruskan bendera CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL ke fungsi CertGetCertificateChain saat memvalidasi kredensial yang ditentukan selama panggilan ke AcquireCredentialsHandle (Schannel).

Windows Server 2003 dan Windows XP/2000: Bendera ini tidak didukung.

SCH_CRED_DISABLE_RECONNECTS
0x00000080
Hanya server.

Jika bendera ini diatur, maka jabat tangan penuh yang dilakukan dengan kredensial ini tidak akan memungkinkan koneksi ulang. Entri cache dibuat, sehingga sesi dapat dibuat dapat dilanjutkan nanti dengan menggunakan fungsi ApplyControlToken.

SCH_CRED_IGNORE_NO_REVOCATION_CHECK
0x00000800
Saat memeriksa sertifikat yang dicabut, abaikan kesalahan CRYPT_E_NO_REVOCATION_CHECK. Untuk pembatasan tambahan, lihat Komentar.
SCH_CRED_IGNORE_REVOCATION_OFFLINE
0x00001000
Saat memeriksa sertifikat yang dicabut, abaikan kesalahan CRYPT_E_REVOCATION_OFFLINE. Untuk pembatasan tambahan, lihat Komentar.
SCH_CRED_MANUAL_CRED_VALIDATION
0x00000008
Hanya klien.

Cegah Schannel memvalidasi rantai sertifikat server yang diterima.

SCH_CRED_NO_DEFAULT_CREDS
0x00000010
Hanya klien.

Cegah Schannel mencoba menyediakan rantai sertifikat secara otomatis untuk autentikasi klien.

SCH_CRED_NO_SERVERNAME_CHECK
0x00000004
Hanya klien.

Cegah Schannel membandingkan nama target yang disediakan dengan nama subjek dalam sertifikat server .

SCH_CRED_NO_SYSTEM_MAPPER
0x00000002
Hanya server.

Cegah Schannel menggunakan fungsi pemetaan sertifikat sistem bawaan untuk memetakan sertifikat klien ke akun pengguna.

SCH_CRED_REVOCATION_CHECK_CHAIN
0x00000200
Saat memvalidasi rantai sertifikat, periksa semua sertifikat untuk pencabutan. Untuk pembatasan tambahan, lihat Komentar.
SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT
0x00000400
Saat memvalidasi rantai sertifikat, jangan periksa akar untuk pencabutan. Untuk pembatasan tambahan, lihat Komentar.
SCH_CRED_REVOCATION_CHECK_END_CERT
0x00000100
Saat memvalidasi rantai sertifikat, periksa hanya sertifikat terakhir untuk pencabutan. Untuk pembatasan tambahan, lihat Komentar.
SCH_CRED_USE_DEFAULT_CREDS
0x00000040
Hanya klien.

Schannel mencoba untuk secara otomatis menyediakan rantai sertifikat untuk autentikasi klien. Nilai ini berlawanan dengan SCH_CRED_NO_DEFAULT_CREDS.

SCH_SEND_AUX_RECORD
0x00200000
Instruksikan Schannel untuk membagi data untuk dienkripsi menjadi dua rekaman terpisah untuk melawan kelemahan yang ada dalam protokol SSL/TLS ketika digunakan dengan rangkaian sandi konten menggunakan mode rantai blok sandi. Untuk informasi selengkapnya, lihat kerentanan di SSL/TLS Dapat Memungkinkan Pengungkapan Informasi.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP dan Windows XP/2000: Bendera ini tidak didukung.

SCH_SEND_ROOT_CERT
0x00040000
Schannel mengirimkan sertifikat akar sebagai bagian dari pesan sertifikat.
Catatan Sertifikat akar yang dikirim melalui jaringan oleh klien atau server Schannel tidak dapat dipercaya. Ini harus divalidasi terhadap hash tepercaya dari sertifikat akar.
 
SCH_USE_STRONG_CRYPTO
0x00400000
Menginstruksikan Schannel untuk menonaktifkan algoritma kriptografi yang diketahui lemah, suite sandi, dan versi protokol SSL/TLS yang mungkin diaktifkan untuk interoperabilitas yang lebih baik.
SCH_USE_PRESHAREDKEY_ONLY
0x00800000
Menginstruksikan Schannel untuk hanya memilih suite sandi PSK dan menonaktifkan semua suite sandi lainnya.

dwCredFormat

Schannel mode kernel mendukung nilai berikut.

Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP dan Windows XP/2000: Bendera ini tidak didukung dan harus nol.

Nilai Arti
SCH_CRED_FORMAT_CERT_HASH
0x00000001
Anggota paCred dari struktur SCHANNEL_CRED yang diteruskan harus menjadi penunjuk ke array byte panjang 20 yang berisi thumbprint sertifikat. Sertifikat diasumsikan berada di penyimpanan "MY" komputer lokal.
SCH_CRED_FORMAT_CERT_HASH_STORE
0x00000002
Anggota paCred dari struktur SCHANNEL_CRED menunjuk ke struktur SCHANNEL_CERT_HASH_STORE.

Komentar

Bendera pencabutan sertifikat berikut saling eksklusif.

  • SCH_CRED_REVOCATION_CHECK_CHAIN
  • SCH_CRED_REVOCATION_CHECK_END_CERT
  • SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT

Untuk menyesuaikan pelaporan kesalahan pencabutan sertifikat untuk Schannel, gunakan bendera berikut:

  • SCH_CRED_IGNORE_NO_REVOCATION_CHECK
  • SCH_CRED_IGNORE_REVOCATION_OFFLINE

Ketika Schannel memeriksa status pencabutan rantai sertifikat, bendera ini menginstruksikannya untuk mengabaikan kesalahan CRYPT_E_NO_REVOCATION_CHECK dan CRYPT_E_REVOCATION_OFFLINE. Bendera ini diabaikan jika tidak ada bendera pencabutan sertifikat yang diatur.

Persyaratan

Syarat Nilai
klien minimum yang didukung Windows 8.1 [khusus aplikasi desktop]
server minimum yang didukung Windows Server 2012 R2 [hanya aplikasi desktop]
Header schannel.h (termasuk Schnlsp.h)

Lihat juga

QuerySecurityContextToken