Pro vazby certifikátů ve Windows Serveru 2019 jsou teď dostupné možnosti vynucování verze protokolu TLS
Autoři tohoto příspěvku:
Andrew Marshall, hlavní manažer programu zabezpečení, zabezpečení a důvěra zákazníků
Gabriel Montenegro, hlavní programový manažer, základní síťové služby
Niranjan Inamdar, vedoucí softwarový inženýr, základní síťové služby
Michael Brown, vedoucí softwarový inženýr, Internetová informační služba
Ivan Pashov, hlavní vedoucí vývoje softwaru, základní síťové služby
Srpen 2019
Technici po celém světě pracují na odstranění vlastních závislostí na protokolu TLS 1.0 a narážejí při tom na náročné výzvy související s hledáním rovnováhy mezi vlastními požadavky na zabezpečení a připraveností jejich zákazníků na migraci. K dnešnímu dni jsme zákazníkům pomohli tyto problémy vyřešit přidáním podpory protokolu TLS 1.2 do starších operačních systémů tím, že do služby IIS přidáme nové formáty protokolování pro detekci slabého využití protokolu TLS klienty a poskytneme nejnovější technické pokyny pro odstranění závislostí protokolu TLS 1.0.
Teď Microsoft s radostí oznamuje novou výkonnou funkci ve Windows, která vám usnadní přechod na protokol TLS 1.2 nebo novější. Počínaje aktualizací KB4490481 teď Windows Server 2019 umožňuje blokovat používání slabých verzí protokolu TLS u jednotlivých certifikátů, které určíte. Tuto funkci nazýváme "Zakázat starší verzi protokolu TLS" a efektivně vynucuje verzi protokolu TLS a šifrovou sadu na libovolném vybraném certifikátu.
Zakázat starší verzi protokolu TLS také umožňuje online službě nabízet dvě odlišné seskupení koncových bodů na stejném hardwaru: jednu, která povoluje pouze provoz TLS 1.2+ a další, která se týká starších přenosů PROTOKOLU TLS 1.0. Změny se implementují v http.sys a s vystavením dalších certifikátů umožňují směrování provozu do nového koncového bodu s příslušnou verzí protokolu TLS. Před touto změnou by nasazení takových funkcí vyžadovalo další investice do hardwaru, protože taková nastavení bylo možné konfigurovat pouze na úrovni celého systému prostřednictvím registru.
Podrobnosti o scénáři funkce
Běžný scénář nasazení zahrnuje datacentrum s jednou sadou hardwaru a zákazníky s různými potřebami: někteří již teď potřebují vynucovat minimální verzi protokolu TLS 1.2 a někteří ještě nedokončili odebírání závislostí na protokolu TLS 1.0. Obrázek 1 znázorňuje výběr verze protokolu TLS a vytvoření vazby certifikátu jako jasně oddělené akce. Toto je výchozí funkce:
Obrázek 1: Výběr výchozí verze protokolu TLS a funkce vazby certifikátu
secure.contoso.com směruje zákazníky na koncový bod služby podporující pouze protokol TLS 1.2 a vyšší.
legacy.contoso.com směruje zákazníky se staršími potřebami protokolu TLS 1.0 (jako je migrace na protokol TLS 1.2) na koncový bod, který podporuje protokol TLS 1.0 po omezenou dobu. Zákazníci díky tomu můžou dokončit testování připravenosti na protokol TLS 1.2 bez přerušení služeb a aniž by blokovali další zákazníky, kteří jsou již připraveni na protokol TLS 1.2.
Tradičně byste potřebovali dva fyzicky oddělené hostitele pro zpracování veškerého provozu a zajištění vynucení verzí protokolu TLS, protože údržba požadavků TLS s minimální verzí protokolu vyžaduje zakázání slabších protokolů prostřednictvím nastavení registru celého systému. Tuto funkci jsme zpřístupnili na vyšší úrovni stacku, kde se relace protokolu TLS váže na certifikát, takže je možné přiřadit konkrétní minimální verzi protokolu TLS, jak je popsáno na obrázku 2 níže.
Obrázek 2: Zakázání starší verze protokolu TLS vynucující minimální verzi protokolu TLS pro vybraný certifikát Secure.contoso.com
Pokyny k nasazení funkce
Funkci Zákaz starších verzí protokolu TLS je možné nasadit prostřednictvím uživatelského rozhraní serveru Internetové informační služby (IIS), příkazů PowerShellu nebo rozhraní C++ HTTP.sys API.
Možnost č. 1: Konfigurace uživatelského rozhraní služby IIS (k dispozici ve Windows 10 verze 2004 a Windows Serveru verze 2004 a novější)
Vytvořte pro certifikát SSL webu secure.contoso.com vazbu webu, jak je znázorněno níže, zaškrtněte políčko Zákaz starších verzí protokolu TLS a klikněte na OK.
Možnost č. 2: PowerShell (k dispozici ve Windows 10 verze 2004 a Windows Serveru verze 2004 a novější)
V PowerShellu můžete odkazovat na příznaky SSL takto:
[Microsoft.Web.Administration.SslFlags]::DisableLegacyTLS
Je vhodné pro ně vytvořit proměnné s kratším názvem:
$Sni = [Microsoft.Web.Administration.SslFlags]::Sni
$Sni\_CCS = [Microsoft.Web.Administration.SslFlags]::Sni + [Microsoft.Web.Administration.SslFlags]::CentralCertStore
$CCS = [Microsoft.Web.Administration.SslFlags]::CentralCertStore
$DisableLegacyTLS = [Microsoft.Web.Administration.SslFlags]::DisableLegacyTLS
$storeLocation = "Cert:\\LocalMachine\\My"
Příklad vytvoření vazby webu k novému webu a zákazu starších verzí protokolu TLS:
$BindingInformation = "\*:443:"
$siteName = "contoso"
$Thumbprint = $certificate.ThumbPrint
Rutina New-IISSite s hodnotou vlastnosti příznaku SSL DisableLegacyTLS:
New-IISSite $siteName "$env:systemdrive\\inetpub\\wwwroot" "\*:443:secure.contoso.com" https $certificate.Thumbprint $DisableLegacyTLS $storeLocation -passthru
Příklad přidání vazby webu k existujícímu webu a zákazu starších verzí protokolu TLS:
New-IISSiteBinding -Name "Default Web Site" -BindingInformation $BindingInformation -CertificateThumbPrint $certificate.Thumbprint -Protocol https -SslFlag $DisableLegacyTLS, $CCS -Force -verbose
Tuto funkci je navíc možné testovat a řešit související potíže pomocí nástroje Netsh:
Přidání nové vazby:
netsh http add sslcert <normální_parametry> disablelegacytls=enable
Aktualizace stávající vazby:
netsh http update sslcert <normální_parametry> disablelegacytls=enable
Zkontrolujte, jestli je nastavená u vazby:
netsh http show sslcert <normální_parametry>
Sledujte, jak zakázat starší verze protokolu TLS: Nastavení nebo nenastavování
Možnost č. 3: Rozhraní API HTTP.sys C++ (k dispozici nyní)
Kromě funkce Zákaz starších verzí protokolu TLS se do souboru HTTP.sys přidalo následující:
HTTP_SERVICE_CONFIG_SSL_PARAM. DefaultFlags teď podporuje následující nové hodnoty:
HTTP_SERVICE_CONFIG_SSL_FLAG_ENABLE_SESSION_TICKET: Povolení nebo zakázání lístku relace pro konkrétní koncový bod SSL.
HTTP_SERVICE_CONFIG_SSL_FLAG_LOG_EXTENDED_EVENTS: Povolení nebo zakázání rozšířeného protokolování událostí pro konkrétní koncový bod SSL Další události se protokolují do protokolu událostí Windows. V tuto chvíli se protokoluje pouze jedna událost, která se protokoluje, když selže handshake PROTOKOLU SSL.
HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS: Povolte nebo zakažte starší verze protokolu TLS pro konkrétní koncový bod SSL. Nastavením tohoto příznaku zakážete protokol TLS1.0/1.1 pro tento koncový bod a omezíte šifrovací sady, které lze použít na šifrovací sady HTTP2.
HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_TLS12: Povolení nebo zakázání protokolu TLS1.2 pro konkrétní koncový bod SSL
HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_HTTP2: Povolte nebo zakažte HTTP/2 pro konkrétní koncový bod SSL.
Nejjednodušší způsob, jak povolit nebo zakázat tuto funkci na certifikát v jazyce C++, je s příznakem HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS poskytovaným rozhraním HTTP.sys API HttpSetServiceConfiguration.
Když je nastavená funkce Zákaz starších verzí protokolu TLS, vynucují se následující omezení:
Zákaz protokolů SSL2, SSL3, TLS 1.0 a TLS 1.1
Zákaz šifer DES, 3DES a RC4 (aby se používala pouze šifra AES)
Zákaz šifry AES u režimu řetězení CBC (aby se používala pouze šifra AES GCM)
Zákaz výměny klíčů RSA
Zákaz výměny klíčů DH u klíčů menších než 2048 bitů
Zákaz výměny klíčů ECDH u klíčů menších než 224 bitů
Oficiální dokumentace k těmto změnám na webu docs.microsoft.com bude následovat.
Další kroky při vynucování verze protokolu TLS
Funkce Zákaz starších verzí protokolu TLS poskytuje nové výkonné funkce pro vynucování základní verze protokolu TLS a šifrovací sady u konkrétních vazeb certifikátů a koncových bodů. Pokud povolíte tuto funkci, musíte také naplánovat pojmenování vystavovaných certifikátů. Mezi aspekty ke zvážení patří:
Chcete, aby se ve výchozí cestě k vašemu koncovému bodu služby začal okamžitě vynucovat protokol TLS 1.2 a jako záložní starší verzi přístupového bodu nabídnout jiný certifikát pro uživatele, kteří vyžadují protokol TLS 1.0?
Má má výchozí, už použitá certifikace Contoso, zakázat starší verzi protokolu TLS? Pokud ano, možná budete muset nabídnout i certifikát legacy.contoso.com a vytvořit jeho vazbu s koncovým bodem, který povoluje protokol TLS 1.0.
Jak můžete své zákazníky nejlépe informovat o doporučeném používání těchto certifikátů?
Tuto funkci můžete využít ke splnění potřeb velkých skupin zákazníků – těch, kteří mají povinnost používat protokol TLS 1.2+ a ti, kteří stále pracují na migraci mimo protokol TLS 1.0, a to vše bez dalších výdajů na hardware. Kromě dnešní dostupnosti vazby tls pro jednotlivé certifikáty ve Windows Serveru 2019 bude Společnost Microsoft hledat možnost Zakázat starší verzi protokolu TLS v rámci svých online služby na základě poptávky zákazníků.