페이스북 공유 디버거에 뜬 응답 코드 418 (SSL 인증서 문제)
위는 페이스북(메타)의 공유 디버거에서 "URL이 잘못된 HTTP 응답코드를 반환했습니다."라고 하며 응답 코드(request code) 418이 떴다고 알리는 모습이다.
이렇게 418 응답 코드가 뜨는 때에는 때때로 HTML 문서의 내용에 이상이 없어도 <meta> 태그로 넣는 오픈 그래프(open graph) 정보들이 페이스북 쪽에 잘 건네지지 않기도 한다.
모질라의 개발자 문서에 보면 418 응답 코드에 관하여 이런 설명이 나온다.
418 I'm a teapot
HTTP 418 I'm a teapot 클라이언트 오류 응답 코드는 서버가 찻주전자이기 때문에 커피 내리기를 거절했다는 것을 의미합니다. 일시적으로 커피가 없는 커피/차 주전자는 대신 503을 반환해야 합니다. 이 오류는 1998년과 2014년 만우절 농담이었던 하이퍼 텍스트 커피 주전자 제어 규약(Hyper Text Coffee Pot Control Protocol)에 대한 참조입니다.
일부 웹사이트는 자동화된 쿼리와 같이 처리하고 싶지 않은 요청에 대해 이 응답을 사용합니다.
418 I'm a teapot - HTTP | MDN (https://developer.mozilla.org/ko/docs/Web/HTTP/Status)
문제가 일어난 상황을 목적물(차 또는 커피)에 어울리지 않은 주전자를 쓴 것에 비유한 것 같은데, 뜻이 명쾌하게 와닿지 않고 알쏭달쏭하게 느껴진다. 일부러 읽는 사람이 무슨 뜻인지 알기 어렵게 빙빙 돌리는 설명 같기도 하다. 아래 글에 더 알기 쉽기 풀어낸 설명이 있는데, 그래도 쉽지 않은 느낌이 든다.
글쓴이가 겪은 경우는 SSL 인증서가 오류의 원인이었다. 웹 서버를 옮기면서 Let's Encrypt의 SSL 인증서를 다시 발급해야 하는 상황이었는데, certbot 명령을 써서 대상 도메인과 발급 방법을 바꾸려다 몆 번 잘못 넣어 인증서 발급 실패 한도를 넘기는 바람에 인증서를 새로 받지 못했다. 그래서 임시로 옛 서버에서 쓰던 인증서를 가져와서 쓰고 있었다. 웹 누비개로 볼 때에는 이상이 없었지만, 페이스북 공유 디버거에서는 418 응답 코드가 나왔다. 이 경우에는 리눅스의 curl에 웹 문서의 주소를 넣었을 때에도 아래처럼 오류가 뜬다.
$ curl -I https://...
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
구글(google)의 SSL 인증서를 쓰는 경우에 인증서에 문제가 없더라도 위와 같은 결과가 나올 수 있다. 이런 때에는 아래처럼 curl 명령에 아래의 설명에 나오는 -k 또는 --insecure을 선택사항으로 붙이면 curl 명령으로 보고자 하는 정보를 볼 수 있다.
-k, --insecure Allow connections to SSL sites without certs (H)
하지만 Let's Encrypt 인증서를 쓰는 때에 위와 같이 나온다면 인증서에 문제가 있다고 볼 수 있다. 아마도 인증서 파일을 옮기면서 제대로 복사되지 않았기 때문이었던 것 같다. Let's Encrypt 인증서를 다시 새로 발급한 뒤에는 HTTPS 주소를 넣었을 때에 418 응답 코드가 나오는 문제는 말끔히 사라졌다.
HTTPS SSL 인증서를 점검해 주는 SSL Checker을 잘 이용하면, 페이스북 공유 디버거에서 응답 코드 418이 뜨는 것을 더 빨리 알아차리고 문제 원인을 찾는 데에 도움이 될 수 있다. 위의 경우에는 인증서가 만료되어 유효하지 않은 것이 원인이었고, 아래의 경우는 다른 문제가 끼어 있었다.
덧글을 달아 주세요