Создание доверенного сертификата для подключения к БД

Доверенный сертификат для подключения к БД можно приобрести в одном из удостоверяющих центров либо сгенерировать самоподписанный сертификат по инструкции ниже".

Главные требование к SSL-сертификату на Microsoft SQL сервере:
  • Название сертификата должно быть равно полному имени сервера равный DNS имени сервера.

  • В качестве цели использования необходимо указывать "Серверная аутентификация".

Создание и установка сертификата в Linux

  1. Установите пакет openssl командой:

    • Astra Linux / Альт Сервер / Ubuntu

    • РЕД ОС

    $ sudo apt-get install openssl
    $ sudo dnf install openssl
  2. Создайте самоподписанный сертификат SSL.

    $ openssl req -x509 -newkey rsa:2048 -keyout docsvision.key -nodes -out docsvision.crt -subj "/CN=example.company.com" -addext subjectAltName=DNS:example.company.com (1)
    1 Замените docsvision.key и docsvision.crt на собственные названия для ключа и сертификата, вместо /CN=example.company.com укажите адрес сервера Docsvision на Linux, например, /CN=help.docsvision.com.
  3. Сгенерируйте и сохраните сертификат docsvision.pfx:

    $ openssl pkcs12 -inkey docsvision.key -in docsvision.crt -export -out docsvision.pfx (1)

    Пароль на сертификат указывать не нужно.

  4. Добавьте сертификат в доверенные, скопировав его в директорию /usr/local/share/ca-certificates/.

  5. Обновите список доверенных сертификатов:

    • Astra Linux / Альт Сервер / Ubuntu

    • РЕД ОС

    $ sudo update-ca-certificates
    $ sudo update-ca-trust
  6. Полученный сертификат в формате .pfx необходимо скопировать в каталог ~/.dotnet/corefx/cryptography/x509stores/my. Если каталог отсутствует, создайте его самостоятельно. Пользователь, выполняющий шифрование, должен обладать правами на чтение и выполнение файлов в каталоге, а также правами на чтение сертификата.

  7. Экспортируйте сертификат следующей командой:

    openssl pkcs12 -export -name "http://webservice.com" -out .\out\authservice.pfx -inkey .\out\authservice.key -in .\out\authservice.crt (1)
    1 В .\out\authservice укажите путь для сохранения сертификата. Также замените name на имя сервера Microsoft SQL.

    Утилита запросит пароль на сертификат и на файл .pfx.

  8. Импортируйте сертификат на сервере с Microsoft SQL и поместите его в Личное хранилище.

    Сертификат в личном хранилище
    Рисунок 1. Сертификат в личном хранилище
  9. Запустите Диспетчер конфигурации SQL Server. В категории сетевая конфигурация SQL Server найдите раздел Протоколы для "имя-сервера".

  10. В свойствах раздела Протоколы для "имя-сервера" выберите вкладку Сертификат и укажите импортированный сертификат.

  11. Перейдите на вкладку Флаги и отметьте флаг ForceEncryption в значение Да.

  12. Чтобы настройки применились, перезапустите службу экземпляра сервера Microsoft SQL.

    Для этого необходимо разрешить учётной записи "NT Service\MSSQLSERVER" права на чтение сертификата. Если этого не сделать, сиквел не запустится и в журнал Windows будут записаны ошибки.

    Разрешения на чтение сертификата
    Рисунок 2. Разрешения на чтение сертификата

Создание сертификата в Windows

  1. В ОС Windows самоподписанный сертификат можно сгенерировать следующей командой в PowerShell:

    New-SelfSignedCertificate -CertStoreLocation cert:\currentuser\my -DnsName "example.company.com" -FriendlyName "Docsvision Site" -KeyUsage "DigitalSignature", "KeyEncipherment" -KeyAlgorithm RSA  -KeyLength 2048 -NotAfter $([datetime]::now.AddDays(90))
    Расшифровка команды:
    • -CertStoreLocation cert:\currentuser\my — место установки сертификата

    • -DnsName "example.company.com" — адрес сайта

    • -FriendlyName "Docsvision Site" — название сайта

    • -KeyAlgorithm RSA — алгоритм шифрования

    • -KeyLength 2048 — длина ключа.

    • -NotAfter $([datetime]::now.AddDays(90)) — срок действия сертификата (90 дней). Рекомендуется устанавливать от 90 до 360 дней.

  2. Сертификат появится в хранилище Личное среди сертификатов пользователя, из которого его можно экспортировать в файл. Выберите сертификат из списка двойным нажатием мыши, откройте вкладку "Состав".

    Просмотр сертификата на вкладке "Состав"
    Рисунок 3. Просмотр сертификата на вкладке "Состав"
  3. Экспортируйте сертификат, нажав кнопку Копировать в файл, и проследуйте инструкциям мастера экспорта сертификатов.

  4. Установите пакет openssl командой:

    • Astra Linux / Альт Сервер / Ubuntu

    • РЕД ОС

    $ sudo apt-get install openssl
    $ sudo dnf install openssl
  5. Создайте самоподписанный сертификат SSL.

    $ openssl req -x509 -newkey rsa:2048 -keyout docsvision.key -nodes -out docsvision.crt -subj "/CN=example.company.com" -addext subjectAltName=DNS:example.company.com (1)
    1 Замените docsvision.key и docsvision.crt на собственные названия для ключа и сертификата, вместо /CN=example.company.com укажите адрес сервера Docsvision на Linux, например, /CN=help.docsvision.com.
  6. Сгенерируйте и сохраните сертификат docsvision.pfx:

    $ openssl pkcs12 -inkey docsvision.key -in docsvision.crt -export -out docsvision.pfx (1)

    Пароль на сертификат указывать не нужно.

  7. Добавьте сертификат в доверенные, скопировав его в директорию /usr/local/share/ca-certificates/.

  8. Обновите список доверенных сертификатов:

    • Astra Linux / Альт Сервер / Ubuntu

    • РЕД ОС

    $ sudo update-ca-certificates
    $ sudo update-ca-trust
  9. Экспортируйте сертификат следующей командой:

    openssl pkcs12 -export -name "http://webservice.com" -out .\out\authservice.pfx -inkey .\out\authservice.key -in .\out\authservice.crt (1)
    1 В .\out\authservice укажите путь для сохранения сертификата. Также замените name на имя сервера Microsoft SQL.

    Утилита запросит пароль на сертификат и на файл .pfx.

  10. Импортируйте сертификат на сервере с Microsoft SQL и поместите его в Личное хранилище.

    Сертификат в личном хранилище
    Рисунок 4. Сертификат в личном хранилище
  11. Запустите Диспетчер конфигурации SQL Server. В категории сетевая конфигурация SQL Server найдите раздел Протоколы для "имя-сервера".

  12. В свойствах раздела Протоколы для "имя-сервера" выберите вкладку Сертификат и укажите импортированный сертификат.

  13. Перейдите на вкладку Флаги и отметьте флаг ForceEncryption в значение Да.

  14. Чтобы настройки применились, перезапустите службу экземпляра сервера Microsoft SQL.

    Для этого необходимо разрешить учётной записи "NT Service\MSSQLSERVER" права на чтение сертификата. Если этого не сделать, сиквел не запустится и в журнал Windows будут записаны ошибки.

    Разрешения на чтение сертификата
    Рисунок 5. Разрешения на чтение сертификата