Spec-Zone.ru › MySQL Connectors 1.0

6.9.1 Настройка аутентификации сервера

Аутентификация сервера с помощью проверки сертификата сервера включена, когда свойство подключения Connector/J sslMode установлено в значение VERIFY_CA или VERIFY_IDENTITY. Если sslMode не установлено, аутентификация сервера с помощью проверки сертификата сервера включена, когда оба устаревших свойства useSSL и verifyServerCertificate установлены в значение true.

Сертификаты, подписанные доверенным центром сертификации (ЦС). При включенной аутентификации сервера с помощью проверки сертификата сервера, если не заданы дополнительные настройки аутентификации сервера, Java проверяет сертификат сервера с использованием своих стандартных доверенных сертификатов ЦС, обычно из $JAVA_HOME/lib/security/cacerts.

Использование самозаверяющих сертификатов. Однако довольно часто сертификаты сервера MySQL бывают самозаверяющими или подписанными самозаверяющим сертификатом ЦС; автоматически сгенерированные сертификаты и ключи, созданные сервером MySQL, основаны на последнем варианте — сервер генерирует все необходимые ключи и самозаверяющий сертификат ЦС, который используется для подписи сертификатов сервера и клиента. Затем сервер настраивается на использование сертификата ЦС и сертификата сервера. Хотя файл сертификата клиента размещается в том же каталоге, он не используется сервером.

Для проверки сертификата сервера Connector/J должен иметь возможность прочитать сертификат, который его подписал, то есть сертификат сервера, подписавший сам себя, или самозаверяющий сертификат ЦС. Это можно сделать, либо импортировав сертификат (ca.pem или любой другой сертификат) в стандартный хранилище доверенных сертификатов Java (хотя изменение стандартного хранилища не рекомендуется), либо импортировав его в пользовательский файл хранилища доверенных сертификатов Java и соответствующим образом настроив драйвер Connector/J. Используйте утилиту keytool Java (обычно расположенную в подкаталоге bin вашей установки JDK или JRE) для импорта сертификатов сервера:

$> keytool -importcert -alias MySQLCACert -file ca.pem \
    -keystore truststore -storepass mypassword

Укажите соответствующие аргументы для командных опций. Если файл хранилища доверенных сертификатов еще не существует, он будет создан; в противном случае сертификат будет добавлен в существующий файл. Взаимодействие с keytool выглядит следующим образом:

Owner: CN=MySQL_Server_8.4.0_Auto_Generated_CA_Certificate
Issuer: CN=MySQL_Server_8.4.0_Auto_Generated_CA_Certificate
Serial number: 1
Valid from: Thu Mar 07 11:37:33 WET 2024 until: Sun Mar 05 11:37:33 WET 2034
Certificate fingerprints:
	 SHA1: 43:12:0F:96:1A:09:1C:D2:5B:62:7A:2A:55:6C:62:6A:84:5F:78:E4
	 SHA256: 7D:86:18:FF:06:A7:DF:A7:7C:D0:07:AB:96:1A:51:FD:02:4F:32:BF:1C:51:35:42:27:81:53:0A:8F:D3:56:39
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3

Extensions:

#1: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:2147483647
]

Trust this certificate? [no]:  yes
Certificate was added to keystore

Вывод команды показывает все подробности об импортированном сертификате. Убедитесь, что вы помните пароль, который вы указали. Также имейте в виду, что пароль необходимо ввести в виде обычного текста в вашем конфигурационном файле Connector/J или исходном коде приложения.

Следующим шагом является настройка Java или Connector/J для чтения только что созданного или изменённого хранилища доверенных сертификатов. Это можно сделать, используя один из следующих трех методов:

  1. Использование аргументов командной строки Java:

    -Djavax.net.ssl.trustStore=path_to_truststore_file
    -Djavax.net.ssl.trustStorePassword=mypassword
  2. Установка системных свойств непосредственно в коде клиента:

    System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
    System.setProperty("javax.net.ssl.trustStorePassword","mypassword"); 
  3. Установка свойств подключения Connector/J:

    trustCertificateKeyStoreUrl=file:path_to_truststore_file
    trustCertificateKeyStorePassword=mypassword
    

Обратите внимание, что при совместном использовании свойства подключения переопределяют значения, установленные другими двумя методами. Кроме того, значения, установленные с помощью свойств подключения, используются только для этого подключения, в то время как значения, установленные с помощью системных значений, используются для всех подключений (если не переопределены свойствами подключения). Установка свойства подключения fallbackToSystemTrustStore в значение false предотвращает отключение Connector/J от использования системного хранилища доверенных сертификатов, созданного вами с помощью метода (1) или (2), когда метод (3) не используется.

При вышеуказанной настройке и включенной аутентификации сервера все установленные подключения будут защищены SSL-шифрованием, при этом сервер будет проверен в процессе рукопожатия SSL, и клиент теперь может безопасно доверять серверу, к которому он подключается.

Для подключений по протоколу X-Protocol свойства подключения xdevapi.ssl-truststore, xdevapi.ssl-truststore-type, xdevapi.ssl-truststore-password и xdevapi.ssl-fallbackToSystemTrustStore задают настройки хранилища доверенных сертификатов, точно так же, как trustCertificateKeyStoreUrl, trustCertificateKeyStoreType, trustCertificateKeyStorePassword и fallbackToSystemTrustStore делают это для подключений по протоколу MySQL; если явно не установлены, xdevapi.ssl-truststore, xdevapi.ssl-truststore-type, xdevapi.ssl-truststore-password и xdevapi.ssl-fallbackToSystemTrustStore принимают значения trustCertificateKeyStoreUrl, trustCertificateKeyStoreType, trustCertificateKeyStorePassword и fallbackToSystemTrustStore соответственно.

Проверка идентификации службы. Помимо аутентификации сервера с помощью проверки сертификата сервера, когда sslMode установлено в VERIFY_IDENTITY, Connector/J также выполняет проверку идентификации имени хоста, проверяя, соответствует ли имя хоста, используемое для подключения, значению Common Name в сертификате сервера.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/connector-j-en/connector-j-server-authentication.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API