About Author

json
blog: https://kr1json.github.io
twitter: @kr1json
github: kr1json
facebook: kr1json

잊기전에 써봅니다.

About this Article

Date Released:
Sunday, July 4, 2021 2:48 PM

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]]

구글신을 소환해 봅니다.

GodGoogle

보안 때문에 클라이언트에서 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

근데 왜 잘되다가 갑자기 안되었을까요? 일단 현재 장애 중이니 조치 먼저 합니다.

조치 방법

  1. $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 
  1. vi /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security

  2. 프로세스 재 실행

이제 제대로 동작이 됩니다.

그럼 갑자기 안 된 원인을 찾아 볼까요?

제대로 되는데 굳이… 담배나 한대 피러 갑니다.


tags : tls  mysql  ssl  java 

blog comments powered by Disqus