Dopo la comunicazione nei commenti, si può supporre che il problema principale sia la parte CN del certificato che si utilizza. Per avere una comunicazione TLS di successo per IIS Server non esistono restrizioni così forti come SQL Server.
Si consiglia di creare un certificato autofirmato con CN uguale a FQDN di SQL Server e verificare che il certificato venga visualizzato da Gestione configurazione SQL Server.
AGGIORNAMENTO: ho analizzato il problema un po 'più di rispetto di Process Monitor e ho scoperto che due valori in Registro di sistema sono importanti per SQL Server Configuration Manager: i valori Hostname
e Domain
sotto la chiave
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Se cambio Domain
e Hostname
nei valori che corrispondono a CN del certificato, il certificato verrà già visualizzato in Gestione configurazione SQL Server. Potrebbe non essere tutti i problemi, ma mostra che SQL Server richiede molto di più come server Web (IIS per esempio).
AGGIORNAMENTO 2: ho esaminato il problema ancora una volta nei dettagli e credo di aver fatto trovato il modo come si possa configurare il certificato SSL comune che si dispone già di (ad esempio SSL libera certificata da Let's Encrypt, StartSSL o qualche altro) .
È importante distinguere cosa Gestione configurazione server SQL dalla configurazione richiesta da SQL Server. La scheda Certificato delle proprietà di Configuration Manager ha più restrizioni rigide come SQL Server. Descrivo in precedenza solo le restrizioni di SQL Server Configuration Manager, ma è possibile effettuare la configurazione direttamente nel Registro di sistema per utilizzare il certificato SSL/TLS più comune da SQL Server.Descritto di seguito come si può fare questo.
Cosa si può fare nel Registro sotto la chiave come HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\MSSQLServer\SuperSocketNetLib
, dove la parte MSSQL12.SQL2014
può essere leggermente diversa nel proprio caso. Gestione configurazione SQL Server ci aiuta a impostare due valori nel Registro di sistema: ForceEncryption
e Certificate
:
Il valore Certificate
è hash SHA1 che può essere trovato esaminando le proprietà del certificato:
o estese proprietà del certificato, che si vede da un utilizzo certutil.exe -store My
:
Una necessità basta copiare il "Cert Hash (sha1)" valore, rimuovere tutti gli spazi e per posizionare come il valore di Certificate
valore nel Registro di sistema. Dopo aver effettuato le impostazioni e riavviare Windows SQL Server servizio vedrà nel file di ERRORLOG
nella directory C:\Program Files\Microsoft SQL Server\...\MSSQL\Log
la linea come
2016-04-25 21: 44: 25.89 Server Il certificato [Cert Hash (sha1) "C261A7C38759A5AD96AC258B62A308A26DB525AA "] è stato caricato con successo per la crittografia.
Può essere che il certificato SSL, che è stato importato, abbia KeySpec errato: 'AT_SIGNATURE' invece di' AT_KEYEXCHANGE'. Puoi esaminare PFX usando 'certutil.exe -dump -v My.pfx' e cerca' KeySpec = 1 - AT_KEYEXCHANGE'. Puoi rimuovere il certificato (esporta in PFX prima se non lo hai già come PFX) e importarlo ancora una volta usando 'certutil.exe -v -importPFX My.pfx AT_KEYEXCHANGE' – Oleg
Grazie, ho controllato ma avevo' KeySpec = 1 - AT_KEYEXCHANGE' – Jonah
Il certificato è installato nell'archivio certificati del computer? Il valore 'CN' del certificato è uguale al nome DNS completo del computer (dove viene eseguito il server SQL)? Il certificato ha il Nome alternativo soggetto con altri valori "Nome DNS"? – Oleg