궁금한자333
90
2021-09-23 12:31:35 작성 2021-09-23 12:40:46 수정됨
9
211

네이버 api 로그인시 SSLHandshakeException 오류 발생합니다.


잘 사용하다가 아무런 내용 변경이 없는데, 

갑자기 네이버 간편 로그인이 안됩니다. 


로그인 후 콜백시에 토큰을 가져오는 로직에서

javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake 오류를 발생합니다.

1. java oauth2방식 jdk 1.7을 사용하며 https 통신을 합니다.

2. 상용사이트라 공식 인증서를 받아서 사용중이였습니다.

3. webtob 설정은 Protocols = "-SSLV2,-SSLV3", 입니다.

4. 같은 서버에 같은 로직으로 카카오는 로그인이 정상적으로 이루어집니다. 

5. 로컬(http) + 톰켓로 했을경우 정상적으로 인증을 받아 로그인이 되고 있습니다. 


어느부분을 봐야할까요?

------------------------------------------

인증서를 사이트에 돌려보니

TLS 1.3 No
TLS 1.2 Yes
TLS 1.1 Yes
TLS 1.0 Yes
SSL 3 No
SSL 2 No


이라고 결과값이 나옵니다. 

------------------------------------------





0
  • 답변 9

  • HJOW
    3k
    2021-09-23 13:05:27 작성 2021-09-23 13:05:52 수정됨

    가장 편한 방법은 Java 8 (JDK1.8)로 업그레이드하는 것입니다. 더 높은 버전도 좋구요.


    물론 TLS 1.2를 사용하는 방법도 있습니다.

    https://sagittariusof85s.tistory.com/158

    하지만 보안에 좋지 않다 라는 것이죠.

  • 궁금한자333
    90
    2021-09-23 13:10:24

    HJOW // 

    답변 감사합니다. 상용사이트라 1.8로 업그레이드가 불가능합니다. 

    음.. TLS1.2를 사용하는 방법밖에 없을가요..

  • HJOW
    3k
    2021-09-23 13:30:45

    예. 방법이 없습니다. JDK1.7 (자바7)은 스펙상으로 TLS 1.3을 지원하지 않습니다.

  • Mambo
    6k
    2021-09-23 13:36:23

    TLS 1.2를 사용하는게 가장 좋겠지만 우선은 webtob에서 TLS 1.0를 허용하시면 될 듯 합니다.

    찾아보니 JDK 1.7의 기본 프로토콜 버전이 TLS 1.0으로 나오네요. (패치 버전 확인 필요)

    네이버 API 주소에 대해 SSL 체크를 해보면 클라이언트가 TLS 1.0부터 TLS 1.2까지 사용할 수 있도록 지원합니다. 이 말은 반대로 콜백 시 전달될때 TLS 1.0부터 사용할 수 있다는 말이겠죠.

  • 궁금한자333
    90
    2021-09-23 13:58:28

    web 서버 설정상에서 
    Protocols = "-SSLV2,-SSLV3,TLSv1,TLSv1.1,TLSv1.2", 

    허용으로 바꿨는데도. 여전히 SSLHandshakeException 오류가 떨어지네요...

  • Mambo
    6k
    2021-09-23 14:10:31

    콜백 시 해당 오류가 발생한다면 webtob에서 지원하지 못하는 걸 수 있고

    콜백 후 자바 클라이언트로 토큰 조회를 시도할 때 발생하는 거라면 자바 클라이언트에서 사용하는 TLS 프로토콜 버전을 검토하셔야해요.

    JDK 1.7에서 기본 프로토콜 버전이 TLS 1.0이라고 나오지만 패치 버전에 따라 다를 수 있으니 현재 정확한 JDK 버전에 대해 관련 정보를 좀 더 찾아보심이 좋을 듯 합니다.

  • 궁금한자333
    90
    2021-09-23 14:52:12

    mambo // 

    답변 감사합니다. 

    기존에는 아무이상 없다가 9월 10일을 기점으로 갑자기 안되더라도요..

    서버나, 소스 이런거 변동도 전혀 없는데요. 


    네트웍에서 차단 걸었나 의심이 들기도 하고.. 답을 발견하면 답변 달겠습니다. 

    감사합니다. 

  • HJOW
    3k
    2021-09-23 15:15:50 작성 2021-09-23 15:16:46 수정됨

    SK쪽 오픈API 쓰는데 SSL 인증서 업그레이드 문제로 자바1.7 이하는 사용이 불가능할 수 있다 라고 안내받은 적이 있습니다.

    자바 버전을 업그레이드하거나 SSL을 빼야된다 라고 안내를 받았는데, 저희는 오픈API 사용부분에는 개인정보를 쓰는 게 없어서 SSL 뺐습니다.

    이 SSL이라는 게 양쪽 모두 프로토콜이 맞아야 사용이 가능하니까요.


    즉, 기존 소스에서도 문제가 발생할 수 있고, 그렇다면 상대쪽 시스템에서 뭔가 조치가 있었을 수 있다는 것입니다.

  • Mambo
    6k
    2021-09-23 15:38:14 작성 2021-09-23 15:38:36 수정됨

    보안이나 호환성 패치는 지속적으로 이루어지기 때문에 기존에 정상 동작하였던 것이 특정 시점에도 동작할 거란 보장이 없습니다. TLS의 경우에도 서버와 클라이언트 모두 사용가능한 프로토콜 버전, 암호화 방식을 결정해야하기 때문에 어느 한쪽이 지원하지 않는 경우라면 당연히 오류가 발생합니다. 

    네이버페이 간편결제 API는 TLS 1.0~TLS 1.2를 지원합니다. SSL은 더 이상 지원하지 않으므로 TLS 1.0 이상을 지원하는 클라이언트 라이브러리를 사용해야 합니다.

    위와 같이 현재 네이버페이 API는 호환성을 위해 TLS 1.0부터 지원하지만 추후에는 TLS 1.2부터 지원할 가능성이 충분히 있습니다. 만약, TLS 1.2부터 사용하도록 업데이트된다면 네이버페이 API를 사용하는 쪽도 TLS 1.2를 사용할 수 있도록 패치하셔야합니다...

  • 로그인을 하시면 답변을 등록할 수 있습니다.