Ошибка SSL при подключении к удаленному серверу SQL с использованием Java (netbeans) - PullRequest
0 голосов
/ 06 декабря 2018

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

  • im, используя VMWare, иу меня есть один Windows Server 2003 с SQL Server 2005, с именем входа SQL, и у него есть служба DNS, работающая
  • , у меня также есть машина с Windows 7, на которой работает NetBeans8.2 с JDK 8.1, с использованием JDBC 4.2
  • я могу подключиться к серверу с помощью диспетчера SQL с компьютера под управлением Windows 7
  • я не могу подключиться с помощью кода Java из-за ошибки SSL, я не уверен, что является его причиной
  • это для школьного проекта, поэтому я должен использовать SQL Server 2005

    вот мой код подключения:

    package connectbd;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.PreparedStatement;
    
    public class ConnectBD {
    
    public static void main(String[] args) {
    
        String jdbcurl;
        Connection con = null;
    
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    
        jdbcurl = "jdbc:sqlserver://SQLSERVER;instanceName=SQLE;user=****;password=****;database=LP_SIBD_GR15";
    
        try {
            con=DriverManager.getConnection(jdbcurl);
            System.out.println("Connection success");
        } catch(SQLException e) {
                e.printStackTrace();
        }
    }
    }
    

Это ошибка, котораяя получаю:

com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to the SQL Server using Secure Sockets Layer (SSL) encryption. Error: "The SQL Server server returned no response. The connection has been closed. ClientConnectionId:e9655c34-7c66-42c8-aaec-36601b53ff98 ».
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2826)
    ****at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1829)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2391)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2042)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1889)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1120)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:700)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:270)
    at connectbd.ConnectBD.main(ConnectBD.java:35)
Caused by: java.io.IOException: 
The SQL Server server returned no response. The connection was closed. ClientConnectionId:e9655c34-7c66-42c8-aaec-36601b53ff98
    ****at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.ensureSSLPayload(IOBuffer.java:786)
    at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInternal(IOBuffer.java:836)
    at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(IOBuffer.java:829)
    at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.java:999)
    at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.java:989)
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
    at sun.security.ssl.InputRecord.read(InputRecord.java:503)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:983)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
    at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1756)
    ... 8 more
BUILD SUCCESSFUL (total time: 1 second)

я полагаю, что причины находятся где-то в этих двух строках: те, которые отмечены **** в начале

я должен предоставить проект веб-сервисов для школы в2 недели, и это своего рода огромное препятствие, любая быстрая помощьр или предложение будет очень признателен

1 Ответ

0 голосов
/ 06 декабря 2018

Вам потребуется добавить несколько параметров, чтобы указать ssl-соединение, например, integratedSecurity=true, encrypt=true и trustServerCertificate=true.

jdbcurl = "jdbc:sqlserver://SQLSERVER;instanceName=SQLE;user=****;password=****;database=LP_SIBD_GR15;integratedSecurity=true;encrypt=true;trustServerCertificate=true";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...