2016-04-23 37 views
5

Sto tentando di configurare SQL Server 2014 in modo che sia possibile connettersi in remoto tramite SSL. Sul certificato è installato un certificato jolly valido e il nome di dominio del certificato (esempio.com) corrisponde al nome di dominio completo del server (test.windows-server-test.example.com).Certificato SSL mancante dal menu a tendina in Gestione configurazione di SQL Server

Il problema è che in Gestione configurazione SQL Server, il certificato non è elencato, quindi non posso selezionarlo.

blank dropdown

Cioè, mi sono bloccato sul passo 2.e.2 da this MS tutorial.

+1

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

+0

Grazie, ho controllato ma avevo' KeySpec = 1 - AT_KEYEXCHANGE' – Jonah

+1

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

risposta

6

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.

Microsoft richiede (vedere here) quello Il nome del certificato deve essere il nome di dominio completo (FQDN) del computer. Essa significa che il soggetto parte del certificato assomiglia CN = test.widows-server-test.example.com, dove test.widows-server-test.example.com è il nome di dominio completo del computer . Non è sufficiente che si utilizza per esempio CN = * .example.com e nome soggetto alternativo, che contiene DNS Name=*.example.com e DNS Name=test.widows-server-test.example.com, DNS Name=test1.widows-server-test.example.com, DNS Name=test.widows-server-test2.example.com e così via. Tale certificato sarà OK per TLS, ma SQL Server lo eliminerà. Vedere the article, che descrive problemi ravvicinati.

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:

enter image description here

Il valore Certificate è hash SHA1 che può essere trovato esaminando le proprietà del certificato:

enter image description here

o estese proprietà del certificato, che si vede da un utilizzo certutil.exe -store My:

enter image description here

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.

+0

Grazie, quindi ho cambiato il nome del computer in "test.example.com" a causa del [avviso qui] (https://support.dnsimple.com/articles/ssl-certificate-hostname /), e ora in 'HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters' entrambi Domain era" esempio.com "e Hostname era" test ". Il cert non si stava ancora rivelando. Ho modificato manualmente il nome host in "esempio.com" ma il certificato non viene ancora visualizzato. Mi manca un passaggio? – Jonah

+0

@Jonah: imposta "Force Encryption" su Sì in Gestione configurazione SQL Server? Hai riavviato SQL Server? È possibile riavviare SQL Server? Riesci a vedere in SQL ERRORLOG qualcosa del tipo "Il certificato [Cert Hash (sha1) ...] è stato caricato con successo per la crittografia."? Che problema hai esattamente al momento? Quale messaggio di errore hai? – Oleg

+0

Ho appena provato a impostare "Force Encryption" su Sì, e ho riavviato SQL Server dai servizi con successo. L'unica voce pertinente in ERRORLOG è: 'Un certificato auto-generato è stato caricato con successo per la crittografia. Nota, che * non * si riferisce al certificato jolly che sto cercando di caricare, che non è auto-generato. Il mio problema attuale è lo stesso dell'OP: il dropdown del certificato è ancora vuoto. Non riesco a selezionare un certificato per SQL Server da utilizzare. – Jonah