Data ultimo aggiornamento: 03/10/2019

Clicca per accedere al sito di NTS Informatica
Clicca per accedere all'argomentoClicca per accedere all'argomentoClicca per accedere all'argomentoClicca per accedere all'argomento
Clicca per accedere al sito di NTS Informatica

Cube2 e collegamento con protocollo TLS 1.2

In seguito all'utilizzo sempre più esteso e obbligatorio nelle reti, del protocollo di comunicazione con sicurezza TLS 1.2, e abbandono dei protocolli precedenti (deprecati), dalla versione Cube2 SR3 sono state effettuate alcune implementazioni per permettere l'utilizzo del protocollo di comunicazione TLS 1.2, verso SQL Server e Crystal Reports.

Le versioni precedenti di Cube2 SR3 comunicano correttamente con SQL utilizzando il protocollo TLS 1.2 e SQL Server, ma alcuni accorgimenti sono necessari per permettere il funzionamento delle stampe di Crystal Reports, che di default utilizza un protocollo che non supporta TLS 1.2.
Inoltre viene reso compatibile l'installer di Cube2 (BusSetup) e i successivi aggiornamenti distribuiti con eseguibili (Busagg) in ambienti dove i protocolli TLS 1.0 e 1.1 sono disabilitati.

Nell'ultima sezione di questa pagina sono presenti diversi riferimenti all'argomento.

Tutte le operazioni segnalate richiedono che gli aggiornamenti installati nel proprio sistema operativo siano allineati agli ultimi distribuiti da Microsoft.

Stampe con Crystal Reports e TLS 1.2

Il driver standard, con il quale Crystal Reports contatta SQL Server, non è compatibile con un ambiente TLS 1.2 abilitato, e TLS 1.0 disabilitato.

In questa casistica è richiesto pertanto la installazione (nel caso non sia già presente nel sistema) e l'utilizzo di un driver compatibile, come quello da noi utilizzato, "SQL Server Native Client 11.0".
Questo driver risulta già installato in Windows 10, mentre versioni di sistemi operativi precedenti (es. Windows 7, Windows 8, Windows Server 2008 R2, Windows Server 2012, Windows Server 2016, ecc. ) potrebbero richiedere l'installazione del driver, se non presente nel sistema. In questo caso il driver può essere reperito da Microsoft: SQL SERVER NATIVE CLIENT 11.0

In seguito all'installazione di un driver più aggiornato (come, nell'esempio, SQL Server Native Client 11.0), sarà necessario abilitare una opzione di registro, per indicare a Cube2 quale driver comunicare a Crystal Reports, nella stringa di connessione:

BUSINESS/OPZIONI/CRPE_UsaSqlServerOdbcDriver

Questo parametro permette di specificare il driver, installato nel sistema, compatibile con TLS 1.2. Nei nostri test abbiamo utilizzato "SQL Server Native Client 11.0", e abbiamo selezionato questo driver fra quelli disponibili nelle proprietà della opzione indicata. Resta comunque possibile indicare un driver diverso e non incluso fra quelli da noi indicati: verrà trasferito il nome del driver indicato dall'utente (procedura utile nel caso vi siano aggiornamenti futuri al nome del driver da parte di Microsoft ).

Nota: se sono presenti report personalizzati, che prevedono anche l'indicazione di connessioni che differiscono da quella standard trasferita da Cube2, sarà necessario modificare i report per indicare il driver corretto da utilizzare durante il collegamento.

Qui sotto una visualizzazione del driver SQL Server Native Client 11.0 presente nel sistema:

Installazione/aggiornamento di Cube2 SR3

Durante l'installazione di Cube2 SR3 (BUSSETUP), o l'esecuzione degli aggiornamenti (BUSAGG), viene rilevata la eventuale disabilitazione, nel registro di Windows, dei protocolli TLS 1.0 e 1.1, attraverso la lettura delle voci:

HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server\Enabled & HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client\Enabled

HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server\Enabled & HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client\Enabled

Se una delle due proprietà è impostata 0 si assume che tale protocollo è disattivato.

Il supporto al protocollo di sicurezza TLS 1.2 è garantito solo dal nuovo Ole Db Provider di SQL Server (MSOLEDBSQL.DLL) e non dal vecchio (SQLOLEDB.DLL) da sempre utilizzato dal Setup/Aggiornamento di Business. Pertanto, il programma di Setup/Aggiornamento, all'avvio rileva se è installato tale nuovo provider.

Se il protocollo TSL 1.0 è disabilitato e il nuovo provider Ole Db MSOLEDBSQL.DLL non è installato, viene prelevato da Microsoft (o da NTS Informatica se il Setup è avviato col parametro /DOWNLOADNTS) e installato in Windows. In questa fase può essere richiesto il riavvio del sistema operativo.
Il processo di installazione viene loggato nel file msoledbsql.log, che risiederà nella system root (esempio C:\) se il programma di installazione viene interrotto, oppure nella cartella dei file/dati di Business (esempio C:\Bus) se il programma di installazione viene portato a termine. Eventuali errori di download/installazione dell'MSOLEDBSQL non determinano l'uscita dal Setup/Aggiornamento, e sono memorizzati nel log del programma di installazione BusSetup*.log o aggiornamento BusAgg*.log.

