Risoluzione del problema relativo a TLS 1.0, seconda edizioneSolving the TLS 1.0 Problem, 2nd Edition

Di Andrew MarshallBy Andrew Marshall
Principal Security Program ManagerPrincipal Security Program Manager
Microsoft CorporationMicrosoft Corporation

SuntoExecutive Summary

In questo documento vengono illustrate le indicazioni più recenti su come identificare e rimuovere rapidamente le dipendenze del protocollo TLS (Transport Layer Security) versione 1.0 nel software basato sui sistemi operativi Microsoft, con informazioni dettagliate sulle modifiche dei prodotti e sulle nuove funzionalità fornite da Microsoft per proteggere i clienti e i servizi online.This document presents the latest guidance on rapidly identifying and removing Transport Layer Security (TLS) protocol version 1.0 dependencies in software built on top of Microsoft operating systems, following up with details on product changes and new features delivered by Microsoft to protect your own customers and online services. È concepito per essere usato come punto di partenza per la creazione di un piano di migrazione in un ambiente di rete TLS 1.2+.It is intended to be used as a starting point for building a migration plan to a TLS 1.2+ network environment. Anche se le soluzioni descritte in questo articolo possono essere utili per la rimozione dell'utilizzo di TLS 1.0 nei sistemi operativi non Microsoft o nelle librerie di crittografia, non sono oggetto di questo documento.While the solutions discussed here may carry over and help with removing TLS 1.0 usage in non-Microsoft operating systems or crypto libraries, they are not a focus of this document.

TLS 1.0 è un protocollo di sicurezza definito per la prima volta nel 1999 per stabilire canali di crittografia su reti di computer.TLS 1.0 is a security protocol first defined in 1999 for establishing encryption channels over computer networks. Questo protocollo è supportato da Microsoft a partire da Windows XP/Server 2003.Microsoft has supported this protocol since Windows XP/Server 2003. Sebbene non sia più il protocollo di sicurezza predefinito usato dai sistemi operativi moderni, TLS 1.0 è ancora supportato per la compatibilità con le versioni precedenti.While no longer the default security protocol in use by modern OSes, TLS 1.0 is still supported for backwards compatibility. L'evoluzione dei requisiti normativi e delle nuove vulnerabilità di sicurezza in TLS 1.0 fornisce alle aziende l'incentivo a disabilitare completamente TLS 1.0.Evolving regulatory requirements as well as new security vulnerabilities in TLS 1.0 provide corporations with the incentive to disable TLS 1.0 entirely.

Microsoft consiglia ai clienti di prevenire questo problema rimuovendo le dipendenze di TLS 1.0 negli ambienti e disabilitando TLS 1.0 a livello di sistema operativo, ove possibile.Microsoft recommends customers get ahead of this issue by removing TLS 1.0 dependencies in their environments and disabling TLS 1.0 at the operating system level where possible. Dato il lungo periodo di tempo in cui TLS 1.0 è stato supportato dal settore software, è consigliabile che qualsiasi piano di deprecazione di TLS 1.0 includa quanto segue:Given the length of time TLS 1.0 has been supported by the software industry, it is highly recommended that any TLS 1.0 deprecation plan include the following:

  • Analisi del codice per trovare/correggere le istanze hardcoded di TLS 1.0 o protocolli di sicurezza precedenti.Code analysis to find/fix hardcoded instances of TLS 1.0 or older security protocols.

  • Analisi degli endpoint di rete e analisi del traffico per identificare i sistemi operativi che usano TLS 1.0 o protocolli precedenti.Network endpoint scanning and traffic analysis to identify operating systems using TLS 1.0 or older protocols.

  • Test di regressione completo sull'intero stack di applicazioni con TLS 1.0 disabilitato.Full regression testing through your entire application stack with TLS 1.0 disabled.

  • Migrazione di sistemi operativi legacy e librerie/framework di sviluppo a versioni in grado di negoziare TLS 1.2 per impostazione predefinita.Migration of legacy operating systems and development libraries/frameworks to versions capable of negotiating TLS 1.2 by default.

  • Test di compatibilità tra i sistemi operativi usati dall'azienda per identificare eventuali problemi di supporto di TLS 1.2.Compatibility testing across operating systems used by your business to identify any TLS 1.2 support issues.

  • Coordinamento con partner commerciali e clienti per notificare il passaggio per deprecare TLS 1.0.Coordination with your own business partners and customers to notify them of your move to deprecate TLS 1.0.

  • Capire quali client potrebbero non essere più in grado di connettersi ai server una volta disabilitato TLS 1.0.Understanding which clients may no longer be able to connect to your servers once TLS 1.0 is disabled.

