Настройка шифрования на клиенте
Драйвер Microsoft JDBC для SQL Server или клиента должен убедиться, что сервер является правильным сервером, а его сертификат выдан центром сертификации, которому доверяет клиент. Чтобы проверить сертификат сервера, при соединении следует предоставить данные о доверии. Также поставщиком сертификата сервера должен быть центр сертификации, которому клиент доверяет.
В начале этой статьи описано, как передать данные о доверии на клиентском компьютере. Далее описывается, как импортировать сертификат сервера в хранилище доверия клиентского компьютера, если экземпляр сертификата TLS для SQL Server выдан частным центром сертификации.
Сведения о проверке TLS-сертификата сервера см. в общих сведениях о поддержке шифрования.
Настройка клиентского хранилища доверия
Для проверки сертификата сервера требуется, чтобы данные о доверии были предоставлены во время подключения либо с помощью явно заданных свойств соединения trustStore и trustStorePassword, либо с помощью неявно заданного хранилища доверия по умолчанию для базовой виртуальной машины Java. Дополнительные сведения о том, как задавать свойства trustStore и trustStorePassword в строке подключения, см. в статье Подключение с шифрованием.
Если свойство trustStore не указано или имеет значение NULL, драйвер Microsoft JDBC для SQL Server будет полагаться на базовый поставщик безопасности JVM, расширение Безопасного сокета 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». Этот файл сертификата необходимо получить с сервера. Ниже описано, как экспортировать сертификат сервера в файл.
- Нажмите "Пуск", затем "Выполнить" и введите MMC. (MMC — сокращение от Microsoft Management Console, консоль управления Microsoft.)
- В MMC откройте Сертификаты.
- Разверните узел Личный, затем — Сертификаты.
- Щелкните сертификат сервера правой кнопкой мыши, затем последовательно нажмите Все задачи/Экспорт.
- Щелкните "Далее", чтобы пропустить диалоговое окно приветствия в мастере экспорта сертификатов.
- Убедитесь, что выбран вариант
No, do not export the private key
, и щелкните "Далее". - Убедитесь, что выбран двоичный файл X.509 в кодировке DER (.CER) или файл X.509 в кодировке Base-64 (.CER), затем щелкните "Далее".
- Введите имя файла экспорта.
- Щелкните "Далее" и "Готово", чтобы экспортировать сертификат.