Quando il programma di Setup/Aggiornamento apre la connessione all'instanza di SQL Server scelta, qualora il protocollo TLS 1.0 è disabilitato, utilizza il nuovo provider Ole Db, quindi la stringa di connessione a SQL sarà "Provider=MSOLEDBSQL;..." al posto di "Provider=SQLOLEDB;..."

Per forzare sempre l'utilizzo del nuovo Provider, indipendentemente dalla disabilitazione del protocollo TLS 1.0 nel registro di Windows, è possibile avviare il Setup/Aggiornamento con il nuovo parametro /FORZAUSOMSOLEDBSQL

Nota: l'utilizzo di una configurazione di sicurezza di rete "mista", dove ad esempio esistono postazioni con TLS 1.0 abilitato, e altre postazioni dove TLS 1.0 è stato disabilitato, il processo di installazione/aggiornamento non può essere gestito automaticamente con la modalità sopra indicata. Questo perchè è possibile leggere il registro di Windows solo del computer corrente, e non di quello remoto (che potrebbe appunto avere configurazioni differenti nei protocolli di comunicazione).
Pertanto, se ad esempio il server dove risiede SQL Server ha attivo solo TLS 1.2 e disabilitato TLS 1.0, e non si vuole procedere con la stessa impostazione/configurazione anche sui client della rete, sarà necessario utilizzare il parametro /FORZAUSOMSOLEDBSQL durante l'installazione/aggiornamento, se questo viene eseguito dal client.

Qui sotto viene mostrato il driver installato.




Disabilitazione TLS 1.0, 1.1 e abilitazione TLS 1.2

Ad oggi (maggio 2019) Microsoft non ha previsto un tool che semplifichi la gestione dei protocolli abilitati/disabilitati.

Pertanto, per disabilitare i protocolli deprecati e considerati non sicuri (TLS 1.0 e TLS 1.1), e abilitare il protocollo TLS 1.2, si deve fare riferimento alla modifica dei parametri del registro di Windows, riportati nella pagina Microsoft:

https://docs.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings

Per agevolare una rapida configurazione, potrebbe essere utile caricare in un file con estesione .reg, e poi applicarlo, quanto di seguito riportato.
Quanto riportato qui sotto disabilita TLS 1.0, disabilita TLS 1.1, abilita TLS 1.2, come da indicazioni Microsoft:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"Enabled"=dword:00000001
"DisabledByDefault"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"Enabled"=dword:00000001
"DisabledByDefault"=dword:00000000

L'inserimento delle ultime voci elencate, riferite a TLS 1.2, devono obbligatoriamente essere inserite su tutti i sistemi per permettere l'utilizzo del TLS 1.2.

Per Windows 7 e Windows Server 2008 R2, che non prevede l'utilizzo del protocollo, è necessario verificare l'installazione, o procedere alla installazione della fix Microsoft segnalata nel KB3140245 . Inoltre è necessario abilitare questa voce:

64 bit Framework 4.x

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]

"SystemDefaultTlsVersions"=dword:00000001

32 bit Framework 4.x

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001

64 bit Framework 2.x (non utilizzato da Cube2)

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001

32 bit Framework 2.x (non utilizzato da Cube2)

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001

(vedi anche https://docs.microsoft.com/it-it/dotnet/framework/network-programming/tls )

Sistemi Operativi

Ricordiamo che i sistemi operativi antecedenti Windows 7 e Windows Server 2008 R2 non sono supportati da Microsoft:

https://support.microsoft.com/en-us/help/3154517/support-for-tls-system-default-versions-included-in-the-net-framework

Note varie

TLS - Indicazioni generali sul protocollo

https://it.wikipedia.org/wiki/Transport_Layer_Security

TLS 1.2 e SQL Server - Indicazioni sui Service Pack richiesti per le versioni antecedenti a SQL Server 2016

https://support.microsoft.com/en-us/help/3135244/tls-1-2-support-for-microsoft-sql-server

SQL Server Native Client - Lifetime

https://blogs.msdn.microsoft.com/sqlreleaseservices/snac-lifecycle-explained/

SQL Server - collegamenti OLE DB to ODBC deprecati

https://blogs.msdn.microsoft.com/sqlnativeclient/2017/10/06/announcing-the-new-release-of-ole-db-driver-for-sql-server/

SQL Server - OLE DB per SQL Server

https://docs.microsoft.com/it-it/sql/connect/oledb/oledb-driver-for-sql-server?view=sql-server-2017

Sistema operativo Windows - schema di compatibilità con TLS

https://docs.microsoft.com/en-us/windows/desktop/secauthn/protocols-in-tls-ssl--schannel-ssp-

Procedure consigliate per TLS

https://docs.microsoft.com/it-it/dotnet/framework/network-programming/tls

Riepilogo di Microsoft sulla abilitazione di TLS 1.2

https://docs.microsoft.com/it-it/sccm/core/plan-design/security/enable-tls-1-2


Clicca per accedere al sito di NTS Informatica