Udostępnij za pośrednictwem


Klucze prywatne CryptoAPI 2.0

Poświadczenia Schannel są reprezentowane wewnętrznie jako struktury CERT_CONTEXT. Schannel lokalizuje klucz prywatny skojarzony z określonym kontekstem certyfikatu przy użyciu właściwości CERT_KEY_PROV_INFO_PROP_ID certyfikatu. Za pomocą tej właściwości usługa Schannel uzyskuje dostęp do klucza prywatnego przez wywołanie funkcji CryptAcquireContext. Aby uzyskać dodatkowe informacje, zobacz pary kluczy publicznych/prywatnych.

Każde poświadczenie Schannel zawiera odwołanie do co najmniej jednego klucza prywatnego, z których każdy jest skojarzony z określonym certyfikatem. Klucze prywatne są obsługiwane zupełnie inaczej w zależności od tego, czy poświadczenie jest przeznaczone dla klienta, czy serwera.

Klucze prywatne klienta

Klucze prywatne klienta są zarządzane przezużywanego dostawcy usług kryptograficznych (CSP). Klucze prywatne klienta są zwykle przechowywane przez dostawców CSP typu PROV_RSA_FULL lub PROV_RSA_SIGNATURE.

Jeśli aplikacja kliencka wykonuje wywołanie CryptAcquireContext ręcznie, przed wywołaniem metody AcquireCredentialsHandleklient musi powiązać dojście dostawcy CSP z kontekstem certyfikatu przy użyciu właściwości CERT_KEY_PROV_HANDLE_PROP_ID. Jeśli usługa Schannel znajdzie ten zestaw właściwości, nie używa właściwości CERT_KEY_PROV_INFO_PROP_ID.

Klucze prywatne serwera

Klucze prywatne serwera są przechowywane przez jednego z następujących dostawców CSP:

  • PROV_RSA_SCHANNEL
  • PROV_DH_SCHANNEL
  • PROV_FORTEZZA CSP

Wybór dostawcy CSP zależy od wybranego algorytmu wymiany kluczy . Klucze prywatne serwera muszą być typu AT_KEYEXCHANGE.