Sdílet prostřednictvím


Ruční ověřování přihlašovacích údajů Schannel

Ve výchozím nastavení Schannel ověřícertifikátu serveruvoláním funkce WinVerifyTrust; pokud jste ale tuto funkci zakázali pomocí příznaku ISC_REQ_MANUAL_CRED_VALIDATION, musíte ověřit certifikát poskytnutý serverem, který se pokouší navázat svou identitu.

Pokud chcete certifikát serveru ověřit ručně, musíte ho nejdřív získat. Použijte funkci QueryContextAttributes (Obecné) a zadejte hodnotu atributu SECPKG_ATTR_REMOTE_CERT_CONTEXT. Tento atribut vrátí CERT_CONTEXT strukturu s řetězem certifikátů zadaným serverem. Tento řetěz certifikátů obsahuje listový certifikát. Označuje se jako listový certifikát, protože se jedná o poslední certifikát v řetězu certifikátů a je nejdále od kořenového certifikátu . Řazení certifikátů v kontextové vyrovnávací paměti SSPI nenaznačuje žádný vztah řetězení certifikátů.

Pomocí listového certifikátu musíte ověřit následující:

  • Řetěz certifikátů je úplný a kořen je certifikát od důvěryhodné certifikační autority (CA).
  • Aktuální čas není nad rámec počátečního a koncového data pro každý certifikát v řetězu certifikátů.
  • Žádné certifikáty v řetězu certifikátů nebyly odvolány.
  • Hloubka listového certifikátu není hlubší než maximální povolená hloubka zadaná v rozšíření certifikátu. Tato kontrola je nutná pouze v případě, že je zadána hloubka.
  • Použití certifikátu je správné, například klientský certifikát by neměl být použit k ověření serveru.
  • Pro ověření serveru musí identita serveru obsažená v koncovém certifikátu serveru odpovídat serveru, který se klient pokouší kontaktovat. Klient obvykle porovná nějakou položku v poli Název předmětu certifikátu s IP adresou serveru nebo názvem DNS.