V dnešní době, kdy už máte všichni alespoň Windows 7 a Windows Server 2008, si můžete dovolit naprosto luxusní TLS/SSL VPN připojení protokolem SSTP (Secure Socket Tunneling Protocol). Oproti PPTP se šifruje náhodným klíčem a je to standardní TLS (PPTP šifruje slaboučkným heslem uživatele). Oproti různým druhům IPSec VPN, jako je L2TP nebo IKEv2 a DirectAccess, nepotřebujete klientský certifikát. Takže pohoda, uživatel zadá heslo a přitom je to o hodně lepší, než zastaralá PPTP.
Jenže ne pohoda. Na SSTP VPN serveru (RRAS) potřebujete mít správný a platný a důvěryhodný TLS/SSL HTTPS certifikát webového serveru. Každý s tím vždycky laboruje a nikdy se neví, co uživatel vidí a proč mu to selhává.
Jak to vyzkoušet z klienta
SSTP VPN je normální HTTPS. Takže z klienta prostě zadejte do prohlížeče jenom jeho URL:
https://prahavpn.gopas.cz/sra{BA195980-CD49-458b-9E23-C84EE0ADCD75}
Sice neuvidíte v prohlížeči žádnou stránku, ale měli byste dostat poměrně srozumitelnou odpověď:
Response = HTTP/1.1 401
Server = Microsoft-HTTPAPI/2.0
Date = Sun, 18 Oct 2015 08:22:52 GMT
Connection = close
Content-Length = 0
Ale hlavně uvidíte, jestli je certifikát v pořádku, nebo není:


Pokud se na první pohled zdá být v pořádku, uložte si ho do souboru. Možná nepůjde uložit na první pokus, musíte mít to URL umístěno v Trusted Sites (nebo v Local Intranet) zóně Internet Exploreru. No a potom už musíte jenom z příkazové řádky zkontrolovat certifikát kompletně. Tedy hlavně jeho CRL nebo OCSP revocation list (seznam zneplatnění). Protože SSTP vyžaduje kontrolu CRL, bez toho se nepřipojí. Nepřípojí se ani když to CRL jenom nejde stáhnout. Certifikát nemusí být neplatný, stačí že to nejde ověřit přes CRL nebo OCSP (detailnější návod v angličtině mám i zde):
certutil -urlfetch -verify c:\public\gopas.cer
Ve výstupu musí být úplně na konci napsáno, že Certificate revocation check passed. Pokud to tam není, bude tam nějaká chyba. O trošku více nahoře uvidíte detaily a například informaci které URL nelze stáhnout. Jednoduchou stahovačku CRL a OCSP máte také takto - pozor, tohle ale jenom stahuje, nekontroluje to ten certifikát:
certutil -url c:\public\gopas.cer
Třeba právě v tomto mém případě to píše, že The revocation function was not able to check revocation because the revocation server was offline. 0x80092013. Revocation check skipped - server offline. Takže nefunguje CRL, nelze se připojit.
Příkladem je třeba vnitřní certifikační autorita, která nemá CRL dostupné na veřejné HTTP adrese bez ověřování uživatele. Ve výchozím stavu publikují jenom na LDAP, kam se z internetu určitě nedostanete (alespoň doufám :-)). Viz poslední obrázek dnešního dne:
Prostě to jinak nepůjde, než že to CRL rozchodíte i z venku. Na HTTP cestě. Nebo si kupte veřejný certifikát a nemusíte to řešit.
Jak zakázat CRL kontrolu na SSTP klinetovi
No dobrá, tak vám to tedy řeknu. Na klientech je samozřejmě možné vypnout CRL kontrolu. Ne, že byste to chtěli udělat na trvalo, ale když už, tak alespoň na vyzkoušení se to může hodit:
HKLM\System\CurrentControlSet\Services\SSTPSvc\Parameters
NoCertRevocationCheck = DWORD = 1
No a to je už snad úplně všechno :-)