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. Pomáháme zákazníkům tyto problémy řešit a dosud jsme například přidali podporu protokolu TLS 1.2 pro starší operační systémy, do služby IIS jsme přidali nové formáty protokolování umožňující detekovat slabé využití protokolu TLS klienty nebo jsme zveřejnili nejnovější technické pokyny k odstranění závislostí na 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. Tato funkce, kterou označujeme jako Zákaz starších verzí protokolu TLS, efektivně pro jakýkoli vybraný certifikát vynucuje základní verzi protokolu TLS a šifrovací sadu.

Funkce Zákaz starších verzí protokolu TLS také umožňuje online službám nabízet na stejném hardwaru dvě různé skupiny koncových bodů: jednu povolující pouze provoz protokolu TLS 1.2 nebo novějšího a druhou přizpůsobenou provozu staršího protokolu TLS 1.0. Změny jsou implementované v souboru HTTP.sys a ve spojení s vystavením dalších certifikátů je možné směrovat provoz do nového koncového bodu s odpovídající 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:

Výběr výchozí verze protokolu TLS

Obrázek 1: Výběr výchozí verze protokolu TLS a funkce vytvoření vazby certifikátu

  • https://secure.contoso.com směruje zákazníky na koncový bod služby podporující pouze protokol TLS 1.2 a vyšší.

  • https://legacy.contoso.com přesměruje zákazníky, kteří potřebují starší verzi protokolu TLS 1.0 (jako jsou zákazníci, kteří stále nedokončili migraci na protokol 1.2), na koncový bod, který po omezenou dobu podporuje protokol TLS 1.0. 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 ke zpracování veškerého provozu a zajištění vynucování verze protokolu TLS potřebovali dva fyzicky oddělené hostitele, protože obsluha požadavků protokolu TLS s minimální verzí protokolu vyžaduje zákaz slabších protokolů prostřednictvím nastavení registru na úrovni 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.

Vynucování minimální verze protokolu TLS pro vybraný certifikát

Obrázek 2: Funkce Zákaz starších verzí protokolu TLS vynucující minimální verzi protokolu TLS pro vybraný certifikát webu 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 v 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.

Uživatelské rozhraní služby IIS

Možnost č. 2: PowerShell (k dispozici v 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 <regular parameters> disablelegacytls=enable

  • Aktualizace stávající vazby:

    netsh http update sslcert <regular parameters> disablelegacytls=enable

  • Kontrola nastavení této funkce pro vazbu:

    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 jazyka C++ (k dispozici)

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: Povolte nebo zakažte rozšířené protokolování událostí pro konkrétní koncový bod SSL. Další události se protokolují do protokolu událostí Windows. V současné době se podporuje protokolování pouze jedné události v případě, že selže ověřování SSL metodou handshake.

  • 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 se pro daný koncový bod zakáže protokol TLS 1.0 a 1.1 a šifrovací sady, které je možné použít, se omezí 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 tuto funkci povolit nebo zakázat v jazyce C++, je příznak HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS poskytovaný rozhraním API HttpSetServiceConfiguration HTTP.sys.

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)

  • Zakažte šifrování AES pomocí režimu řetězení CBC (takže se používá jenom 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ří:

  • Chci, aby výchozí cesta ke koncovému bodu služby vynucovala protokol TLS 1.2 dnes a jako záložní přístupový bod pro uživatele, kteří potřebují protokol TLS 1.0, poskytnout jiný certifikát jako záložní přístupový bod starší verze?

  • Měla by se funkce Zákaz starších verzí protokolu TLS používat i u vaší výchozí certifikace www.contoso.com, kterou již používáte? 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ůžu zákazníkům nejlépe sdělit doporučené využití těchto certifikátů?

S využitím této funkce můžete splnit potřeby velkých skupin zákazníků (zákazníků s povinností používat protokol TLS 1.2 nebo novější i zákazníků, kteří stále pracují na migraci z protokolu TLS 1.0) bez dalších výdajů na hardware. Kromě možnosti vytvářet vazby verzí protokolu TLS s jednotlivými certifikáty, která je dnes dostupná ve Windows Serveru 2019, se Microsoft bude snažit na základě požadavků zákazníků zpřístupnit funkci Zákaz starších verzí protokolu TLS pro všechny své online služby.