L'obiettivo di questo documento è fornire consigli che consentono di rimuovere gli ostacoli tecnici per la disabilitazione di TLS 1.0, aumentando al contempo la visibilità dell'impatto di questo cambiamento sui clienti.The goal of this document is to provide recommendations which can help remove technical blockers to disabling TLS 1.0 while at the same time increasing visibility into the impact of this change to your own customers. Il completamento di queste indagini può contribuire a ridurre l'impatto aziendale della vulnerabilità di sicurezza successiva in TLS 1.0.Completing such investigations can help reduce the business impact of the next security vulnerability in TLS 1.0. Ai fini di questo documento, i riferimenti alla deprecazione di TLS 1.0 includono anche TLS 1.1.For the purposes of this document, references to the deprecation of TLS 1.0 also include TLS 1.1.

Gli sviluppatori di software aziendali hanno un'esigenza strategica di adottare soluzioni più sicure e agili per il futuro (altrimenti note come agilità crittografica) per affrontare i compromessi dei protocolli di sicurezza futuri.Enterprise software developers have a strategic need to adopt more future-safe and agile solutions (otherwise known as Crypto Agility) to deal with future security protocol compromises. Sebbene in questo documento si propongano soluzioni agili per l'eliminazione dell'hardcoding di TLS, le soluzioni di agilità crittografica più ampie esulano dall'ambito di questo documento.While this document proposes agile solutions to the elimination of TLS hardcoding, broader Crypto Agility solutions are beyond the scope of this document.

Stato corrente dell'implementazione di TLS 1.0 da parte di MicrosoftThe Current State of Microsoft's TLS 1.0 implementation

L'implementazione di TLS 1.0 da parte di Microsoft non presenta vulnerabilità di sicurezza note.Microsoft's TLS 1.0 implementation is free of known security vulnerabilities. A causa del rischio di futuri attacchi al downgrade del protocollo e di altre vulnerabilità di TLS 1.0 non specifiche dell'implementazione di Microsoft, è consigliabile, laddove possibile, rimuovere le dipendenze da tutti i protocolli di sicurezza precedenti a TLS 1.2 (TLS 1.1/1.0/SSLv3/SSLv2).Due to the potential for future protocol downgrade attacks and other TLS 1.0 vulnerabilities not specific to Microsoft's implementation, it is recommended that dependencies on all security protocols older than TLS 1.2 be removed where possible (TLS 1.1/1.0/ SSLv3/SSLv2).

Per la pianificazione della migrazione a TLS 1.2+, gli sviluppatori e gli amministratori di sistema devono essere consapevoli del rischio di hardcoding della versione del protocollo nelle applicazioni sviluppate dai propri dipendenti e partner.In planning for this migration to TLS 1.2+, developers and system administrators should be aware of the potential for protocol version hardcoding in applications developed by their employees and partners. In questo caso l'hardcoding significa che la versione TLS è fissata su una versione obsoleta e meno sicura rispetto alle versioni più recenti.Hardcoding here means that the TLS version is fixed to a version that is outdated and less secure than newer versions. Le versioni TLS più recenti della versione hardcoded non possono essere usate senza modificare il programma in questione.TLS versions newer than the hardcoded version cannot be used without modifying the program in question. Questa classe di problemi non può essere risolta senza modifiche al codice sorgente e senza la distribuzione di aggiornamenti software.This class of problem cannot be addressed without source code changes and software update deployment. L'hardcoding della versione del protocollo era comune in passato a scopo di test e supporto, in quanto molti browser e sistemi operativi diversi avevano diversi livelli di supporto di TLS.Protocol version hardcoding was commonplace in the past for testing and supportability purposes as many different browsers and operating systems had varying levels of TLS support.

