Exchange Server procedure consigliate per la configurazione di TLS
Questa documentazione descrive i passaggi necessari per configurare correttamente versioni TLS specifiche in Microsoft Exchange Server. Descrive anche come ottimizzare i pacchetti di crittografia e gli algoritmi di hash usati da TLS. La configurazione TLS errata può causare vari problemi durante l'interazione con Microsoft 365 o altri sistemi che richiedono un determinato standard TLS minimo.
Altre informazioni sui protocolli TLS sono disponibili nella documentazione del protocollo Transport Layer Security .
Consiglio
È possibile usare lo script HealthChecker di Exchange per controllare la configurazione TLS corrente del server Exchange.
Leggere attentamente, perché alcuni passaggi possono essere eseguiti solo su sistemi operativi specifici o versioni Exchange Server. Ogni sezione inizia con una matrice che mostra se un'impostazione è supportata e se è stata pre-configurata da una determinata versione Exchange Server, seguita dalla procedura per abilitare o disabilitare il protocollo O la funzionalità TLS specifica.
Aspetti da considerare prima di disabilitare una versione di TLS
Assicurarsi che ogni applicazione supporti le versioni di TLS, che rimangono abilitate. Considerazioni come (ma non solo):
- I controller di dominio e i server del catalogo globale supportano, ad esempio, solo una configurazione TLS 1.2 o TLS 1.3?
- Le applicazioni partner supportano, ad esempio, solo una configurazione TLS 1.2 o TLS 1.3?
- Il sistema operativo supporta la versione più recente del protocollo TLS TLS 1.2 su WinHTTP?
- I servizi di bilanciamento del carico supportano TLS 1.2 o TLS 1.3 in uso?
- Le applicazioni desktop, mobili e browser supportano TLS 1.2 o TLS 1.3?
- I dispositivi come le stampanti multifunzione supportano TLS 1.2 o TLS 1.3?
- Le applicazioni aziendali di terze parti o personalizzate che si integrano con Exchange Server o Microsoft 356 supportano un'implementazione TLS avanzata?
Di conseguenza, è consigliabile eseguire tutti i passaggi necessari per passare a TLS 1.2 o TLS 1.3 e non ai protocolli di sicurezza meno recenti, prima di iniziare a distribuirli in produzione nei lab che simulano gli ambienti di produzione.
I passaggi usati per disabilitare una versione TLS specifica come illustrato di seguito si applicano alle funzionalità di Exchange Server seguenti:
- Smtp (Simple Mail Transport Protocol)
- Connettività client di Outlook (Outlook Via Internet/MAPI/HTTP)
- Exchange Active Sync (EAS)
- Outlook sul Web (OWA)
- Exchange Amministrazione Center (EAC) ed Exchange Pannello di controllo (ECP)
- Individuazione automatica
- Servizi Web Exchange (EWS)
- REST (Exchange Server 2016/2019)
- Uso di PowerShell da Exchange tramite HTTPS
- POP e IMAP
Prerequisiti
Il supporto di TLS 1.3 è stato introdotto con Exchange Server 2019 Cumulative Update (CU) 15 il Windows Server 2022 e Windows Server 2025, ad eccezione del protocollo SMTP. Il supporto per questo protocollo verrà aggiunto con un aggiornamento futuro. Il supporto di TLS 1.2 è stato introdotto con Exchange Server 2013 CU19 e Exchange Server 2016 CU8. Exchange Server 2019 supporta TLS 1.2 per impostazione predefinita.
Exchange Server non può essere eseguito senza Windows Server ed è quindi importante che siano installati gli aggiornamenti più recenti del sistema operativo per eseguire un'implementazione TLS stabile e sicura.
È anche necessario disporre della versione più recente di .NET Framework e delle patch associate supportate dall'cu in uso.
In base al sistema operativo, assicurarsi che siano presenti anche gli aggiornamenti seguenti (devono essere installati se il server è aggiornato in Windows Aggiornamenti):
Se il sistema operativo è Windows Server 2012 o Windows Server 2012 R2, è necessario installare KB3161949 e KB2973337 prima di poter abilitare TLS 1.2.
Avviso
il supporto esteso per Windows Server 2012 e Windows Server 2012 R2 è terminato il 10 ottobre 2023. Questi server non ricevono più Sicurezza di Windows Aggiornamenti senza una ESU. È consigliabile eseguire la migrazione a una versione supportata il prima possibile.
Assicurarsi di riavviare il Exchange Server dopo l'applicazione della configurazione TLS. Diventa attivo dopo il riavvio del server.
Preparazione di .NET Framework per ereditare le impostazioni predefinite da Schannel
La tabella seguente illustra le combinazioni Exchange Server/Windows Server con la configurazione predefinita dell'ereditarietà Schannel di .NET Framework:
Exchange Server | Server Windows | Supportato | Configurato per impostazione predefinita |
---|---|---|---|
Exchange Server 2019 CU14 o versioni successive | Qualsiasi | Sì | Sì (solo nuove installazioni) |
Exchange Server 2019 CU13 o versioni precedenti | Qualsiasi | Sì | Parzialmente (SchUseStrongCrypto deve essere configurato manualmente) |
Exchange Server 2016 | Qualsiasi | Sì | No (vengono usate le impostazioni predefinite del sistema operativo) |
Exchange Server 2013 | Qualsiasi | Sì | No (vengono usate le impostazioni predefinite del sistema operativo) |
Il SystemDefaultTlsVersions
valore del Registro di sistema definisce le impostazioni predefinite della versione del protocollo di sicurezza usate da .NET Framework 4.x. Se il valore è impostato su 1
, .NET Framework 4.x eredita le impostazioni predefinite dai valori del Registro di sistema canale sicuro di Windows (Schannel DisabledByDefault
). Se il valore non è definito, si comporta come se il valore fosse impostato su 0
.
La crittografia avanzata (configurata dal valore del SchUseStrongCrypto
Registro di sistema) usa protocolli di rete più sicuri (TLS 1.3, TLS 1.2 e TLS 1.1) e blocca i protocolli non sicuri.
SchUseStrongCrypto
influisce solo sulle connessioni client (in uscita) nell'applicazione. Configurando .NET Framework 4.x per ereditare i relativi valori da Schannel si ottiene la possibilità di usare le versioni più recenti di TLS supportate dal sistema operativo, inclusi TLS 1.2 e TLS 1.3.
Abilitare l'ereditarietà Schannel di .NET Framework 4.x
Eseguire i comandi seguenti da una finestra di PowerShell con privilegi elevati per configurare l'ereditarietà Schannel di .NET Framework 4.x:
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
Abilitare l'ereditarietà Schannel di .NET Framework 3.5
Exchange Server 2013 e versioni successive non è necessaria questa impostazione. Tuttavia, è consigliabile configurarlo in modo identico alle impostazioni di .NET 4.x per garantire una configurazione coerente.
Eseguire i comandi seguenti da una finestra di PowerShell con privilegi elevati per configurare l'ereditarietà Schannel di .NET Framework 3.5:
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
Passaggi per configurare TLS 1.3
La tabella seguente illustra le combinazioni Exchange Server/Windows Server in cui è supportato TLS 1.3. La tabella mostra anche la configurazione predefinita:
Exchange Server | Server Windows | Supportato | Configurato per impostazione predefinita |
---|---|---|---|
Exchange Server 2019 CU15 | Windows Server 2022/2025 | Sì | Sì (enabled ) |
Exchange Server 2019 CU15 | Windows Server 2019 | No | N/D |
Exchange Server 2019 CU14 o versioni precedenti | Qualsiasi | No | N/D |
Exchange Server 2016 | Qualsiasi | No | N/D |
Exchange Server 2013 | Qualsiasi | No | N/D |
Abilitare TLS 1.3
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per abilitare TLS 1.3 per le connessioni client e server:
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.3" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Name "Enabled" -Value 1 -Type DWord
Come da RFC 8446 TLS 1.3 usa lo stesso spazio della suite di crittografia delle versioni precedenti di TLS. Tuttavia, i pacchetti di crittografia TLS 1.3 sono definiti in modo diverso, specificando solo le crittografie simmetriche e non possono essere usati per TLS 1.2. Analogamente, i pacchetti di crittografia per TLS 1.2 e versioni inferiori non possono essere usati con TLS 1.3.
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per configurare i pacchetti di crittografia TLS 1.3:
Enable-TlsCipherSuite -Name TLS_AES_256_GCM_SHA384 -Position 0
Enable-TlsCipherSuite -Name TLS_AES_128_GCM_SHA256 -Position 1
Disabilitare TLS 1.3
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per disabilitare in modo esplicito TLS 1.3 per le connessioni client e server:
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.3" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Name "Enabled" -Value 0 -Type DWord
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per rimuovere i pacchetti di crittografia TLS 1.3:
Remove-TlsCipherSuite -Name TLS_AES_256_GCM_SHA384 -ErrorAction SilentlyContinue
Remove-TlsCipherSuite -Name TLS_AES_128_GCM_SHA256 -ErrorAction SilentlyContinue
Passaggi per configurare TLS 1.2
La tabella seguente illustra le combinazioni Exchange Server/Windows Server in cui è supportato TLS 1.2. La tabella mostra anche la configurazione predefinita:
Exchange Server | Server Windows | Supportato | Configurato per impostazione predefinita |
---|---|---|---|
Exchange Server 2019 | Qualsiasi | Sì | Sì (enabled ) |
Exchange Server 2016 | Qualsiasi | Sì | No |
Exchange Server 2013 | Qualsiasi | Sì | No |
Abilitare TLS 1.2
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per abilitare TLS 1.2 per le connessioni client e server:
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.2" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "Enabled" -Value 1 -Type DWord
Disabilitare TLS 1.2
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per disabilitare in modo esplicito TLS 1.2 per le connessioni client e server:
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.2" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "Enabled" -Value 0 -Type DWord
Passaggi per configurare TLS 1.1
La tabella seguente mostra le combinazioni Exchange Server/Windows Server in cui è supportato TLS 1.1. La tabella mostra anche la configurazione predefinita:
Exchange Server | Server Windows | Supportato | Configurato per impostazione predefinita |
---|---|---|---|
Exchange Server 2019 | Qualsiasi | Sì | Sì (disabled ) |
Exchange Server 2016 | Qualsiasi | Sì | No |
Exchange Server 2013 | Qualsiasi | Sì | No |
Abilitare TLS 1.1
Nota
L'implementazione di Microsoft TLS 1.1 non presenta vulnerabilità di sicurezza note. Ma a causa del potenziale per futuri attacchi di downgrade del protocollo e altre vulnerabilità TLS, è consigliabile pianificare e disabilitare con attenzione TLS 1.1. Se non si pianifica con attenzione, i client perdono la connettività.
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per abilitare TLS 1.1 per le connessioni client e server:
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.1" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "Enabled" -Value 1 -Type DWord
Disabilitare TLS 1.1
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per disabilitare in modo esplicito TLS 1.1 per le connessioni client e server:
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.1" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "Enabled" -Value 0 -Type DWord
Passaggi per configurare TLS 1.0
La tabella seguente mostra le combinazioni Exchange Server/Windows Server in cui è supportato TLS 1.0. La tabella mostra anche la configurazione predefinita:
Exchange Server | Server Windows | Supportato | Configurato per impostazione predefinita |
---|---|---|---|
Exchange Server 2019 | Qualsiasi | Sì | Sì (disabled ) |
Exchange Server 2016 | Qualsiasi | Sì | No |
Exchange Server 2013 | Qualsiasi | Sì | No |
Abilitare TLS 1.0
Nota
L'implementazione di Microsoft TLS 1.0 non contiene vulnerabilità di sicurezza note. Ma a causa del potenziale per futuri attacchi di downgrade del protocollo e altre vulnerabilità TLS, è consigliabile pianificare e disabilitare attentamente TLS 1.0. Se non si pianifica con attenzione, i client perdono la connettività.
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per abilitare TLS 1.0 per le connessioni client e server:
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.0" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "Enabled" -Value 1 -Type DWord
Disabilitare TLS 1.0
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per disabilitare in modo esplicito TLS 1.0 per le connessioni client e server:
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.0" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "Enabled" -Value 0 -Type DWord
Passaggi per configurare la modalità strict di rinegoziazione TLS
La modalità strict TLS è una funzionalità di sicurezza che garantisce che solo i client con gli aggiornamenti di sicurezza necessari possano stabilire e rinegoziare le sessioni TLS con il server.
La tabella seguente mostra le combinazioni Exchange Server/Windows Server con la configurazione della modalità strict di rinegoziazione TLS predefinita:
Exchange Server | Server Windows | Supportato | Configurato per impostazione predefinita |
---|---|---|---|
Exchange Server 2019 | Qualsiasi | Sì | Sì (enabled ) |
Exchange Server 2016 | Qualsiasi | Sì | No |
Exchange Server 2013 | Qualsiasi | No | N/D |
Abilitare la modalità strict di rinegoziazione TLS
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per abilitare la modalità strict di rinegoziazione:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoClients" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoServers" -Value 0 -Type DWord
Disabilitare la modalità strict di rinegoziazione TLS
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per disabilitare in modo esplicito la modalità strict di rinegoziazione:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoClients" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoServers" -Value 1 -Type DWord
Convalidare l'utilizzo di TLS 1.2 o TLS 1.3
Dopo aver abilitato TLS 1.2 o TLS 1.3, può essere utile verificare che il lavoro abbia avuto esito positivo e che il sistema sia in grado di negoziare TLS 1.2 o TLS 1.3 per le connessioni in ingresso (server) e in uscita (client). Sono disponibili alcuni metodi per la convalida dell'utilizzo di TLS, alcuni dei quali sono illustrati nelle sezioni seguenti.
Molti protocolli usati in Exchange Server sono basati su HTTP e quindi attraversano i processi IIS nel server Exchange. MAPI/HTTP, Outlook Anywhere, Exchange Web Services, Exchange ActiveSync, REST, OWA & EAC, download della Rubrica offline e Individuazione automatica sono esempi di protocolli basati su HTTP usati da Exchange Server.
Registrazione IIS
Il team di Internet Information Services (IIS) ha aggiunto funzionalità per Windows Server 2012 R2 o versioni successive per registrare i campi personalizzati correlati alle versioni del protocollo di crittografia e alle crittografie. È consigliabile consultare il blog per la documentazione su come abilitare questi campi personalizzati e iniziare ad analizzare i log per informazioni sulle connessioni in ingresso nell'ambiente correlate ai protocolli basati su HTTP.
Questi campi personalizzati iis non esistono per Windows Server versione precedente Windows Server 2012 R2. Il servizio di bilanciamento del carico o i log del firewall potrebbero essere in grado di fornire queste informazioni. Richiedere indicazioni ai fornitori per determinare se i log possono fornire queste informazioni.
Strumenti di sviluppo di Microsoft Edge
È possibile utilizzare , Developer Tools
disponibile con Microsoft Edge, per controllare la versione di TLS usata per stabilire una connessione sicura, durante la connessione a Outlook sul Web (OWA) o exchange Amministrazione Center (ECP). A tal fine, attenersi alla seguente procedura:
Aprire il browser Microsoft Edge e stabilire una connessione HTTPS a OWA o ECP.
Premere
CTRL + SHIFT + I
per aprire .Developer Tools
Fare clic sul
+
simbolo nell'angolo in alto a destra.Fare clic sul
Security
menu a discesa.Controllare la versione di TLS nella
Connection - secure connection settings
sezione .
Intestazioni del messaggio
I dati dell'intestazione del messaggio in Exchange Server 2016 o versioni successive forniscono il protocollo negoziato e usato quando l'host di invio e ricezione ha scambiato un messaggio di posta elettronica. È possibile usare Message Header Analyzer per ottenere una panoramica chiara di ogni hop.
Esiste un'eccezione nota all'esempio di intestazioni di messaggio. Quando un client invia un messaggio connettendosi a un server tramite SMTP autenticato (noto anche come protocollo di invio client SMTP), la versione TLS nelle intestazioni dei messaggi non mostra la versione TLS corretta usata dal client. Microsoft sta esaminando la possibilità di aggiungere queste informazioni in un aggiornamento futuro.
Registrazione SMTP
I log SMTP in Exchange Server contengono il protocollo di crittografia e altre informazioni correlate alla crittografia usate durante lo scambio di posta elettronica tra due sistemi.
Quando il server è SMTP receiving system
, cercare Server value
nel log a seconda della versione di TLS usata. Se il server è SMTP sending system
, cercare Client value
nel log a seconda della versione di TLS usata.
Versione TLS | Valore del server | Valore client |
---|---|---|
TLS 1.0 | SP_PROT_TLS1_0_SERVER | SP_PROT-TLS1_0_CLIENT |
TLS 1.1 | SP_PROT_TLS1_1_SERVER | SP_PROT TLS1_1_CLIENT |
TLS 1.2 | SP_PROT_TLS1_2_SERVER | SP_PROT TLS1_2_CLIENT |
Nota
Il supporto per SMTP TLS 1.3 sarà incluso in un prossimo aggiornamento di Exchange 2019 CU15.
Nell'esempio seguente vengono cercate le connessioni eseguite tramite il protocollo TLS 1.0 nei file di log in un server Exchange, che esegue il ruolo cassetta postale:
Select-String -Path (((Get-TransportService -Identity $env:COMPUTERNAME).ReceiveProtocolLogPath).PathName.Replace("Hub","FrontEnd")+"\*.log") "SP_PROT_TLS1_0"
Esempio di ricerca di file di log in un server Exchange, che esegue il ruolo Trasporto Edge, per le connessioni effettuate tramite il protocollo TLS 1.1:
Select-String -Path (((Get-TransportService -Identity $env:COMPUTERNAME).ReceiveProtocolLogPath).PathName+"\*.log") "SP_PROT_TLS1_1"
POP e IMAP
Non esiste alcuna registrazione che espone la versione del protocollo di crittografia usata per i client POP e IMAP. Per acquisire queste informazioni, potrebbe essere necessario acquisire una traccia netmon dal server o controllare il traffico durante il flusso attraverso il servizio di bilanciamento del carico o il firewall in cui si sta verificando il bridging HTTPS.
Procedure consigliate per algoritmi di crittografia e hash
I passaggi descritti in questa sezione possono essere usati per configurare Exchange Server 2016 con lo stesso set di algoritmi di crittografia e hash di Exchange Server 2019. Questi passaggi non sono necessari per Exchange Server 2019, perché viene già fornito con una configurazione preconfigurata di crittografia e algoritmo hash.
Come prerequisito, è prima necessario configurare TLS 1.2 e quindi disabilitare TLS 1.0 e TLS 1.1. È consigliabile applicare le impostazioni seguenti separatamente dalla disabilitazione di TLS 1.0 e TLS 1.1 per isolare i problemi di configurazione con i client problematici.
Abilitare i pacchetti di crittografia consigliati
Windows Server 2012 e Windows Server 2012 R2
Eseguire i comandi seguenti da una finestra di PowerShell con privilegi elevati per configurare i pacchetti di crittografia consigliati:
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002" -Name "Functions" -PropertyType MultiString -Value "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256" -Force
Windows Server 2016
Eseguire i comandi seguenti da una finestra di PowerShell con privilegi elevati per configurare i pacchetti di crittografia consigliati.
Nota
È possibile configurare i pacchetti di crittografia usando un oggetto Criteri di gruppo Object (GPO). Non è possibile configurarli manualmente usando i cmdlet Enable-TlsCipherSuite o Disable-TLSCipherSuite se erano già configurati tramite oggetto Criteri di gruppo o se la voce del Functions
Registro di sistema esiste già nel HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002
percorso.
Innanzitutto, disabilitare tutti i pacchetti di crittografia:
foreach ($suite in (Get-TLSCipherSuite).Name) {
if (-not([string]::IsNullOrWhiteSpace($suite))) {
Disable-TlsCipherSuite -Name $suite -ErrorAction SilentlyContinue
}
}
Riabilitare quindi solo i pacchetti di crittografia TLS 1.2 consigliati:
$cipherSuites = @('TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',
'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256',
'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384',
'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',
'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384',
'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256',
'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384',
'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256')
$suiteCount = 0
foreach ($suite in $cipherSuites) {
Enable-TlsCipherSuite -Name $suite -Position $suiteCount
$suiteCount++
}
Disabilitare crittografie e hash obsoleti
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per disabilitare in modo esplicito crittografie e hash obsoleti:
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "Hashes" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "Ciphers" -ErrorAction SilentlyContinue
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("DES 56/56")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("NULL")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC2 40/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC2 56/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC2 56/56")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 40/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 56/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 64/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 128/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("Triple DES 168")
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes" -Name "MD5" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\DES 56/56" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\NULL" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 40/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 56/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 56/56" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 64/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\Triple DES 168" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\MD5" -Name "Enabled" -Value 0 -Type DWord
Configurare la preferenza della curva ellittica
È consigliabile disabilitare la curve25519
curva ellittica perché non è disponibile in modalità FIPS.
Altre informazioni sono disponibili nella documentazione TLS Elliptic Curves in Windows 10 versione 1607 e successive.
Eseguire il comando seguente da una finestra di PowerShell con privilegi elevati per configurare la preferenza della curva ellittica:
Disable-TlsEccCurve -Name "curve25519"
Enable-TlsEccCurve -Name "NistP384" -Position 0
Enable-TlsEccCurve -Name "NistP256" -Position 1