Development Logs/Network

HTTP를 제공하는 서버인데 HTTPS로 호출하는 경우(SSL/TLS 관련 에러 발생) (feat. error:0A00010B:SSL routines::wrong version number)

유뱅유뱅뱅 2024. 12. 2. 01:00
더보기

Netty Http Client로 HTTP를 제공하는 서버에 HTTPS로 호출된 케이스가 있었는데, 이때 발생했던 에러에 대해 더 자세히 살펴보겠습니다.


1. 에러 발생

not an SSL/TLS record: 485454502f312e3120343030200d0a5472616e736665722d456e636f64696e673a206368756e6b65640d0a446174653a204672692c203239204e6f7620323032342030333a31313a353820474d540d0a436f6e6e656374696f6e3a20636c6f73650d0a0d0a300d0a0d0a

 

2. 에러 분석

16진수(Hexadecimal)로 인코딩된 데이터

  • 485454502f312e3120343030200d0a5472616e736665722d456e636f64696e673a206368756e6b65640d0a446174653a204672692c203239204e6f7620323032342030333a31313a353820474d540d0a436f6e6e656374696f6e3a20636c6f73650d0a0d0a300d0a0d0a
  • 위의 에러 발생시 찍혔던 data는 16진수로 인코딩 데이터였습니다.

 

ASCII로 변환

  • 위의 데이터를 ASCII로 변환하면 평문 HTTP 응답을 나타냅니다.
 
HTTP/1.1 400 
Transfer-Encoding: chunked
Date: Fri, 29 Nov 2024 03:06:33 GMT
Connection: close

0

 

Provider 서버 호출

  • curl 로 http를 지원하는 Provider의 서버주소를 https로 호출해보면 좀더 문제를 명확하게 확인할 수 있습니다.
  • **error:0A00010B:SSL routines::wrong version number**는 클라이언트가 SSL/TLS 프로토콜을 통해 서버와 통신하려 했지만, 서버가 SSL/TLS 핸드셰이크를 지원하지 않거나 잘못된 응답을 반환했을 때 발생하는 에러입니다.

 

  • curl로 Provider 서버를 http로 호출하면, 서버에서 응답은 오는 것을 확인할 수 있습니다.

 

3. 에러 해결

  • 해당 Provider 서버 호출 하는 부분을 찾아 https → http로 수정하면 됩니다.