Garantire il supporto per TLS 1.2 in tutti i sistemi operativi distribuitiEnsuring support for TLS 1.2 across deployed operating systems

Molti sistemi operativi hanno valori predefiniti della versione TLS obsoleti o limiti di cui è necessario tenere conto.Many operating systems have outdated TLS version defaults or support ceilings that need to be accounted for. L'utilizzo di Windows 8/Server 2012 o versioni successive significa che TLS 1.2 sarà la versione predefinita del protocollo di sicurezza:Usage of Windows 8/Server 2012 or later means that TLS 1.2 will be the default security protocol version:

Figura 1: Supporto del protocollo di sicurezza in base alla versione del sistema operativoFigure 1: Security Protocol Support by OS Version

Sistema operativo WindowsWindows OS SSLv2SSLv2 SSLv3SSLv3 TLS 1.0TLS 1.0 TLS 1.1TLS 1.1 TLS 1.2TLS 1.2
Windows VistaWindows Vista AttivatoEnabled AttivatoEnabled DefaultDefault Non supportatoNot Supported Non supportatoNot Supported
Windows Server 2008Windows Server 2008 AttivatoEnabled AttivatoEnabled DefaultDefault Disattivato*Disabled* Disattivato*Disabled*
Windows 7 (WS2008 R2)Windows 7 (WS2008 R2) AttivatoEnabled AttivatoEnabled DefaultDefault Disattivato*Disabled* Disattivato*Disabled*
Windows 8 (WS2012)Windows 8 (WS2012) DisabledDisabled AttivatoEnabled AttivatoEnabled AttivatoEnabled DefaultDefault
Windows 8.1 (WS2012 R2)Windows 8.1 (WS2012 R2) DisabledDisabled AttivatoEnabled AttivatoEnabled AttivatoEnabled DefaultDefault
Windows 10Windows 10 DisabledDisabled AttivatoEnabled AttivatoEnabled AttivatoEnabled DefaultDefault
Windows Server 2016Windows Server 2016 Non supportatoNot Supported DisabledDisabled AttivatoEnabled AttivatoEnabled DefaultDefault

*TLS 1.1/1.2 può essere abilitato su Windows Server 2008 tramite questo pacchetto facoltativo di Windows Update.*TLS 1.1/1.2 can be enabled on Windows Server 2008 via this optional Windows Update package.

Per altre informazioni sulla deprecazione di TLS 1.0/1.1 in Microsoft IE/Edge, vedere Modernizzazione delle connessioni TLS in Microsoft Edge e Internet Explorer 11, Modifiche che influiscono sulla compatibilità del sito in Microsoft Edge e Disabilitazione di TLS/1.0 e TLS/1.1 nel nuovo browser Microsoft EdgeFor more information on TLS 1.0/1.1 deprecation in IE/Edge, see Modernizing TLS connections in Microsoft Edge and Internet Explorer 11, Site compatibility-impacting changes coming to Microsoft Edge and Disabling TLS/1.0 and TLS/1.1 in the new Edge Browser

Un modo rapido per determinare quale versione di TLS verrà richiesta dai vari client quando si connettono ai servizi online consiste nel fare riferimento alla simulazione di handshake in Qualys SSL Labs.A quick way to determine what TLS version will be requested by various clients when connecting to your online services is by referring to the Handshake Simulation at Qualys SSL Labs. Questa simulazione riguarda le combinazioni di sistema operativo client/browser tra i produttori.This simulation covers client OS/browser combinations across manufacturers. Vedere l'Appendice A alla fine di questo documento per un esempio dettagliato che mostra le versioni del protocollo TLS negoziate da varie combinazioni di sistema operativo client/browser simulate durante la connessione a www.microsoft.com.See Appendix A at the end of this document for a detailed example showing the TLS protocol versions negotiated by various simulated client OS/browser combinations when connecting to www.microsoft.com.

