AWS RDS mysql을 사용하는 java로 만든 서버가 있는데 2년동안 잘 돌아가다가 어느날 갑자기 장애 문자가 왔습니다.
에러로그를 확인해보니 mysql에 TLS 1.0으로 접속을 못하고 있네요. 갑자기?? 😳
[[IOException-Socket send error: The server selected protocol version TLS10 is not accepted by client preferences [TLS12]]
구글신을 소환해 봅니다.
보안 때문에 클라이언트에서 TLS 1.0
, TLS 1.1
을 지원하지 비활성화 했다는군요.
$JAVA_HOME/jre/lib/security/java.security
파일을 아래와 같이 수정하면 됩니다.
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
include jdk.disabled.namedCurves
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
include jdk.disabled.namedCurves
근데 왜 잘되다가 갑자기 안되었을까요? 일단 현재 장애 중이니 조치 먼저 합니다.
$JAVA_HOME/jre/lib/security/java.security
파일을 찾습니다. # java home을 알고있으면 바로 가면 됩니다. 하지만 java home 이 어딘지 모릅니다 ㅠㅠ
$ which java
/usr/bin/java
$ ls -al /usr/bin/java
lrwxrwxrwx 1 root root 22 Dec 13 2017 /usr/bin/java -> /etc/alternatives/java
$ ls -al /etc/alternatives/java
lrwxrwxrwx 1 root root 46 Dec 13 2017 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
$ ls -al /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
# 링크가 아닌 파일인거 보니 /usr/lib/jvm/java-8-openjdk-amd64 여기가 java home 인것 같네요
-rwxr-xr-x 1 root root 6464 Apr 21 15:31 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
vi /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security
프로세스 재 실행
이제 제대로 동작이 됩니다.
그럼 갑자기 안 된 원인을 찾아 볼까요?
제대로 되는데 굳이… 담배나 한대 피러 갑니다.