이야기박스

SSLProtocolException: handshake alert: unrecognized_name 본문

Computer & Data/Network

SSLProtocolException: handshake alert: unrecognized_name

박스님 2018. 8. 22. 14:38
반응형

"SSLProtocolException: handshake alert: unrecognized_name"


https api를 사용하려고 하던 차에 발생한 에러였다.



발생 배경

- 요청을 통해 IP를 해당 API Server에 등록

- 웹 브라우저를 통한 요청은 잘 이루어짐

- 포스트맨을 이용한 요청도 문제 없음

- 타 프로그램을 통한 요청은 위의 에러 발생 ( 생자바 프로그램, embulk )


구글 검색을 하다보니 SNI extension 옵션을 꺼주면 해결될 수 있다고 함.


< SNI extension 옵션 끄는 방법 >

1. jvm args 로 제공

-Djsse.enableSNIExtension=false


2. 코드상에서 runtime 중 실행

System.setProperty("jsse.enableSNIExtension", "false");


두 방법 모두 효과적이었다.


그렇다면, SNI extension이란 무엇일까?


우선 SNI (Server Name Indication)

SNI란 직역하면 서버 이름 지정이다. TLS 프로토콜의 확장형이라고 이해하면 되겠다.

handshake 과정에서 웹브라우저의 호스트명을 지정해주는 과정이다.


SNI extension은 이 과정을 나타내는 것 같다. (자세히 못읽어봄)



그렇다면 문제는 왜 발생했을까??


추측

- TLS 접근만 했으면 문제 없이 통과됬을 것.

- Api Server가 SNI 접근을 지원하지 않아서 문제 되었을것이다.



앞으로 방향성

SNI, TLS 개념을 좀 더 깊게 공부해 볼 것


참조

SNI란?

SNI Extension

SNI Extension 해결 방법

반응형