Se non è già stato completato, è consigliabile eseguire un inventario dei sistemi operativi usati dall'azienda, dai clienti e dai partner (gli ultimi due tramite diffusione/comunicazione o almeno una raccolta di stringhe HTTP utente-agente).If not already complete, it is highly recommended to conduct an inventory of operating systems used by your enterprise, customers and partners (the latter two via outreach/communication or at least HTTP User-Agent string collection). Questo inventario può essere ulteriormente integrato dall'analisi del traffico nella rete perimetrale aziendale.This inventory can be further supplemented by traffic analysis at your enterprise network edge. In una situazione di questo tipo, l'analisi del traffico produrrà le versioni TLS negoziate correttamente da clienti/partner che si connettono ai servizi, ma il traffico stesso rimarrà crittografato.In such a situation, traffic analysis will yield the TLS versions successfully negotiated by customers/partners connecting to your services, but the traffic itself will remain encrypted.

Miglioramenti di progettazione di Microsoft per eliminare le dipendenze di TLS 1.0Microsoft's Engineering Improvements to eliminate TLS 1.0 dependencies

Dalla versione v1 di questo documento, Microsoft ha fornito una serie di aggiornamenti software e nuove funzionalità per supportare la deprecazione di TLS 1.0.Since the v1 release of this document, Microsoft has shipped a number of software updates and new features in support of TLS 1.0 deprecation. incluse le seguenti:These include:

  • Registrazione personalizzata IIS per correlare l'IP client/stringa dell'agente utente, l'URI del servizio, la versione del protocollo TLS e il pacchetto di crittografia.IIS custom logging to correlate client IP/user agent string, service URI, TLS protocol version and cipher suite.

    • Con questa registrazione, gli amministratori possono infine quantificare l'esposizione dei clienti a un TLS vulnerabile.With this logging, admins can finally quantify their customers' exposure to weak TLS.
  • SecureScore: per aiutare gli amministratori del tenant di Office 365 a identificare l'utilizzo di TLS vulnerabili, è stato creato il portale SecureScore allo scopo di condividere queste informazioni poiché TLS 1.0 non è più supportato da Office 365 da ottobre 2018.SecureScore - To help Office 365 tenant admins identify their own weak TLS usage, the SecureScore portal has been built to share this information as TLS 1.0 exited support in Office 365 in October 2018.

    • Questo portale fornisce agli amministratori del tenant di Office 365 le informazioni importanti necessarie per raggiungere i propri clienti che potrebbero non essere a conoscenza delle proprie dipendenze di TLS 1.0.This portal provides Office 365 tenant admins with the valuable information they need to reach out to their own customers who may be unaware of their own TLS 1.0 dependencies.

    • Per altre informazioni, vedere https://securescore.microsoft.com/.Please visit https://securescore.microsoft.com/ for more information.

  • Aggiornamenti di .NET Framework per eliminare l'hardcoding a livello di app e impedire le dipendenze di TLS 1.0 ereditate dal framework..Net Framework updates to eliminate app-level hardcoding and prevent framework-inherited TLS 1.0 dependencies.

  • Sono state rilasciate le linee guida per gli sviluppatori e gli aggiornamenti software per aiutare i clienti a identificare ed eliminare le dipendenze .NET da TLS vulnerabili: Procedure consigliate per Transport Layer Security (TLS) con .NET FrameworkDeveloper Guidance and software updates have been released to help customers identify and eliminate .Net dependencies on weak TLS: Transport Layer Security (TLS) best practices with the .NET Framework

    • Informazioni: è probabile che tutte le app destinate a .NET 4.5 o versioni precedenti debbano essere modificate per supportare TLS 1.2.FYI: All apps targeting .NET 4.5 or below are likely going to have to be modified in order to support TLS 1.2.
  • È stato eseguito il backporting di TLS 1.2 a Windows Server 2008 SP2 e XP POSReady 2009 per aiutare i clienti con obblighi legacy.TLS 1.2 has been backported to Windows Server 2008 SP2 and XP POSReady 2009 to help customers with legacy obligations.

  • Verranno effettuati altri annunci all'inizio del 2019 e comunicati negli aggiornamenti successivi di questo documento.More announcements will be made in early 2019 and communicated in subsequent updates of this document.

Ricerca e correzione delle dipendenze di TLS 1.0 nel codiceFinding and fixing TLS 1.0 dependencies in code

