4 Stimmen

AcquireCredentialsHandle liefert SEC_E_NO_CREDENTIALS

Ich habe ein selbstsigniertes Zertifikat (erstellt mit OpenSSL) erstellt und es im Zertifikatspeicher mit dem Befehl Bescheinigungen MMC Snap-In (CertMgr.msc) unter Windows Vista Ultimate.

Es ist mir gelungen, den Zertifikatspeicher zu öffnen, indem ich CertOpenSystemStore . Und ich kann das Zertifikat dann finden mit CertFindCertificateInStore

Ich bin mir jedoch nicht sicher, was dieser Fehler wirklich bedeutet, da ich die Antwort in der MSDN-Dokumentation nicht finden konnte.

  • Handelt es sich um ein Zertifikatsproblem?
  • Oder ist es ein Problem mit dem Betriebssystem (in dem Sinne, dass es ein Windows Server Betriebssystem sein sollte, damit dies funktioniert)?

Ich verwende Win32 API in Delphi 2010, aber C Beispiele sind in Ordnung.

8voto

Remus Rusanu Punkte 280155

Die Fehlerbeschreibung in MSDN ist eher vage:

Es sind keine Berechtigungsnachweise in der Sicherheitspaket.

Afaik bedeutet dieser Fehler, dass das SSPI SChannel-Paket den privaten Schlüssel für das Zertifikat nicht gefunden hat oder das Zertifikat nicht für SSL/TLS gültig ist. Stellen Sie sicher, dass das Zertifikat/der private Schlüssel im PROV_RSA_SCHANNEL Crypto Provider (CSP) geladen sind, nicht im Enhanced CSP.

Sie sollten die SChannel-Protokollierung für (viel) detailliertere Fehlerinformationen aktivieren, siehe So aktivieren Sie die Schannel-Ereignisprotokollierung (KB ist für IIS, aber die beschriebene Methode aktiviert die Schannel-Protokollierung global auf dem Rechner):

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL
EventLogging: DWORD = n

Der Wert kann eine Kombination aus sein:

  • 0 : Nicht protokollieren (Windows NT 4 Standard)
  • 1 : Fehlermeldungen protokollieren (Windows 2000 und Windows XP Standard)
  • 2 : Log-Warnungen
  • 4 : Protokollierung von Informations- und Erfolgsereignissen

Es ist schon eine Weile her, dass ich mit SSL/TLS gearbeitet habe, aber wenn ich einen Rat geben darf: Googeln Sie nach Beiträgen von "John Banes" und dem Fehler, den Sie haben, und Sie werden wahrscheinlich einige Hinweise finden.

0 Stimmen

+1 Der Link zur Aktivierung des Schannel-Logins ist sehr nützlich. Danke!

0 Stimmen

Haben Sie einen Link, um ein gültiges SSL/TLS-Zertifikat mit OpenSSL unter Windows Vista zu generieren? Gibt es Einschränkungen bezüglich der Verschlüsselungsstufe, die Sie mit Schannel verwenden können? Das sieht nach meinem Problem aus, aber ich verwende auch den UNISP_NAME = 'Microsoft Unified Security Protocol Provider', der der einzige zu sein scheint, der funktioniert. Vielen Dank für weitere Hinweise, denn ich habe Schwierigkeiten, endgültige Informationen zu diesem Thema zu finden.

0 Stimmen

Ich sehe, dass der hCryptProv-Parameter von CertOpenStore jetzt als Legacy dokumentiert ist und NULL sein sollte. In Win2k3 musste dies der SChannel CSP sein, dann musste der resultierende HCERTSTORE als hCertRoot an die SCHANNEL_CRED Struktur übergeben werden, die als pAuthData an AquireCredentialsHandle übergeben wurde. Soweit ich sehe, unterstützt Vista nur das Laden von Zertifikaten aus den Speichern MyUser oder MyComputer, was bedeutet, dass man kein beliebiges Zertifikat übergeben kann, sondern nur einen Berechtigungsnachweis und das System das richtige Zertifikat auswählen lässt. Ich kann mich irren, dieser ganze Bereich ist sehr grau in MSDN.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X