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.