Per i prodotti che usano le librerie di crittografia e i protocolli di sicurezza forniti dal sistema operativo Windows, i passaggi seguenti consentono di identificare qualsiasi utilizzo di TLS 1.0 hardcoded nelle applicazioni:For products using the Windows OS-provided cryptography libraries and security protocols, the following steps should help identify any hardcoded TLS 1.0 usage in your applications:

  1. Identificare tutte le istanze di AcquireCredentialsHandle().Identify all instances of AcquireCredentialsHandle(). Questo consente ai revisori di avvicinarsi a blocchi di codice in cui TLS può essere hardcoded.This helps reviewers get closer proximity to code blocks where TLS may be hardcoded.

  2. Esaminare tutte le istanze delle strutture SecPkgContext_SupportedProtocols e SecPkgContext_ConnectionInfo per verificare la presenza di TLS hardcoded.Review any instances of the SecPkgContext_SupportedProtocols and SecPkgContext_ConnectionInfo structures for hardcoded TLS.

  3. Nel codice nativo impostare tutte le assegnazioni diverse da zero di grbitEnabledProtocols su zero.In native code, set any non-zero assignments of grbitEnabledProtocols to zero. Ciò consente al sistema operativo di usare la versione TLS predefinita.This allows the operating system to use its default TLS version.

  4. Disabilitare la modalità FIPS se è abilitata a causa del rischio di conflitti con le impostazioni necessarie per disabilitare in modo esplicito TLS 1.0/1.1 in questo documento.Disable FIPS Mode if it is enabled due to the potential for conflict with settings required for explicitly disabling TLS 1.0/1.1 in this document. Per altre informazioni, vedere l'Appendice B.See Appendix B for more information.

  5. Aggiornare e ricompilare tutte le applicazioni che usano WinHTTP ospitate su Server 2012 o versioni precedenti.Update and recompile any applications using WinHTTP hosted on Server 2012 or older.

    1. App gestite: ricompilare e ridestinare alla versione .NET Framework più recenteManaged apps – rebuild and retarget against the latest .NET Framework version

    2. Le applicazioni devono aggiungere il codice per supportare TLS 1.2 tramite WinHttpSetOptionApplications must add code to support TLS 1.2 via WinHttpSetOption

  6. Per individuare tutte le istanze, analizzare il codice sorgente e i file di configurazione dei servizi online per identificare i modelli riportati di seguito corrispondenti ai valori di tipo enumerato usati comunemente in TLS hardcoded:To cover all the bases, scan source code and online service configuration files for the patterns below corresponding to enumerated type values commonly used in TLS hardcoding:

    1. SecurityProtocolTypeSecurityProtocolType

    2. SSLv2, SSLv23, SSLv3, TLS1, TLS 10, TLS11SSLv2, SSLv23, SSLv3, TLS1, TLS 10, TLS11

    3. WINHTTP_FLAG_SECURE_PROTOCOL_WINHTTP_FLAG_SECURE_PROTOCOL_

    4. SP_PROT_SP_PROT_

    5. NSStreamSocketSecurityLevelNSStreamSocketSecurityLevel

    6. PROTOCOL_SSL o PROTOCOL_TLSPROTOCOL_SSL or PROTOCOL_TLS

La soluzione consigliata in tutti i casi sopra indicati consiste nel rimuovere la selezione della versione del protocollo hardcoded e rinviare all'impostazione predefinita del sistema operativo.The recommended solution in all cases above is to remove the hardcoded protocol version selection and defer to the operating system default. Se si usa DevSkim, fare clic qui per visualizzare le regole relative ai controlli precedenti che è possibile usare con il proprio codice.If you are using DevSkim, click here to see rules covering the above checks which you can use with your own code.

Windows PowerShell usa .NET Framework 4.5, che non include TLS 1.2 come protocollo disponibile.Windows PowerShell uses .NET Framework 4.5, which does not include TLS 1.2 as an available protocol. Per ovviare a questo problema, sono disponibili due soluzioni:To work around this, two solutions are available:

