Я занимаюсь этим последние 11 часов, и я до сих пор не могу понять это. Это началось как проблема подключения JAVA, но на этом этапе я смог подтвердить, что единственным инструментом, способным подключиться к удаленному экземпляру SQL Server, является SQL Server Management Studio. JDBC терпит неудачу, Windows 7 ODBC терпит неудачу, клиенты DataStage из Linux терпят неудачу, а также соединения данных Visual Studio 2017. Вот пример кода .Net (C #), который работает для других серверов, кроме тех, с которыми у меня возникают проблемы:
[TestCase(true)]
[TestCase(false)]
public void TestMethod(bool encrypt)
{
var sscsb = new SqlConnectionStringBuilder {
DataSource = $"{server}\{instance},{port}",
NetworkLibrary = "dbmssocn",
PacketSize = 4096,
InitialCatalog = database,
IntegratedSecurity = false,
UserID = user,
Password = password,
Encrypt = encrypt,
TrustServerCertificate = true,
};
try
{
using (var conn = new SqlConnection(sscsb.ConnectionString))
{
conn.Open();
}
Assert.Pass("Connected");
}
catch (Exception e)
{
Assert.Fail(e.Message);
}
}
Ошибка при попытке подключения из этого тестового класса:
Message: Login failed for user 'etldstg'.
В JAVA, в зависимости от комбинации настроек TLS (помните, что логин всегда зашифрован самозаверяющим сертификатом), я когда-нибудь получу это:
The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "SQL Server did not return a response. The connection has been closed. ClientConnectionId:37dc2f52-c952-4f50-8fc9-62c3bdd84041".
Я знаю, что JAVA не поддерживает шифрование DHE
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_128_CBC_SHA256 Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_128_GCM_SHA256 Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_GCM_SHA384 Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
На этом этапе я не могу попросить администратора сервера следовать рекомендациям Microsoft и отключить DHE путем взлома реестра
Итак, я застрял. Кто-нибудь видел что-то подобное? Как вы это разрешили?
java,c#,sql-server,jdbc,odbc,