2016-12-14 5 views
0

У меня есть приложение Java, работающее как WebJob на Azure. Это задание пытается подключиться к моему Azure SQL Server. Если шифрование включено, я получаю сообщение об ошибке соединения:Azure WebJobs не может подключиться к SQL с помощью зашифрованной связи

The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "java.security.cert.CertificateException: Failed to validate the server name in a certificate during Secure Sockets Layer (SSL) initialization.". 

Если encrypt = false он соединяется отлично.

Не следует ли зашифровать связь между ресурсами в Azure?

Кроме того, если я запускаю приложение локально, соединение с базой данных успешно соединяется в зашифрованном режиме.

ответ

1

Во-первых, я должен объяснить, что Azure SQL DB всегда будет по умолчанию зашифрованным соединением. Ошибка, которую вы видите, говорит о , проверяя идентификатор сервера, с которым вы общаетесь, как часть рукопожатия для SSL. [Там какая-то распаковка этой идеи здесь.] (https://security.stackexchange.com/questions/1779/how-does-an-ssl-server-prove-its-identity)

я распаковал шифрование связи с Azure SQL базы данных в ответах на этот MSDN thread - но я принесу соответствующую часть здесь:

When using Azure SQL DB, connections are encrypted even when the connection 
string does not include those portions we recommend. 
... 
Encryption occurs only if there is a verifiable server certificate, 
otherwise the connection attempt fails. 

Ваш ошибка, как показано на этом MSDN article, возникает из-за следующей ситуации:

If the encrypt property is set to true and the trustServerCertificate 
property is set to false and if the server name in the connection string 
does not match the server name in the SQL Server SSL certificate, the 
following error will be issued: The driver could not establish a secure 
connection to SQL Server by using Secure Sockets Layer (SSL) encryption. 
Error: "java.security.cert.CertificateException: Failed to validate the 
server name in a certificate during Secure Sockets Layer (SSL) initialization." 

Видимо, драйвер JDBC для SQL Server 4.0, кажется, решить эту ошибку: Azure VM Fails to Connect to Azure SQL Service

Certificate Exception connecting to Azure SQL with JDBC with default connection string (the one the management console says to use)

+0

Я использую PaaS (WebAPP Azure и SQL Server). Я пробовал версию 4.0.2206.100 драйвера JDBC от Microsoft и теперь работает в зашифрованном режиме. Благодаря! – Paul

+0

Из любопытства кто-нибудь знает причину этого? – Paul

+0

Рад, что это сработало. Я буду уверен, что это будет подано как регресс завтра. (Я также попытаюсь объяснить, почему это происходит, но я хочу проверить с командой рассуждения до того, как я опубликую здесь, ради точности.) –