RDS SSL 인증서 만료, Caused by: java.security.cert.CertificateExpiredException : NotAfter
rds certificate expired
Aug 23, 2024
회사에서 사용하는 RDS 인증서가 만료되었다. 과거에 생성된 RDS 인스턴스들은 2019년 버전의 인증서를 사용하고 있었고, 현재는 2061년 버전으로 업데이트되어 있다. 인증서 만료로 인해 다음과 같은 에러가 발생했다:
Caused by: java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. ... Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. ... Caused by: javax.net.ssl.SSLHandshakeException: NotAfter: Fri Aug 23 02:08:50 KST 2024 ...
이 문제에 대한 자세한 내용은 ‣ 에서 확인할 수 있다.
Amazon RDS 인증 기관 인증서 rds-ca-2019는 2024년 8월에 만료될 예정입니다. RDS DB 인스턴스 또는 다중 AZ DB 클러스터에 연결하기 위해 인증서 확인과 함께 보안 소켓 계층(SSL) 또는 전송 계층 보안(TLS)을 사용하거나 사용할 계획이라면 새 CA 인증서인 rds-ca-rsa2048-g1, rds-ca-rsa4096-g1 or rds-ca-ecc384-g1 중 하나를 사용하는 것을 고려하세요. 현재 인증서 확인과 함께 SSL/TLS를 사용하지 않는 경우에도 CA 인증서가 만료되었을 수 있으며, 인증서 확인과 함께 SSL/TLS를 사용하여 RDS 데이터베이스에 연결하려는 경우 새 CA 인증서로 업데이트해야 합니다.
잘못된 해결책 중 하나는
useSSL
옵션을 false
로 설정하는 것이다:jdbc-url: jdbc:mysql://${HOST}:${PORT}/${DB}?useSSL=false
또한, GUI 툴을 사용하는 경우에는 아래 이미지를 참고하여
useSSL
옵션을 false
로 변경할 수 있습니다:하지만 이 방법은 보안상 좋은 해결책이 아니다. 더 나은 해결 방법은 인증서를 최신 버전으로 교체하는 것이다.
인증서를 교체하는 방법에 대해서는 다음의 블로그 포스트에서 상세하게 설명하고 있다:
요약:
- 잘못된 방법:
useSSL=false
로 설정 (비추천)
- 올바른 방법: 최신 SSL 인증서로 교체 (추천)
AWS RDS 인스턴스를 안전하게 유지하기 위해 인증서를 최신 상태로 유지하는 것이 중요하다.
이렇게 수정하면, 문제의 근본적인 원인과 해결 방법을 명확하게 전달할 수 있다.
Share article