-
ERR_SSL_PROTOCOL_ERROR 에러 , SSL_ERROR_RX_RECORD_TOO_LONG 에러IT/에러노트 2019. 6. 6. 18:12
회사 서버에 SSL을 설치했다고 한다.
이후에 그 서버의 도메인주소를 입력하고 접속했더니 (ex : http://www.naver.com )
각 브라우저가 아래와 같은 다른 메세지들을 던져준다.
----------------------------------------------------------------------------------------------------------------------------
익스플로러
이 페이지에 안전하게 연결할 수 없음
사이트가 만료된 또는 안전하지 않은 TLS 보안 설정을 사용하기 때문일 수 있습니다.
이 문제가 계속 발생하면 웹 사이트 소유자에게 연락하세요.
----------------------------------------------------------------------------------------------------------------------------
크롬
사이트에 보안 연결할 수 없음
aaa.com에서 잘못된 응답을 전송했습니다.
Windows 네트워크 진단 프로그램을 실행해 보세요.
ERR_SSL_PROTOCOL_ERROR
----------------------------------------------------------------------------------------------------------------------------
파이어폭스
보안 연결 실패
aaa.com:11000에 접속하는 중에 오류가 발생했습니다. SSL이 허용 가능한 최대 길이를 넘은 레코드를 받았습니다.
오류 코드: SSL_ERROR_RX_RECORD_TOO_LONG
● 받은 데이터의 내용 사실 검증을 할 수 없기 때문에 보려고 시도하신 페이지를 보여드릴 수 없습니다.
● 웹 사이트 관리자에게 현재 문제를 알려 주십시오.
----------------------------------------------------------------------------------------------------------------------------
에러문구를 검색해보면, 원인은 정말 다양하다.
일단 나의 경우 ex) https://aaa.com:11000로 접속하려 했으나,
해당 aaa.com으로 DNS서버에 연동된 웹서버에 11000포트로 가는 WAS가 SSL이 안되있는 상태라서 문제가 발생한 것이었다.
하지만 A의 원인이기 때문에 B를 하시면 됩니다. 와 같은 단 하나의 명쾌한 대답을 찾기 어렵다.
단계별로 STEP을 통해 무엇이 문제인지 체크를 해나가야 한다.
우선,
해당 에러는 SSL 인증서와 연관이 된 에러이므로, 도메인이 아닌 IP로 접속하면 접속이 된다.
ex) 도메인주소 : https://www.naver.com
IP 주소 : http://202.179.177.22
서버의 IP주소를 보는 방법
1. 윈도우키 + R 을 눌러 cmd를 입력하고 명령 프롬프트로를 실행한다.
2. naver의 경우에 ping naver.com이라고 입력한다.
* ping http://www.naver.com 이 아니다.
ping naver.com 이다.
http://www.는 입력하지 않는다.
Step 1, 접속하려는 도메인 주소의 프로토컬을 확인한다.
당연히, 도메인이 SSL인증이 된 서버라면 https를 입력하고, 그렇지 않은 도메인이라면 http를 입력해야한다.
그러나 http로 접속하려고 했으나 자동으로 https로 redirect 되는 서버설정이 아주 흔하게 복&붙 되어있기 때문에,
의도치 않게 redirect 되는 경우가 있으니, 최종 접속을 시도하는 도메인이 http인지 https인지 확인한다.
(http로 접속하려 했으나 https로 redirect가 되는 경우 캐시와 쿠키를 삭제하고 다시 시도한다)
근데 http 서버에 http 프로토컬로 접속하는 경우 위 에러가 발생하는 경우는 없다.
위 에러는 SSL인증 관련 에러이기 때문
Step 2, 접속하려는 도메인이 DNS 서버에 어떤 서버주소로 연동되어있는지 파악한다.
아시다싶이 DNS 서버는 어떤 포트로 들어오던 간에, 도메인 주소만 가지고 연동된 IP로 요청을 넘기는 역할만 한다.
예를들어 https://aaa.com:11000 인 경우, DNS 서버입장에서 aaa.com이 555.555.555.555 의 IP로 연동되어 있다면,
11000 이라는 포트는 자기 알 바가 아니다. 포트 번호가 11000이든 12000이든 1111이든 그냥 555.555.555.555 서버로 해당 호출을 연동시킬뿐이다.
그럼 555.555.555.555 서버 안에서 아파치와 같은 Web Server에서 httpd-vhost.conf 같은 파일을 참조하며 11000 포트로 연동된 톰캣과 같은 WAS로 요청을 전달하면, WAS에서 처리하는것이다.
aaa.com에 11000포트로 연결하려고 했을때 555.555.555.555로 들어가서 11000포트가 어떤 WAS로 연동되는지, 어디서 처리되는지를 구체적으로 파악해보자.
웹 서버 구동의 구조에 대해서 어느정도 아는 사람이라면 무슨말인지 한번에 알고, 잘 찾아갈 수 있는 내용이지만, 사실 이런 웹의 개념에 대해서 잘 모르는 뉴비들은 무슨말인지 이해하기 어렵다.
Web Server와 WAS가 무엇인지, 어떻게 동작하는지부터 찾아보면 생각보다 통상적인 예제보단 네트워크 지식 기반의 사전적인 구조를 설명하는 개념들이 더 많이 나오기 때문에 검색해서 찾아보려해도 쉽지않다.
잘 모르는사람이 이 구조에 대해서 명확하게 알고 문제를 찾아가기 위해 하나하나 검색해서 알아보다가는, 배보다 배꼽이 더 큰 작업이 될 수 있으니 그냥 주변에 고수들에게 물어보고 해결하자.
어차피 이런 Web Server와 WAS의 구조에 대해서는 시간이 지나면 자연스레 알게된다.
결론은,
SSL는 WebServer에서 설정되는 구조이며, 팩트만 놓고 보면 뭔가 접속이 안된다면 어딘가가 잘못 되어있다는 말이다.
잘 되도록 구현되어있는데 안 될리는 없다. 소프트웨어는 절대로 거짓말을 하지 않는다.
잘 설정해두면 잘 되는거고, 반대로 안된다면 설정이 잘못되어있다는 말이다.
WebServer단에서 어디에 설정이 잘못 되어있는지에 대해서는 어떻게 명확한 가이드가 없다.
SSL이 어떤 방식으로 인증이 되는지 구조를 파악한다면 보다 쉽게 문제를 찾아낼 수 있다.
도메인을 치고 접속을 시도하는 브라우저의 문제인지,
도메인을 서버로 연결해주는 DNS 서버의 문제인지,
서버 안에 있는 Web Server의 문제인지,
Web Server로부터 요청을 전달받는 WAS의 문제인지
아니면 SSL을 배포하는 방식이 잘못되었는지 등
문제가 발생하는 위치를 먼저 파악하고 차근차근 디버깅을 해보는 수 밖에 없다.
'IT > 에러노트' 카테고리의 다른 글