Dela via


Verifiera autentiseringsuppgifter för kanal manuellt

Som standard verifierar Schannel -servercertifikatet genom att anropa funktionen WinVerifyTrust. Men om du har inaktiverat den här funktionen med hjälp av flaggan ISC_REQ_MANUAL_CRED_VALIDATION måste du verifiera certifikatet som tillhandahålls av servern som försöker upprätta dess identitet.

Om du vill verifiera servercertifikatet manuellt måste du först hämta det. Använd funktionen QueryContextAttributes (Allmänt) och ange attributet SECPKG_ATTR_REMOTE_CERT_CONTEXT. Det här attributet returnerar en CERT_CONTEXT struktur med certifikatkedjan som tillhandahålls av servern. Den här certifikatkedjan innehåller lövcertifikatet. Det kallas lövcertifikat eftersom det är det sista certifikatet i certifikatkedjan och ligger längst bort från rotcertifikatet. Certifikatordning i SSPI-kontextbufferten innebär inte någon länkningsrelation för certifikat.

Med lövcertifikatet måste du kontrollera följande:

  • Certifikatkedjan är klar och roten är ett certifikat från en betrodd certifikatutfärdare (CA).
  • Den aktuella tiden är inte längre än start- och slutdatumen för vart och ett av certifikaten i certifikatkedjan.
  • Inget av certifikaten i certifikatkedjan har återkallats.
  • Djupet i lövcertifikatet är inte djupare än det maximala tillåtna djup som anges i certifikattillägget. Den här kontrollen är bara nödvändig om det finns ett angivet djup.
  • Användningen av certifikatet är korrekt, till exempel bör ett klientcertifikat inte användas för att autentisera en server.
  • För serverautentisering matchar serveridentiteten i serverns lövcertifikat den server som klienten försöker kontakta. Vanligtvis matchar klienten ett objekt i certifikatets ämnesnamn med serverns IP-adress eller DNS-namn.