UnableToConnectException: Public Key Retrieval is not allowed
오류는 MySQL에 연결할 때 발생하는 보안 관련 오류입니다. 이 오류는 MySQL 서버가 클라이언트에게 RSA 공개 키를 전송하는 방식으로 비밀번호를 인증하려고 할 때, 클라이언트(여기서는 Spring Boot 애플리케이션)가 이러한 방식의 인증을 허용하지 않을 때 발생합니다.
문제 해결 방법:
이 문제를 해결하는 가장 간단한 방법은 application.properties
파일에 있는 데이터베이스 연결 URL에 allowPublicKeyRetrieval=true
설정을 추가하는 것입니다. 그러나 보안상의 이유로, 이 옵션을 사용할 때는 useSSL=false
옵션과 함께 사용하지 않도록 주의해야 합니다. SSL을 사용하지 않는 상태에서 공개 키 검색을 허용하면 중간자 공격에 취약해질 수 있습니다.
보안을 고려하지 않는 개발 환경의 예시:
spring.datasource.url=jdbc:mysql://localhost:3306/yourdatabase?allowPublicKeyRetrieval=true&useSSL=false
spring.datasource.username=yourusername
spring.datasource.password=yourpassword
보다 안전한 설정의 예시:
SSL을 사용하는 경우 useSSL=true
를 설정하고 적절한 SSL 관련 설정을 추가하세요. SSL을 사용하지 않을 경우, 로컬 개발 환경에서만 allowPublicKeyRetrieval=true
와 useSSL=false
를 사용하는 것이 권장됩니다.
spring.datasource.url=jdbc:mysql://localhost:3306/yourdatabase?allowPublicKeyRetrieval=true&useSSL=true&requireSSL=true
spring.datasource.username=yourusername
spring.datasource.password=yourpassword
추가 조치 사항:
- 보안 상의 이유로, 실제 운영 환경에서는 가능한 SSL을 사용하여 데이터베이스 연결을 암호화하는 것이 좋습니다. 운영 환경에서
allowPublicKeyRetrieval=true
를 사용할 필요가 있다면, 반드시 SSL을 활성화하고, 데이터베이스 서버와의 통신이 암호화되는지 확인하세요. - MySQL 서버의 버전과 JDBC 드라이버의 호환성도 확인하세요. 때때로, 특정 버전의 드라이버와 서버 간의 호환 문제로 인해 연결 문제가 발생할 수 있습니다.
이러한 설정을 통해 UnableToConnectException: Public Key Retrieval is not allowed
오류를 해결할 수 있습니다.
'Dev Framework > Spring' 카테고리의 다른 글
[Spring Security] 01. Spring Security에 대해서 (0) | 2024.03.07 |
---|---|
[Spring] @Controller 와 @RestController의 차이 (0) | 2024.03.05 |
[Spring][완독] 스프링 부트3 자바 백엔드 개발 입문 - 출판사 길벗 (0) | 2024.03.02 |
[Spring] REST API에 대해서 (0) | 2024.03.02 |
[Spring][MAC] Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid' 해결 방법 (0) | 2024.02.12 |