IT

MySQL 데이터베이스에 연결할 때 SSL 연결에 대한 경고

lottoking 2020. 3. 19. 08:28
반응형

MySQL 데이터베이스에 연결할 때 SSL 연결에 대한 경고


아래 두 클래스를 사용하여 MySQL 데이터베이스에 연결을 시도했습니다. 그러나 항상이 오류가 발생합니다.

CET 2015 WARN : 서버의 신원 확인없이 SSL 연결을 설정하지 않는 것이 좋습니다. MySQL 5.5.45+, 5.6.26+ 및 5.7.6+ 요구 사항에 따르면 명시 적 옵션이 설정되지 않은 경우 기본적으로 SSL 연결을 설정해야합니다. SSL을 사용하지 않는 기존 애플리케이션을 준수하기 위해 verifyServerCertificate 특성이 'false'로 설정됩니다. useSSL = false를 설정하여 SSL을 명시 적으로 비활성화하거나 useSSL = true를 설정하고 서버 인증서 확인을위한 신뢰 저장소를 제공해야합니다.

다음은 main메소드 가있는 테스트 클래스입니다 .

public class TestDatabase {

    public static void main(String[] args) {
        Database db = new Database();
        try {
            db.connect();
        } catch (Exception e) {
            e.printStackTrace();
        }
        db.close();
    }
}

이것은 Database클래스입니다 :

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Database {

    private Connection con;

    public void connect() throws Exception{

        if(con != null) return;

        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new Exception("No database");
        }

        String connectionURL = "jdbc:mysql://localhost:3306/Peoples";

        con = DriverManager.getConnection(connectionURL, "root", "milos23");        
    }

    public void close(){
        if(con != null){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

연결 URL은 다음과 같아야합니다.

jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false

이렇게하면 SSL이 비활성화되고 SSL 오류도 억제됩니다.


SSL을 사용하지만 서버 확인을 끄는 방법 (예 : 컴퓨터의 개발 모드에있는 경우) :

jdbc:mysql://localhost:3306/Peoples?verifyServerCertificate=false&useSSL=true

url같은 언급 :

jdbc:mysql://hostname:3306/hibernatedb?autoReconnect=true&useSSL=false

그러나 xml 구성에서 언급 하고 서명 할 때 IDE는 아래 오류를 표시합니다.

The reference to entity "useSSL" must end with the ';' delimiter.

그리고 당신은 명시 적으로 사용해야하는 &대신 &으로 결정하는 &xml에 이후 xml이 같은 XML 구성의 URL을 제공 할 수있다 :

<property name="connection.url">jdbc:mysql://hostname:3306/hibernatedb?autoReconnect=true&amp;useSSL=false</property>

다른 방법은 다음과 같습니다.

Properties properties = new Properties();
properties.setProperty("user", "root");
properties.setProperty("password", "milos23);
properties.setProperty("useSSL", "false");
properties.setProperty("autoReconnect", "true");

try (Connection conn = DriverManager.getConnection(connectionUrl, properties)) {
...
} catch (SQLException e) {
...
}

경고를 제거하기 위해 자동 재 연결 설정이 필요하다고 생각하지 않습니다.


이 경고도 발견 한 다음이 예제 코드와 같이 연결 문자열에 SSL = false 접미사를 사용하여 수정했습니다.

예:

connectionString = "jdbc:mysql://{server-name}:3306/%s?useUnicode=yes&characterEncoding=UTF-8&useSSL=false"

다음과 같이 mysql 경로를 사용해야합니다.

<property name="url" value="jdbc:mysql://localhost:3306/world?useSSL=true"/>

이것을 사용하여 MySQL과 연결하는 동안 하이브의 문제를 해결하십시오.

<property>
   <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true&amp;autoReconnect=true&amp;useSSL=false</value>
   <description>metadata is stored in a MySQL server</description>
</property>

이것은 나에게 괜찮았다.

this.conn = (Connection)DriverManager
    .getConnection(url + dbName + "?useSSL=false", userName, password);

구성 XML에서 최대 절전 모드 로이 속성을 사용합니다.

<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/bookshop?serverTimezone=UTC&amp;useSSL=false
</property>

-serverTimezone = UTC 없이- 작동하지 않습니다


새로운 버전의 mysql-connector는 기본적으로 SSL 연결을 설정하여 해결합니다.

mysql-connector-java-5.0.8.zip 과 같은 mysql-connector의 이전 버전을 다운로드하십시오.

. . 또는. . Windows 용 OpenSSL을 다운로드 하고 설정 방법을 따르십시오.


해결 방법 MySQL 연결 문자열 끝에 useSSL = false를 추가하십시오.

전의.

application.properties

MySQL의 데이터 소스

spring.datasource.url=jdbc:mysql://localhost/dbname?useSSL=false
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

현재 개발 모드에 있기 때문에 Tomcat이 아니라 mysql 서버 구성에서 useSSL을 No로 설정했습니다. 워크 벤치에서 액세스 설정 \ 서버 연결 관리로 이동했습니다.-> 내 연결을 선택했습니다. 내부 연결 탭이 SSL 탭으로 이동하여 설정을 비활성화했습니다. 나를 위해 일했다.

참고 URL : https://stackoverflow.com/questions/34189756/warning-about-ssl-connection-when-connecting-to-mysql-database

반응형