Назад | Перейти на главную страницу

Настройка импортированного самоподписанного сертификата SSL в SQL Server Express

Я создал самозаверяющий сертификат и настроил его с помощью SQL Server Express. Шифрование отлично работает на моем ПК.

Когда я экспортирую сертификат на другой компьютер, я могу нормально импортировать и видеть сертификат в MMC в разделе «Личные»> «Сертификаты».

Однако, когда я пытаюсь настроить SQL Server Express на новом ПК, сертификат не отображается в раскрывающемся списке.

Какие-либо предложения?

Я пробовал кое-что из предложенных на других форумах

Убедитесь, что закрытый ключ экспортирован. Убедитесь, что сертификат был создан для локальной системы (не для пользователя). Скопируйте сертификат в доверенные сертификаты.

На данный момент у меня есть обратная связь: в качестве значения CN сертификата установлено имя компьютера, на котором он был создан на «Server1». Это не сработает при копировании на другой компьютер с другим именем компьютера «Server2».

Есть ли способ обойти это?

Графический интерфейс конфигурации SQL TLS очень требователен к сертификатам, которые он будет отображать в раскрывающемся списке. И да, значение CN - одна из тех вещей, к которым они придирчивы. Поэтому, если CN не соответствует имени сервера, он не появится, даже если имя сервера является в поле Альтернативное имя субъекта.

Итак, ваш первый вариант - создать новый самозаверяющий сертификат, который действительно соответствует, и использовать его.

Другой вариант - обойти графический интерфейс и вместо этого установить сертификат через реестр. Расположение в реестре зависит от используемой версии SQL. Я не уверен, отличается ли SQL Express от полного SQL. Но вот место для полной версии SQL 2016. В основном найдите SuperSocketNetLib ключ для вашей установки / экземпляра.

HKLM:\Software\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQLServer\SuperSocketNetLib

Вам также понадобится отпечаток сертификата для вашего сертификата. Вы можете найти это через PowerShell вот так. Скопируйте значение в столбце Thumbprint для своего сертификата.

dir cert:\LocalMachine\My

Теперь используйте следующее из сеанса PowerShell с повышенными привилегиями, чтобы установить значение отпечатка и применить шифрование.

$regPath = 'HKLM:\Software\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQLServer\SuperSocketNetLib'
$thumbprint = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
Set-ItemProperty $regPath -Name 'Certificate' -Value $thumbprint
Set-ItemProperty $regPath -Name 'ForceEncryption' -Value 1 -Type Dword

И, наконец, перезапустите службу SQL, чтобы изменения вступили в силу.