ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SSL 통신을 위한 WAS 내 Java 설정_https 호출
    IT/WEBWAS 2021. 5. 8. 15:15
    반응형

     WAS 내 JSP 파일등을 통해 https 통신이 필요한 경우, SSL Protocol을 사용하게 된다. 

    여기서 WAS가 사용하는 Java 버전 및 옵션 적용 유무에 따라 통신/인터페이스시 오류가 발생할 수 있다. 

    조치를 위해 아래 내용을 참고하여 설정 변경 후 WAS 재기동을 진행한다. 

     

    1. Java 버전 업그레이드

    버전별 사용가능한 SSL Protocol 은 아래와 같다. 여기서 기준은 무료 버전이다. 

    버전 가능한 SSL Protocol Default설정 비고
    Java 6 (JDK 1.6.0_45) SSL v3.0, TLS1.0 TLS1.0 * JDK minor 버전에 따라 지원 프로토콜 추가
    Java 7 (JDK 1.7.0_80) SSL v3.0, TLS1.0, TLS1.1, TLS1.2  TLS1.0 Default는 1.0 유지임에 주의
    Java 8 (JDK 1.8.0_202) SSL v3.0, TLS1.0, TLS1.1, TLS1.2  TLS1.2   

    *  JDK 1.6.0_111 이후 TLS1.1 지원, 1.6.0_121 이후 TLS 1.2 지원 (단, jsse.enableSNIExtension 등 옵션 설정은 불가능)

    ** TLS1.2 미만 프로토콜의 경우, Deprecated 될 예정이니 사용을 지양하는 것이 좋다.

     

     

    2. 오류 로그별 Java/옵션 적용 

    2.1 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

     

    1) JDK 1.7 이상으로 업그레이드를 진행한다.
      이때, 반드시 Java 버전 업그레이드 후 해당 WAS에 Deploy 하여 사용중인 소스에 대한 오류 발생여부를 확인한다.
      (일반적으로 Java 6->7 로 바뀜에 따른 오류는 거의 없다.)

    2) 추가적으로 TLS 1.2 를 사용하도록 기동 스크립트에 아래와 같이 옵션을 추가한다. 

     : WAS 기동 옵션 내 JAVA HOME 디렉토리 설정이나, -D 옵션이 설정된 위치에 다음과 같은 명령어를 추가해 준다.

    -Dhttps.protocols=TLSv1.2 -Djdk.tls.client.protocols=TLSv1.2

      (전체 프로토콜을 허용하고 싶은 경우는 TLSv1.0,TLSv1.1,TLSv1.2 와 같이 변경하면 됨.)

     

     

    2.2 javax.net.ssl.SSLHandshakeException: Received fatal alert: unrecognized_name

     

    -> 기동 스크립트에 아래와 같이 옵션을 추가한다. 

      아래 옵션은 SNI(ServerNameIndex) 값을 넘기지 않겠다는 내용으로, 인식이 불가능한 문자열을 정보로 보내지 않도록 하는 설정이다.

    -Djsse.enableSNIExtension=false  

     호출 대상/Target 서버 측에서 SNI을 통해 Domain에 따른 분기처리 등을 설정해 두었다면 아래와 같이 옵션을 설정한다.

    -Djsse.enableSNIExtension=true

     

    **** 호출 대상/Target 서버 측에서 SNI를 사용하는지 확인하는 방법은 아래와 같다. (WAS 구성 서버에서 실행)

          아래 명령어 실행시 정상적으로 Handshake 가 된다면 SNI 설정을 true로 설정하는 것이 좋다.

    openssl s_client -servername myserver.com -connect myserver.com:443 -state

    (대상서버가 myserver.com , 443 포트 사용중이라고 가정. -servername 변수 유무를 통해 사용여부 확인가능)

    반응형
Designed by Tistory.