web-dev-qa-db-fra.com

Certificat SSL manquant dans la liste déroulante dans le Gestionnaire de configuration SQL Server

J'essaie de configurer SQL Server 2014 afin de pouvoir me connecter à distance à l'aide de SSL. Un certificat valide générique est installé sur le serveur et le nom de domaine du certificat (exemple.com) correspond au nom de domaine complet du serveur (test.windows-server-test.example.com).

Le problème est que dans SQL Server Configuration Manager, le certificat n'est pas répertorié et je ne peux donc pas le sélectionner.

 blank dropdown

C'est-à-dire que je suis coincé à l'étape 2.e.2 de ce didacticiel MS

9
Jonah

Après communication en commentaires, je peux supposer que votre principal problème est la partie CN du certificat que vous utilisez. Pour que la communication TLS réussisse avec IIS Server, il n’ya pas de restrictions aussi strictes que celles de SQL Server.

Microsoft exige (voir ici ) que le nom du certificat doit être le nom de domaine complet (FQDN) de l’ordinateur. Cela signifie que la partie Subject du certificat ressemble à CN = test.widows-server-test.example.com, où test.widows-server-test.example.com est le nom de domaine complet de votre ordinateur. Il ne suffit pas d'utiliser par exemple CN = * .example.com et Subject Alternative Name, qui contient DNS Name=*.example.com et DNS Name=test.widows-server-test.example.com, DNS Name=test1.widows-server-test.example.com, DNS Name=test.widows-server-test2.example.com, etc. Ce certificat sera OK pour TLS, mais SQL Server le supprimera. Voir l'article , qui décrit les problèmes proches.

Je vous recommande de créer un certificat auto-signé avec un CN égal à FQDN du serveur SQL et de vérifier que le certificat sera vu par le Gestionnaire de configuration SQL Server.

UPDATED: j'ai un peu plus analysé le problème par rapport à Process Monitor et découvert que deux valeurs de la base de registre sont importantes pour SQL Server Configuration Manager: les valeurs Hostname et Domain sous la clé.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Si je remplace Domain et Hostname par les valeurs correspondant au CN du certificat, celui-ci sera déjà affiché dans le Gestionnaire de configuration SQL Server. Ce ne sont peut-être pas tous des problèmes, mais cela montre que SQL Server nécessitait beaucoup plus qu'un serveur Web (IIS par exemple).

UPDATED 2: J'ai examiné le problème une fois de plus en détail et je pense avoir trouvé le moyen de configurer un certificat SSL commun que vous avez déjà (par exemple, un certificat SSL gratuit de Let's Encrypt , StartSSL ou un autre).

Il est important de distinguer ce que fait SQL Server Configuration Manager de la configuration requise par SQL Server. L'onglet Certificat des propriétés du Gestionnaire de configuration contient restrictions plus strictes en tant que SQL Server. Je décris ci-dessus uniquement les restrictions de SQL Server Configuration Manager, mais on peut effectuer une configuration directement dans le registre pour utiliser un certificat SSL/TLS plus commun par SQL Server. Je décris ci-dessous comment on peut faire cela.

Ce qu’il faut faire, on peut dans le registre sous la clé comme HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\MSSQLServer\SuperSocketNetLib, où la partie MSSQL12.SQL2014 peut être un peu différente dans votre cas. Le gestionnaire de configuration SQL Server nous aide à définir deux valeurs dans le registre: ForceEncryption et Certificate:

 enter image description here

La valeur Certificate est un hachage SHA1 qui peut être trouvé en examinant les propriétés du certificat:

 enter image description here

ou des propriétés étendues du certificat, que vous voyez par utilisation certutil.exe -store My:

 enter image description here

Il suffit de copier la valeur "Cert Hash (sha1)", de supprimer tous les espaces et de placer la valeur Certificate dans le registre. Après avoir défini les paramètres et redémarré le service Windows de SQL Server, vous verrez dans le fichier ERRORLOG du répertoire C:\Program Files\Microsoft SQL Server\...\MSSQL\Log la ligne suivante:

2016-04-25 21: 44: 25.89 Serveur Le certificat [Cert Hash (sha1) "C261A7C38759A5AD96AC258B62A308A26DB525AA"] a été chargé avec succès pour le cryptage.

11
Oleg

Je souhaite ajouter ceci aux futurs utilisateurs susceptibles de trébucher sur un problème similaire que j'ai rencontré avec SQL 2016 SP2 et un cluster de basculement. L'empreinte numérique du certificat ajoutée au registre devait être en majuscule.

J'espère que cela aide le prochain gars.

2
Joe Mroczek

Je me suis connecté au serveur avec un compte de domaine SQL Server (je devais l'ajouter temporairement aux administrateurs locaux) et importé le certificat dans le dossier personnel du compte de service SQL Server. redémarrez le serveur, puis SQL Server peut voir le certificat. J'espère que ça aide quelqu'un. 

0
Mary Nobakht