CertCreateSelfSignCertificate-Funktion (wincrypt.h)

Die CertCreateSelfSignCertificate-Funktion erstellt ein selbstsigniertes Zertifikat und gibt einen Zeiger auf eine CERT_CONTEXT-Struktur zurück, die das Zertifikat darstellt.

Syntax

PCCERT_CONTEXT CertCreateSelfSignCertificate(
  [in, optional] HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
  [in]           PCERT_NAME_BLOB                 pSubjectIssuerBlob,
  [in]           DWORD                           dwFlags,
  [in, optional] PCRYPT_KEY_PROV_INFO            pKeyProvInfo,
  [in, optional] PCRYPT_ALGORITHM_IDENTIFIER     pSignatureAlgorithm,
  [in, optional] PSYSTEMTIME                     pStartTime,
  [in, optional] PSYSTEMTIME                     pEndTime,
  [optional]     PCERT_EXTENSIONS                pExtensions
);

Parameter

[in, optional] hCryptProvOrNCryptKey

Ein Handle eines Kryptografieanbieters , der zum Signieren des erstellten Zertifikats verwendet wird. Wenn NULL, werden Informationen aus dem pKeyProvInfo-Parameter verwendet, um das erforderliche Handle zu erhalten. Wenn pKeyProvInfo ebenfalls NULL ist, werden der Standardanbietertyp, PROV_RSA_FULL Anbietertyp, die Standardschlüsselspezifikation, AT_SIGNATURE und ein neu erstellter Schlüsselcontainer mit einem eindeutigen Containernamen verwendet.

Bei diesem Handle muss es sich um ein HCRYPTPROV-Handle handelt, das mit der CryptAcquireContext-Funktion oder einem NCRYPT_KEY_HANDLE Handle erstellt wurde, das mithilfe der NCryptOpenKey-Funktion erstellt wurde. Neue Anwendungen sollten immer das NCRYPT_KEY_HANDLE Handle eines CNG-Kryptografiedienstanbieters (CSP) übergeben.

[in] pSubjectIssuerBlob

Ein Zeiger auf ein BLOB , das den Distinguished Name (DN) für den Zertifikatantragsteller enthält. Dieser Parameter darf nicht NULL sein. Mindestens muss ein Zeiger auf einen leeren DN angegeben werden. Dieses BLOB wird normalerweise mit der CertStrToName-Funktion erstellt. Sie kann auch mithilfe der CryptEncodeObject-Funktion erstellt werden und entweder den X509_NAME oder X509_UNICODE_NAME StructType angeben.

[in] dwFlags

Ein Satz von Flags, die das Standardverhalten dieser Funktion außer Kraft setzen. Dies kann null oder eine Kombination aus einem oder mehreren der folgenden Werte sein.

Wert Bedeutung
CERT_CREATE_SELFSIGN_NO_KEY_INFO
2
Standardmäßig verweist der zurückgegebene PCCERT_CONTEXT auf die privaten Schlüssel , indem die CERT_KEY_PROV_INFO_PROP_ID festgelegt wird. Wenn sie nicht möchten, dass der zurückgegebene PCCERT_CONTEXT durch Festlegen der CERT_KEY_PROV_INFO_PROP_ID auf private Schlüssel verweist, geben Sie CERT_CREATE_SELFSIGN_NO_KEY_INFO an.
CERT_CREATE_SELFSIGN_NO_SIGN
1
Standardmäßig ist das zu erstellende Zertifikat signiert. Wenn das zu erstellende Zertifikat nur ein Dummyplatzhalter ist, muss das Zertifikat möglicherweise nicht signiert werden. Die Signatur des Zertifikats wird übersprungen, wenn CERT_CREATE_SELFSIGN_NO_SIGN angegeben ist.

[in, optional] pKeyProvInfo

Ein Zeiger auf eine CRYPT_KEY_PROV_INFO-Struktur . Bevor ein Zertifikat erstellt wird, wird der CSP nach dem Schlüsselanbieter, dem Schlüsselanbietertyp und dem Namen des Schlüsselcontainers abgefragt. Wenn der abgefragte CSP diese Abfragen nicht unterstützt, schlägt die Funktion fehl. Wenn der Standardanbieter diese Abfragen nicht unterstützt, muss ein pKeyProvInfo-Wert angegeben werden. Rsa BASE unterstützt diese Abfragen.

Wenn der pKeyProvInfo-Parameter nicht NULL ist, werden die entsprechenden Werte im CERT_KEY_PROV_INFO_PROP_ID Wert des generierten Zertifikats festgelegt. Sie müssen sicherstellen, dass alle Parameter der angegebenen Struktur ordnungsgemäß angegeben sind.

[in, optional] pSignatureAlgorithm

Ein Zeiger auf eine CRYPT_ALGORITHM_IDENTIFIER-Struktur . Bei NULL wird der Standardalgorithmus SHA1RSA verwendet.

[in, optional] pStartTime

Ein Zeiger auf eine SYSTEMTIME-Struktur . Wenn NULL, wird standardmäßig die aktuelle Systemzeit verwendet.

[in, optional] pEndTime

Ein Zeiger auf eine SYSTEMTIME-Struktur . Bei NULL wird standardmäßig der pStartTime-Wert plus ein Jahr verwendet.

[optional] pExtensions

Ein Zeiger auf ein CERT_EXTENSIONS Array von CERT_EXTENSION-Strukturen . Standardmäßig ist das Array leer. Ein alternativer Antragstellername kann bei Bedarf als eine dieser Erweiterungen angegeben werden.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird eine PCCERT_CONTEXT Variable zurückgegeben, die auf das erstellte Zertifikat verweist. Wenn bei der Funktion ein Fehler auftritt, gibt sie NULL zurück. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.

Hinweise

Da die pEndTime ein gültiges Datum sein muss und automatisch generiert wird, wenn es nicht vom Benutzer bereitgestellt wird, können unerwartete Fehler leicht verursacht werden, wenn diese API an einem Schalttag aufgerufen wird, ohne dass die App-Logik zur Kompensation mitgeliefert wird. Weitere Informationen finden Sie unter Schaltjahrbereitschaft.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Crypt32.lib
DLL Crypt32.dll

Weitere Informationen

CERT_EXTENSION

CERT_EXTENSIONS

CRYPT_ALGORITHM_IDENTIFIER

CertStrToName

CryptEncodeObject

GetLastError

PCCERT_CONTEXT

SYSTEMTIME