Možnosti vynucení verzí TLS jsou teď dostupné pro každou vazbu certifikátu na Windows Server 2019.

Tento příspěvek je autorem

Andrew Marshall, hlavní manažer programu zabezpečení, zabezpečení a zabezpečení zákazníků

Gabriel Montenegro, hlavní programový manažer, Hlavní síť

Niranjan Inamdar, hlavní softwarový inženýr, core networking

Michael Brown, hlavní softwarový inženýr, Internetová informační služba

Jan Pashov, hlavní vedoucí softwarového inženýrství, core networking

Srpen 2019

Jako inženýři po celém světě pracují na odstranění vlastních závislostí na tls 1.0, napadá je složitá výzva, která jim pomůže vyvažovat vlastní potřeby zabezpečení s připraveností jejich zákazníků na migraci. K dnešnímu datu jsme zákazníkům pomohli tyto problémy vyřešit přidáním podpory TLS 1.2do starších operačních systémů , odesláním nových formátů protokolování ve službě IIS pro zjišťování slabého používání TLS klienty a poskytnutím nejnovějších technických pokynů pro odstranění závislostí TLS 1.0.

Microsoft teď s potěšením oznamuje novou výkonnou funkci v Windows, která vám usnadní přechod na svět TLS 1.2+. Od KB4490481teď Windows Server 2019 umožňuje blokovat použití slabých verzí TLS s jednotlivými certifikáty, které určíte. Tuto funkci nazýváme "Zakázat starší tls" a efektivně vynucuje verzi TLS a prostor šifrovací sady u libovolného certifikátu, který vyberete.

Zakázat starší protokol TLS také umožňuje online službě nabízet dvě odlišné skupiny koncových bodů na stejném hardwaru: ten, který umožňuje jenom přenos TLS 1.2+ a druhý, který je přizpůsoben staršímu přenosu TLS 1.0. Změny se implementují v HTTP.sys a spolu s vydáváním dalších certifikátů umožňují směrovat přenosy do nového koncového bodu s příslušnou verzí TLS. Před touto změnou by nasazení takových funkcí vyžadovalo další hardwarovou investici, protože taková nastavení byla konfigurovatelná jenom v celém systému prostřednictvím registru.

Podrobnosti o scénáři funkcí

Běžný scénář nasazení obsahuje jednu sadu hardwaru v datacentru se zákazníky se smíšenými potřebami: některé z nich teď potřebují TLS 1.2 jako vynucované minimum a jiní ještě nespravují odebírání závislostí TLS 1.0. Obrázek 1 znázorňuje výběr verze TLS a vazbu certifikátu jako zřetelně samostatné akce. Toto je výchozí funkce:

Výběr výchozí verze TLS

Obrázek 1: Výběr výchozí verze TLS a funkce vazby certifikátů

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

  • https://legacy.contoso.com Směruje zákazníky se staršími potřebami TLS 1.0 (třeba ty, které stále migrují na TLS 1.2) na koncový bod, který podporuje TLS 1.0 po omezenou dobu. To zákazníkům umožňuje dokončit testování připravenosti na TLS 1.2 bez přerušení služeb a bez blokování ostatních zákazníků, kteří jsou připravení na TLS 1.2.

Tradičně byste potřebovali dva fyzicky oddělené hostitele, kteří by zvládli veškerý provoz a vynucování verzí 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. Tato funkce je dostupná výš v zásobníku, kde je relace TLS svázáná s certifikátem, takže je možné přiřadit konkrétní minimální verzi TLS, jak je popsáno na obrázku 2 níže.

Vynucení minimální verze TLS pro vybraný certifikát

Obrázek 2: Zakázat starší funkci TLS vynucující minimální verzi TLS pro vybraný certifikát, Secure.contoso.com.

Pokyny k nasazení funkcí

Funkci Zakázat starší tls můžete nasadit prostřednictvím uživatelského rozhraní serveru Internetová informační služba (IIS) pomocí příkazů PowerShellu nebo rozhraní API HTTP.sys C++.

Možnost #1: Konfigurace uživatelského rozhraní služby IIS (k dispozici v dubnu 2020)

Vytvořte vazbu webu pro certifikát SSL "secure.contoso.com", jak je znázorněno níže, zaškrtněte políčko Zakázat starší tls a klikněte na OK.

UŽIVATELSKÉ ROZHRANÍ SLUŽBY IIS

