Поделиться через


Настройка шифрования на клиенте

Скачать драйвер JDBC

Microsoft JDBC Driver для SQL Server или клиент должны проверить правильность сервера, а также убедиться, что его сертификат выдан центром сертификации, которому доверяет клиент. Чтобы проверить сертификат сервера, при соединении следует предоставить данные о доверии. Также поставщиком сертификата сервера должен быть центр сертификации, которому клиент доверяет.

В начале этой статьи описано, как передать данные о доверии на клиентском компьютере. Далее описывается, как импортировать сертификат сервера в хранилище доверия клиентского компьютера, если экземпляр сертификата TLS для SQL Server выдан частным центром сертификации.

Сведения о проверке TLS-сертификата сервера см. в общих сведениях о поддержке шифрования.

Настройка клиентского хранилища доверия

Для проверки сертификата сервера требуется, чтобы данные о доверии были предоставлены во время подключения либо с помощью явно заданных свойств соединения trustStore и trustStorePassword, либо с помощью неявно заданного хранилища доверия по умолчанию для базовой виртуальной машины Java. Дополнительные сведения о том, как задавать свойства trustStore и trustStorePassword в строке подключения, см. в статье Подключение с шифрованием.

Если свойство trustStore не задано или имеет значение NULL, то Microsoft JDBC Driver для SQL Server полагается на поставщик безопасности базовой виртуальной машины Java, то есть расширение защищенных сокетов Java (SunJSSE). Поставщик SunJSSE предоставляет по умолчанию TrustManager, который используется для проверки сертификатов X.509, возвращенных SQL Server, по материалу доверия, предоставленному в хранилище доверия.

TrustManager предпринимает попытки найти предусмотренное по умолчанию свойство trustStore в следующем порядке поиска.

  • Если системное свойство "javax.net.ssl.trustStore" определено, то TrustManager пытается найти файл trustStore по умолчанию с помощью имени файла, указанного этим системным свойством.
  • Если системное свойство javax.net.ssl.trustStore не было указано и существует файл "<java-home>/lib/security/jssecacerts", то используется этот файл.
  • Если существует файл "<java-home>/lib/security/jssecacerts", то используется именно он.

Дополнительные сведения см. в документации интерфейса SUNX509 TrustManager на веб-сайте Sun Microsystems.

Среда выполнения Java позволяет задавать системные свойства trustStore и trustStorePassword следующим образом.

java -Djavax.net.ssl.trustStore=C:\MyCertificates\storeName
java -Djavax.net.ssl.trustStorePassword=storePassword

В этом случае любое приложение, запущенное на данной виртуальной машине JVM, будет использовать данные параметры по умолчанию. Чтобы переопределить параметры по умолчанию в приложении, нужно задать свойства соединения trustStore и trustStorePassword в строке подключения или в соответствующем методе задания класса SQLServerDataSource.

Также вы можете настраивать файлы хранилища доверия по умолчанию, например "<java-home>/lib/security/jssecacerts" и "<java-home>/lib/security/cacerts", и управлять ими. Для этого предназначена программа JAVA «keytool», которая устанавливается вместе со средой выполнения Java (JRE). Дополнительные сведения о программе keytool см. в документации по keytool на веб-сайте Oracle.

Импорт сертификата сервера в хранилище доверия

Во время TLS-подтверждения сервер отправляет свой сертификат открытого ключа клиенту. Поставщик сертификата открытого ключа называется центром сертификации (ЦС). Клиент должен убедиться, что центр сертификации является для него доверенным. Для этого следует заранее изучить открытые ключи доверенных центров сертификации. JVM обычно поставляется со стандартным набором доверенных центров сертификации.

Если используемый экземпляр сертификата TLS для SQL Server выдан закрытым центром сертификации, то необходимо добавить этот сертификат центра сертификации к списку доверенных сертификатов в хранилище доверия клиентского компьютера.

Для этого предназначена программа JAVA «keytool», которая устанавливается вместе со средой выполнения Java (JRE). В следующей командной строке показано, как использовать программу «keytool» для импорта сертификата из файла.

keytool -import -v -trustcacerts -alias myServer -file caCert.cer -keystore truststore.ks

В этом примере в качестве файла сертификата используется файл «caCert.cer». Этот файл сертификата необходимо получить с сервера. Следующие шаги показывают, как экспортировать сертификат сервера в файл.

  1. Нажмите "Пуск", затем "Выполнить" и введите MMC. (MMC — сокращение от Microsoft Management Console, консоль управления Microsoft.)
  2. В программе MMC откройте окно «Сертификаты».
  3. Разверните элемент «Личный», затем «Сертификаты».
  4. Щелкните правой кнопкой мыши сертификат сервера и выберите «Все задачи/Экспорт».
  5. Щелкните "Далее", чтобы пропустить диалоговое окно приветствия в мастере экспорта сертификатов.
  6. Убедитесь, что выбран вариант No, do not export the private key, и щелкните "Далее".
  7. Убедитесь, что выбран двоичный файл X.509 в кодировке DER (.CER) или файл X.509 в кодировке Base-64 (.CER), затем щелкните "Далее".
  8. Введите имя файла для экспорта.
  9. Щелкните "Далее" и "Готово", чтобы экспортировать сертификат.

См. также раздел

Использование шифрования
Защита приложений JDBC Driver