Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo post è stato creato da
Andrew Marshall, Manager del Programma di Sicurezza Principale, Sicurezza e Fiducia dei Clienti
Gabriel Montenegro, Principal Program Manager, Core Networking
Niranjan Inamdar, Senior Software Engineer, Core Networking
Michael Brown, Senior Software Engineer, Internet Information Services
Ivan Pashov, Principal Software Engineering Lead, Core Networking
Agosto 2019
Poiché i tecnici di tutto il mondo lavorano per eliminare le proprie dipendenze da TLS 1.0, si trovano nella complessa sfida di bilanciare le proprie esigenze di sicurezza con l'idoneità alla migrazione dei propri clienti. Finora i clienti hanno aiutato i clienti a risolvere questi problemi l'aggiunta del supporto TLS 1.2 ai sistemi operativi meno recenti, tramite la spedizione di nuovi formati di registrazione in IIS per rilevare di utilizzo TLS debole da parte dei client e fornendo le linee guida tecniche di più recenti per eliminare le dipendenze TLS 1.0.
Ora Microsoft è lieta di annunciare una nuova potente funzionalità di Windows per semplificare la transizione a un mondo TLS 1.2+. A partire da KB4490481, Windows Server 2019 consente ora di bloccare l'uso di versioni TLS deboli con singoli certificati designati. Questa funzionalità è denominata "Disable Legacy TLS" (Disabilita TLS legacy) e applica in modo efficace una versione TLS e una suite di crittografia su qualsiasi certificato selezionato.
Disabilita TLS legacy consente anche a un servizio online di offrire due raggruppamenti distinti di endpoint nello stesso hardware: uno che consente solo il traffico TLS 1.2+ e un altro che supporta il traffico TLS 1.0 legacy. Le modifiche vengono implementate in HTTP.syse con il rilascio di certificati aggiuntivi, consentono di instradare il traffico al nuovo endpoint con la versione TLS appropriata. Prima di questa modifica, la distribuzione di tali funzionalità richiederebbe un investimento hardware aggiuntivo perché tali impostazioni erano configurabili solo a livello di sistema tramite il Registro di sistema.
Dettagli dello scenario di funzionalità
Uno scenario di distribuzione comune include un set di hardware in un datacenter con clienti con esigenze diverse: alcuni necessitano di TLS 1.2 come minimo obbligatorio e altri non hanno ancora rimosso le dipendenze da TLS 1.0. La figura 1 illustra la selezione della versione TLS e l'associazione di certificati come azioni distinte. Questa è la funzionalità predefinita:
Figura 1: Selezione della versione TLS predefinita e Funzionalità di associazione di certificati
secure.contoso.com indirizza i clienti a un endpoint di servizio che supporta solo TLS 1.2 e versioni successive.
legacy.contoso.com indirizza i clienti con esigenze TLS 1.0 legacy (come quelle ancora in fase di migrazione a TLS 1.2) a un endpoint che supporta TLS 1.0 per un periodo di tempo limitato. Ciò consente ai clienti di completare i test di idoneità per TLS 1.2 senza interruzioni del servizio e senza bloccare altri clienti pronti per TLS 1.2.
Tradizionalmente, sono necessari due host fisicamente separati per gestire tutto il traffico e fornire l'imposizione della versione TLS, perché la manutenzione delle richieste TLS con una versione minima del protocollo richiede la disabilitazione dei protocolli più deboli tramite le impostazioni del Registro di sistema a livello di sistema. Questa funzionalità è stata resa disponibile più in alto nello stack, in cui la sessione TLS è associata al certificato, quindi è possibile assegnare una versione minima di TLS specifica come descritto nella figura 2 seguente.
Figura 2: Disabilitare la funzionalità TLS legacy che applica la versione minima di TLS per un certificato selezionato, Secure.contoso.com.
Linee guida per la distribuzione delle funzionalità
La funzionalità Disabilita TLS legacy può essere distribuita tramite l'interfaccia utente del server Internet Information Services (IIS), tramite i comandi di PowerShell o le API di HTTP.sys C++.
Opzione 1: configurazione dell'interfaccia utente iis (disponibile in Windows 10 versione 2004 e Windows Server versione 2004 e successive)
Creare un'associazione del sito per il certificato SSL "secure.contoso.com" come illustrato di seguito, quindi selezionare "Disabilita TLS legacy" e fare clic su OK.
dell'interfaccia utente IIS
Opzione 2: PowerShell (disponibile in Windows 10 versione 2004 e Windows Server versione 2004 e successive)
In PowerShell è possibile fare riferimento a flag SSL come segue:
[Microsoft.Web.Administration.SslFlags]::DisableLegacyTLS
È utile creare variabili denominate più brevi per loro:
$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"
Esempio di creazione di un'associazione di sito a un nuovo sito e disabilitazione di TLS legacy:
$BindingInformation = "\*:443:"
$siteName = "contoso"
$Thumbprint = $certificate.ThumbPrint
New-IISSite con valore della proprietà Sslflag DisableLegacyTLS:
New-IISSite $siteName "$env:systemdrive\\inetpub\\wwwroot" "\*:443:secure.contoso.com" https $certificate.Thumbprint $DisableLegacyTLS $storeLocation -passthru
Esempio di aggiunta di un'associazione di sito a un sito esistente e disabilitazione di TLS legacy:
New-IISSiteBinding -Name "Default Web Site" -BindingInformation $BindingInformation -CertificateThumbPrint $certificate.Thumbprint -Protocol https -SslFlag $DisableLegacyTLS, $CCS -Force -verbose
Inoltre, è possibile risolvere i problemi e testare questa funzionalità con Netsh:
Aggiunta di una nuova associazione:
netsh http add sslcert <parametri regolari> disablelegacytls=enable
Aggiornamento di un'associazione esistente:
netsh http update sslcert <parametri regolari> disablelegacytls=enable
Controllare se è impostato su un vincolo:
netsh http show sslcert <parametri comuni>
Controlla la disabilitazione delle versioni TLS legacy: Impostato/Non Impostato
Opzione 3: API HTTP.sys C++ (ora disponibili)
Insieme a Disable Legacy TLS, sono state apportate le aggiunte seguenti a HTTP.sys:
HTTP_SERVICE_CONFIG_SSL_PARAM. DefaultFlags supporta ora i nuovi valori seguenti:
HTTP_SERVICE_CONFIG_SSL_FLAG_ENABLE_SESSION_TICKET: abilitare/disabilitare il ticket di sessione per un endpoint SSL specifico.
HTTP_SERVICE_CONFIG_SSL_FLAG_LOG_EXTENDED_EVENTS: abilitare/disabilitare la registrazione estesa degli eventi per un determinato endpoint SSL. Altri eventi vengono registrati nel registro eventi di Windows. Al momento è previsto un solo evento registrato quando la stretta di mano SSL ha esito negativo.
HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS: Abilita o disabilita le versioni TLS legacy per un endpoint SSL specifico. L'impostazione di questo flag disabilita TLS1.0/1.1 per tale endpoint e limita i pacchetti di crittografia che possono essere usati per i pacchetti di crittografia HTTP2.
HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_TLS12: abilitare/disabilitare TLS1.2 per un endpoint SSL specifico.
HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_HTTP2: abilitare/disabilitare HTTP/2 per un endpoint SSL specifico.
Il modo più semplice per abilitare/disabilitare questa funzionalità per ogni certificato in C++ è con il flag HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS fornito dall'API HttpSetServiceConfiguration HTTP.sys.
Quando si imposta Disabilita TLS legacy, vengono applicate le restrizioni seguenti:
Disabilitare i protocolli SSL2, SSL3, TLS1.0 e TLS1.1.
Disabilitare le crittografie DES, 3DES e RC4 (quindi viene usato solo AES).
Disabilitare la crittografia AES con la modalità di concatenamento CBC (quindi viene usato solo AES GCM).
Disabilitare lo scambio di chiavi RSA.
Disabilitare lo scambio di chiavi DH con dimensione inferiore a 2048.
Disabilitare gli scambi di chiavi ECDH con dimensioni inferiori a 224.
La documentazione ufficiale di queste modifiche sulle docs.Microsoft.com sarà disponibile.
Passaggi successivi per l'applicazione della versione TLS
La disabilitazione di TLS legacy offre nuove potenti funzionalità per imporre limiti minimi su versione TLS e suite di crittografia su specifiche associazioni di certificati/endpoint. È anche necessario pianificare la denominazione dei certificati rilasciati con questa funzionalità abilitata. Alcune considerazioni includono:
Si vuole che il percorso predefinito dell'endpoint di servizio applichi attualmente TLS 1.2 e fornisca un certificato diverso come punto di accesso "legacy" di backup per gli utenti che necessitano di TLS 1.0?
Devo usare "Disabilita TLS legacy" con la certificazione Contoso predefinita, già in uso? In tal caso, potrebbe essere necessario fornire un certificato legacy.contoso.com e associarlo a un endpoint che consenta TLS 1.0.
Come è possibile comunicare al meglio l'utilizzo consigliato di questi certificati ai clienti?
È possibile sfruttare questa funzionalità per soddisfare le esigenze di grandi gruppi di clienti, ovvero quelli con obbligo di usare TLS 1.2+ e quelli che continuano a lavorare alla migrazione da TLS 1.0, senza spese hardware aggiuntive. Oltre alla disponibilità odierna dell'associazione di versione TLS per certificato in Windows Server 2019, Microsoft cercherà di offrire la funzione Disabilita TLS legacy nei servizi online, secondo le richieste dei clienti.