Možnost #2: PowerShell (k dispozici v dubnu 2020)

V PowerShellu můžete na příznaky SSL odkazovat takhle:

[Microsoft.Web.Administration.SslFlags]::DisableLegacyTLS

Je vhodné pro ně vytvářet kratší pojmenované proměnné:

$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 na nový web a zakázání staršího protokolu TLS:

$BindingInformation = "\*:443:"

$siteName = "contoso"

$Thumbprint = $certificate.ThumbPrint

New-IISSite s hodnotou vlastnosti Sslflag 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 na existující web a zakázání staršího protokolu TLS:

New-IISSiteBinding -Name "Default Web Site" -BindingInformation $BindingInformation -CertificateThumbPrint $certificate.Thumbprint -Protocol https -SslFlag $DisableLegacyTLS, $CCS -Force -verbose

Kromě toho můžete tuto funkci vyřešit a otestovat pomocí netsh:

  • Přidání nové vazby:

    netsh http add sslcert < regular parameters > disablelegacytls=enable

  • Aktualizace existující vazby:

    netsh http update sslcert < regular parameters > disablelegacytls=enable

  • Zkontrolujte, jestli je nastavená pro vazbu:

    netsh http show sslcert < regular parameters>

    Podívejte se, jak zakázat starší verze TLS: Set/Not Set

Možnost #3: Rozhraní API HTTP.sys C++ (k dispozici)

Kromě zakázat starší tls jsme přidali následující HTTP.sys:

  • 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. Do protokolu událostí se zaznamenávat Windows události. Teď je podporovaná jenom jedna událost, která se zaprotokoluje, když selže handshake SSL.

  • HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS: Povolte nebo zakažte starší verze TLS pro konkrétní koncový bod SSL. Nastavením tohoto příznaku zakážete tls1.0/1.1 pro tento koncový bod a omezíte tím také šifrovací sady, které se používají pro šifrovací sady PROTOKOLU HTTP2.

  • HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_TLS12: Povolte nebo zakažte TLS1.2 pro konkrétní koncový bod SSL.

  • HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_HTTP2: Povolení nebo zakázání protokolu HTTP/2 pro konkrétní koncový bod SSL.

Nejjednodušší způsob, jak tuto funkci v jazyce C++ povolit nebo zakázat, je příznak HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS, který poskytuje rozhraní HttpSetServiceConfiguration HTTP.sys API.

Pokud je nastavená možnost Zakázat starší tls, vynucuje se následující omezení:

  • Zakažte protokoly SSL2, SSL3, TLS1.0 a TLS1.1.

  • Zakažte šifrovací šifry DES, 3DES a RC4 (takže se používá jenom AES).

  • Zakažte šifrování AES v režimu řetězení CBC (takže se používá jenom AES GCM).

  • Zakažte výměnu klíčů RSA.

  • Zakažte výměnu klíčů PROT s velikostí kláves menší než 2048.

  • Zakažte výměny klíčů ECDH s velikostí kláves menší než 224.

Oficiální dokumentace k těmto změnám docs.Microsoft.com chystaná.

Další kroky pro vynucení verze TLS

Disable Legacy TLS provides powerful new capabilities for enforcing TLS version/cipher suite floors on specific certificate/endpoint bindings. Vyžaduje také plánování pojmenování certifikátů vydaných s touto funkcí povolenou. K některým z těchto úvah patří:

  • Chci, aby výchozí cesta k mému koncovému bodu služby vynucoval tls 1.2 ještě dnes a aby uživatelům, kteří potřebují TLS 1.0, poskytla jiný certifikát jako záložní "starší" přístupový bod?

  • Má moje výchozí, už pou3/4ítá www.contoso.com používat starší tls? Pokud ano, možná budu muset zadat certifikát legacy.contoso.com a svázat ho s koncovým bodem, který umožňuje TLS 1.0.

  • Jak nejlépe doporučovat používání těchto certifikátů svým zákazníkům?

Tuto funkci můžete využít ke splnění potřeb velkých skupin zákazníků – těch, kteří mají povinnost používat TLS 1.2+, a ti, kteří stále pracují na migraci mimo TLS 1.0, a to vše bez dalších hardwarových výdajů. Kromě dnešní dostupnosti vazby na verzi TLS pro každý certifikát v Windows Serveru 2019 bude Microsoft hledat, aby byla možnost Zakázat starší tls dostupná ve všech svých online službách na základě požadavků zákazníků.