#java #mysql #amazon-web-services #ssl #amazon-rds
#java #mysql #amazon-web-services #ssl #amazon-rds
Вопрос:
Я настроил сервер MySQL на Amazon RDS с обязательным использованием SSL, вот так
GRANT USAGE ON *.* TO 'myusername'@'%' REQUIRE SSL;
и я подтвердил, что могу подключить сервер с помощью mysql cli только тогда, когда указаны параметры ssl.
# ok
mysql -D xxx -uxxx -hxxx.rds.amazonaws.com -P3306 --ssl-ca=path/to/rds-ca-2019-root.pem --ssl-verify-server-cert -p
# connection error
mysql -D xxx -umyusername-hxxx.rds.amazonaws.com -P3306 -p
Однако я могу подключить сервер с помощью JDBC mysql connector без какой-либо опции ssl.
var con = DriverManager.getConnection("jdbc:mysql://xxx.rds.amazonaws.com:3306/xxx",
"myusername",
"<password>");
var rs = con
.prepareStatement("show status like 'Ssl_cipher'")
.executeQuery();
while (rs.next()) {
System.out.println(rs.getString(1)); // Ssl_cipher
System.out.println(rs.getString(2)); // AES256-SHA
}
Почему это возможно?
Ответ №1:
Я выяснил, что соединитель mysql пропускает проверку сертификата сервера по умолчанию. Явная передача verifyServerCertificate= true приводит к сбою соединения.