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:

Default TLS Version selection

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.

Enforcing minimum TLS version for a selected certificate

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.

IIS UI

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ů.