Исключение сертификата при подключении к Azure SQL через JDBC со строкой подключения по умолчанию (которую консоль управления говорит использовать)
Я хочу подключиться к Azure SQL Server из jdbc.
Я копирую строку подключения из консоли управления Azure. Это что-то вроде:
JDBC: SQLServer://XXXX.database.windows.net:1433; база данных =YYYY; пользователь =ZZZZZ@XXXX, пароль =PPPPPPPPPPP, зашифровать = истина;hostNameInCertificate=* database.windows.net.
Когда я пытаюсь соединиться с этим значением, я получаю следующую ошибку:
com.microsoft.sqlserver.jdbc.SQLServerException: драйверу не удалось установить безопасное соединение с SQL Server с использованием шифрования Secure Sockets Layer (SSL). Ошибка: "java.security.cert.CertificateException: не удалось проверить имя сервера в сертификате во время инициализации протокола SSL. Имя сервера - *.database.windows.net, имя в сертификате - data.am2-1.database.windows.net.
Затем, если я изменю *.database.windows.net на data.am2-1.database.windows.net, как сказано в исключении, он будет работать нормально.
Так это проблема, чтобы установить это имя? Я чувствую, что если по умолчанию это подстановочный знак, то, вероятно, он изменится? и когда это произойдет, я предполагаю, что больше не смогу подключиться. У кого-нибудь еще была эта проблема? Я использую самые современные драйверы jdbc для SQL Server, которые я смог найти.
3 ответа
Оказывается, обновление версии сервера jlbc sql server до версии 4.0 устранило проблему.
Вы также можете добавитьtrustServerCertificate=true
в строке подключения, но это не рекомендуется с точки зрения безопасности.
У меня та же проблема с драйвером JDBC версии 4.1, понижение до 4.0 решило проблему