javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
The following required algorithms might be disabled: SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, include jdk.disabled.namedCurves. Edit the list of disabled algorithms to include required algorithms. You can try to enable TLSv1 or TLSv1.1 first.
JDBC driver may have disabled TLS 1.1 and its earlier versions.
SSLHandshakeException?
우리가 흔히 웹사이트를 이용할 때 https://라는 문자열로 시작하는 주소 옆에 자물쇠 마크가 작게 표시된 것을 볼 수 있는데 이는 SSL/TLS 프로토콜로 통신을 수행하고 있다는 뜻이다.
간단히 개념 설명을 하자면 SSL/TLS는 HTTP 통신을 지키는 역할을 하며, Handshake란 악수라는 의미로 정보의 교환을 의미한다.
즉, SSLHandshake -> 정보를 교환하며 통신을 지킴
에러 메시지 첫 줄을 살펴보면
javax.net.ssl.SSLHandshakeException: No appropriate protocol
적절한 프로토콜이 없다고 나온다.
다시 말해, SSL/TLS Handshake는 서로 정보를 전달받으며 인증과 같은 절차를 밟게되는데,이 과정에서 TLS 프로토콜 버전이 불일치하여 발생한 오류임을 알 수 있다.
말 그대로 클라이언트 측에서 적절한 프로토콜들을 추가 시켜 주는 방법이다.
(아직 RDS에 대한 이해가 부족해 오류 메시지창에 적혀있는 프로토콜들을 전부 적용시켰지만 좋은 방법은 아닌 것 같다)
혹여 클라이언트와 서버 간의 서로 일치하지 않는 드라이버를 사용한다면 내장된 TLS 라이브러리가 달라질 수 있으므로 오류가 발생할 수 있다.
인증서가 만료된 경우 또한 해당 오류가 발생할 수 있다 한다.