Нам необходимо использовать шифрование с SQL Server, поэтому мы включили ForceEncryption. Согласно документации, если сертификат не предоставлен, SQL Server сгенерирует свой собственный внутренний сертификат для выполнения шифрования.
Нам нужно понять, какой уровень шифрования это обеспечивает. Я думаю, мы обычно используем 2048-битные сертификаты.
В каком хранилище сертификатов находится внутренний/резервный сертификат? И как узнать уровень шифрования?
решение1
По умолчанию сертификат находится в реестре по адресу:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib
(Где MSSQL.x
MSSQL.x — это заполнитель для соответствующего значения экземпляра SQL Server.)
Если SQL-сервер не может найти сертификат в этом месте, он вернется к поиску в хранилище сертификатов для сертификата с полным доменным именем компьютера, на котором он установлен. По умолчанию этот сертификат будет сертификатом машины, найденным в Local Computer
-> Personal
-> Certificates
через оснастку MMC Certificates.
Вы можете проверить длину ключа (и другие свойства) этого (или любого другого) сертификата с помощью оснастки «Сертификаты» консоли MMC, перейдя к нему, дважды щелкнув по нему, а затем нажав на вкладку Details
в появившемся диалоговом окне, которое соответствует сертификату.
Если этот сертификат также недоступен, то SQL Server сгенерирует самоподписанный резервный сертификат и будет использовать его для шифрования. Вы можете просмотреть отпечаток или используемый сертификат при просмотре журналов ошибок при перезапуске службы SQL. Местоположение этого резервного сертификата официально неизвестно, и на других форумах предполагалось, что он, скорее всего, находится в памяти.Более подробную информацию можно найти здесь.