1.  <span data-ttu-id="5d5b5-235">Modificare lo script in questione per includere quanto segue:         </span><span class="sxs-lookup"><span data-stu-id="5d5b5-235">Modify the script in question to include the following:         </span></span>[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;

2.  <span data-ttu-id="5d5b5-236">Aggiungere una chiave del Registro di sistema a livello di sistema, ad esempio tramite criteri di gruppo, in qualsiasi computer che debba eseguire connessioni TLS 1.2 da un'app .NET.</span><span class="sxs-lookup"><span data-stu-id="5d5b5-236">Add a system-wide registry key (e.g. via group policy) to any machine that needs to make TLS 1.2 connections from a .NET app.</span></span> <span data-ttu-id="5d5b5-237">In questo modo, .NET userà le versioni TLS con le "impostazioni predefinite del sistema" aggiungendo TLS 1.2 come protocollo disponibile E consentirà agli script di usare le versioni TLS future quando saranno supportate dal sistema operativo.</span><span class="sxs-lookup"><span data-stu-id="5d5b5-237">This will cause .NET to use the "System Default" TLS versions which adds TLS 1.2 as an available protocol AND it will allow the scripts to use future TLS Versions when the OS supports them.</span></span> <span data-ttu-id="5d5b5-238">(ad esempio, TLS 1.3)</span><span class="sxs-lookup"><span data-stu-id="5d5b5-238">(e.g. TLS 1.3)</span></span>  

    <span data-ttu-id="5d5b5-239">reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64</span><span class="sxs-lookup"><span data-stu-id="5d5b5-239">reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64</span></span>

    <span data-ttu-id="5d5b5-240">reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32</span><span class="sxs-lookup"><span data-stu-id="5d5b5-240">reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32</span></span>

Le soluzioni (1) e (2) si escludono a vicenda, ovvero non devono essere implementate insieme.Solutions (1) and (2) are mutually-exclusive, meaning they need not be implemented together.

Ricompilare/ridestinare le applicazioni gestite usando la versione più recente di .NET FrameworkRebuild/retarget managed applications using the latest .Net Framework version

Le applicazioni che usano versioni di .NET Framework precedenti alla 4.7 possono avere limitazioni che limitano efficacemente il supporto a TLS 1.0 indipendentemente dalle impostazioni predefinite del sistema operativo sottostante.Applications using .NET framework versions prior to 4.7 may have limitations effectively capping support to TLS 1.0 regardless of the underlying OS defaults. Per altre informazioni, fare riferimento al diagramma seguente e alla pagina https://docs.microsoft.com/dotnet/framework/network-programming/tls.Refer to the below diagram and https://docs.microsoft.com/dotnet/framework/network-programming/tls for more information.

DOTNETTLS.png

SystemDefaultTLSVersion ha la precedenza sulla destinazione a livello di app delle versioni TLS.SystemDefaultTLSVersion takes precedence over app-level targeting of TLS versions. La procedura consigliata consiste nel rinviare sempre alla versione TLS predefinita del sistema operativo.The recommended best practice is to always defer to the OS default TLS version. È anche l'unica soluzione di crittografia agile che consente alle app di sfruttare il supporto futuro di TLS 1.3.It is also the only crypto-agile solution that lets your apps take advantage of future TLS 1.3 support.

Se la destinazione è rappresentata da versioni di .NET Framework precedenti, ad esempio 4.5.2 o 3.5, per impostazione predefinita l'applicazione userà i protocolli precedenti e non consigliati come SSL 3.0 o TLS 1.0.If you are targeting older versions of .NET Framework such as 4.5.2 or 3.5, then by default your application will use the older and not recommended protocols such as SSL 3.0 or TLS 1.0. È consigliabile eseguire l'aggiornamento alle versioni più recenti di .NET Framework, ad esempio .NET Framework 4.6, o impostare le chiavi appropriate del Registro di sistema per UseStrongCrypto.It is strongly recommended that you upgrade to newer versions of .NET Framework such as .NET Framework 4.6 or set the appropriate registry keys for 'UseStrongCrypto'.

Test con TLS 1.2+Testing with TLS 1.2+

Seguendo le correzioni consigliate nella sezione precedente, i prodotti devono essere sottoposti a test di regressione per gli errori di negoziazione del protocollo e la compatibilità con altri sistemi operativi nell'azienda.Following the fixes recommended in the section above, products should be regression-tested for protocol negotiation errors and compatibility with other operating systems in your enterprise.

  • Il problema più comune in questo test di regressione sarà un errore di negoziazione TLS dovuto a un tentativo di connessione client da un sistema operativo o un browser che non supporta TLS 1.2.The most common issue in this regression testing will be a TLS negotiation failure due to a client connection attempt from an operating system or browser that does not support TLS 1.2.

    • Ad esempio, un client Vista non riuscirà a negoziare TLS con un server configurato per TLS 1.2+ perché la versione TLS massima supportata di Vista è la 1.0.For example, a Vista client will fail to negotiate TLS with a server configured for TLS 1.2+ as Vista's maximum supported TLS version is 1.0. Tale client deve essere aggiornato o rimosso in un ambiente TLS 1.2+.That client should be either upgraded or decommissioned in a TLS 1.2+ environment.
  • I prodotti che usano l'autenticazione TLS reciproca basata su certificati possono richiedere test di regressione aggiuntivi perché il codice di selezione dei certificati associato a TLS 1.0 è meno espressivo di quello per TLS 1.2.Products using certificate-based Mutual TLS authentication may require additional regression testing as the certificate-selection code associated with TLS 1.0 was less expressive than that for TLS 1.2.

    • Se un prodotto negozia MTLS con un certificato da una posizione non standard (all'esterno degli archivi certificati con nomi standard in Windows), potrebbe essere necessario aggiornare il codice per assicurarsi che il certificato venga acquisito correttamente.If a product negotiates MTLS with a certificate from a non-standard location (outside of the standard named certificate stores in Windows), then that code may need updating to ensure the certificate is acquired correctly.
  • Le interdipendenze dei servizi devono essere esaminate per identificare le aree problematiche.Service interdependencies should be reviewed for trouble spots.

    • Tutti i servizi che interagiscono con servizi di terze parti devono eseguire test di interoperabilità aggiuntivi con tali terze parti.Any services which interoperate with 3rd-party services should conduct additional interop testing with those 3rd parties.

    • Le applicazioni non Windows o i sistemi operativi server in uso richiedono l'analisi e la conferma che possono supportare TLS 1.2.Any non-Windows applications or server operating systems in use require investigation / confirmation that they can support TLS 1.2. L'analisi è il modo più semplice per determinarlo.Scanning is the easiest way to determine this.

Un progetto semplice per testare queste modifiche in un servizio online è costituito dalle operazioni seguenti:A simple blueprint for testing these changes in an online service consists of the following:

  1. Eseguire un'analisi dei sistemi dell'ambiente di produzione per identificare i sistemi operativi che non supportano TLS 1.2.Conduct a scan of production environment systems to identify operating systems which do not support TLS 1.2.

  2. Analizzare il codice sorgente e i file di configurazione dei servizi online per identificare TLS hardcoded come descritto in "Ricerca e correzione delle dipendenze di TLS 1.0 nel codice".Scan source code and online service configuration files for hardcoded TLS as described in "Finding and fixing TLS 1.0 dependencies in code"

  3. Aggiornare/ricompilare le applicazioni come richiesto:Update/recompile applications as required:

    1. App gestiteManaged apps

      1. Ricompilare con la versione .NET Framework più recente.Rebuild against the latest .NET Framework version.

      2. Verificare che qualsiasi utilizzo dell'enumerazione SSLProtocols sia impostato su SSLProtocols.None per poter usare le impostazioni predefinite del sistema operativo.Verify any usage of the SSLProtocols enumeration is set to SSLProtocols.None in order to use OS default settings.

    2. App WinHTTP: ricompilare con WinHttpSetOption per supportare TLS 1.2WinHTTP apps – rebuild with WinHttpSetOption to support TLS 1.2

  4. Avviare il test in un ambiente di pre-produzione o di gestione temporanea con tutti i protocolli di sicurezza precedenti a TLS 1.2 disabilitati tramite il Registro di sistema.Start testing in a pre-production or staging environment with all security protocols older than TLS 1.2 disabled via registry.

  5. Correggere tutte le istanze rimanenti di hardcoding di TLS man mano che vengono rilevate durante il test.Fix any remaining instances of TLS hardcoding as they are encountered in testing. Ridistribuire il software ed eseguire una nuova esecuzione dei test di regressione.Redeploy the software and perform a new regression test run.

Notifica ai partner dei piani di deprecazione di TLS 1.0Notifying partners of your TLS 1.0 deprecation plans

Dopo aver risolto l'hardcoding di TLS e aver completato gli aggiornamenti del sistema operativo/framework di sviluppo, se si sceglie di deprecare TLS 1.0 sarà necessario coordinarsi con clienti e partner:After TLS hardcoding is addressed and operating system/development framework updates are completed, should you opt to deprecate TLS 1.0 it will be necessary to coordinate with customers and partners:

  • Contattare tempestivamente i partner/clienti è essenziale per una corretta implementazione della deprecazione di TLS 1.0.Early partner/customer outreach is essential to a successful TLS 1.0 deprecation rollout. Questa comunicazione dovrebbe avvenire come minimo tramite post di blog, white paper o altri contenuti Web.At a minimum this should consist of blog postings, whitepapers or other web content.

  • Ogni partner dovrà valutare la propria conformità a TLS 1.2 tramite le iniziative di sistema operativo/analisi del codice/test di regressione descritte nelle sezioni precedenti.Partners each need to evaluate their own TLS 1.2 readiness through the operating system/code scanning/regression testing initiatives described in above sections.

ConclusioniConclusion

La rimozione delle dipendenze di TLS 1.0 è un problema complicato da affrontare in ambienti end-to-end.Removing TLS 1.0 dependencies is a complicated issue to drive end to end. Microsoft e i partner del settore stanno intervenendo oggi su questo problema per garantire che l'intero stack di prodotti sia più sicuro per impostazione predefinita, dai componenti del sistema operativo e i framework di sviluppo fino alle applicazioni o ai servizi basati su di essi.Microsoft and industry partners are taking action on this today to ensure our entire product stack is more secure by default, from our OS components and development frameworks up to the applications/services built on top of them. Seguendo le indicazioni riportate in questo documento, la propria azienda potrà tracciare la strada giusta e sapere quali sono le sfide da affrontare.Following the recommendations made in this document will help your enterprise chart the right course and know what challenges to expect. Tali indicazione consentiranno inoltre ai clienti di preparasi meglio alla transizione.It will also help your own customers become more prepared for the transition.

Appendice A: Simulazione di handshake per vari client che si connettono a www.microsoft.com, per gentile concessione di SSLLabs.comAppendix A: Handshake Simulation for various clients connecting to www.microsoft.com, courtesy SSLLabs.com

Risultati della simulazione di handshake

Appendice B: Deprecazione di TLS 1.0/1.1 mantenendo la modalità FIPSAppendix B: Deprecating TLS 1.0/1.1 while retaining FIPS Mode

Attenersi alla procedura seguente se la rete richiede la modalità FIPS ma si vuole anche deprecare TLS 1.0/1.1:Follow the steps below if your network requires FIPS Mode but you also want to deprecate TLS 1.0/1.1:

  1. Configurare le versioni TLS tramite il Registro di sistema, impostando "Abilitato" su zero per le versioni di TLS indesiderate.Configure TLS versions via the registry, by setting "Enabled" to zero for the unwanted TLS versions.

  2. Disabilitare la curva 25519 (solo Server 2016) tramite Criteri di gruppo.Disable Curve 25519 (Server 2016 only) via Group Policy.

  3. Disabilitare tutte le suite di crittografia usando gli algoritmi che non sono consentiti dalla pubblicazione FIPS pertinente.Disable any cipher suites using algorithms that aren't allowed by the relevant FIPS publication. Per Server 2016 (presupponendo che siano attive le impostazioni predefinite) questo significa disabilitare la crittografia RC4, PSK e NULL.For Server 2016 (assuming the default settings are in effect) this is means disabling RC4, PSK and NULL ciphers.

Collaboratori/ringraziamentiContributors/Thanks to

Mark CartwrightMark Cartwright
Bryan SullivanBryan Sullivan
Patrick JunglesPatrick Jungles
Michael ScovettaMichael Scovetta
Tony RiceTony Rice
David LeBlancDavid LeBlanc
Mortimer CookMortimer Cook
Daniel SommerfeldDaniel Sommerfeld
Andrei PopovAndrei Popov
Michiko ShortMichiko Short
Justin BurkeJustin Burke
Gov MaharajGov Maharaj
Brad TurnerBrad Turner
Sean StevensonSean Stevenson