🔥 문제 발생 상황
WARN: Establishing SSL connection without server's identity verification is not recommended.
According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set.
For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'.
You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
🦠 문제 원인 파악
Java에서 MySQL 8을 연결하면 발생하는 에러다.
MySQL이 8로 업그레이드되면서 여러가지 보안이 강화되었고, 연결시 기본적으로 SSL 통신을 사용하도록 변경되었다.
메세지중 SSL 통신시 서버 인증서를 검증할 수 없다는 내용이 있으며 이는 서버의 SSL 인증서가 Java의 신뢰하는 인증서 목록에 때문이다.
🔑 문제 해결
방법1) 서버 인증서 검증 끄기(권장)
📁 application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:0000/database이름?useSSL=true&autoReconnect=true&verifyServerCertificate=false
username:
password:
SSL을 사용하도록 설정하고, 서버 인증서를 검증하는 옵션인 verifyServerCertifivate를 false로 두어 인증서 검증을 해제하여 에러를 해결할 수 있다.
방법2) SSL 사용 해제하기
📁 application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:0000/database이름?useSSL=false
username:
password:
SSL을 사용하지 않으므로 SSL 인증서로 인한 에러를 해결할 수 있다.
하지만, 다음과 같이 SSL 사용을 해제하는 방식은 보안 측면에서 권장하지 않는다.
Reference