빠른 주말 프로젝트일 줄 알았다. 그런 종류 알지 않는가: "그냥 Egress VM 하나 띄우고, 트래픽 좀 라우팅하고, 커피 한 잔 하면서 점심까지 끝내자." 독자여, 점심까지 끝나지 않았다.

설정

일부 개발 환경을 위한 작은 접근 티어를 구축하고 있었다: Cloudflare Zero Trust를 앞에 둔 Egress VM, 두 개의 특정 개발 도메인을 위한 호스트네임 기반 라우팅, 그리고 반대편에서 소스 IP를 확인하는 AWS WAF. "공개 인터넷에 노출하지 않고 팀에게 안전한 접근을 제공하는" 꽤 표준적인 구성이다.

TLS 복호화를 활성화해야 하는 부분에 도달하기 전까지는 모든 것이 순조로웠다. 이것이 Cloudflare 게이트웨이가 실제로 트래픽을 검사하고 IP가 아닌 호스트네임을 기반으로 라우팅할 수 있게 해주는 마법이다. 이것이 없으면 아름다운 호스트네임 규칙은 그냥 예쁘게 보이기만 하고 아무것도 하지 않는다.

튜토리얼의 흔적

공식 Cloudflare 학습 경로를 따랐다. 세 개의 다른 블로그 글을 따랐다. 구독을 정말로 원하는 목소리의 누군가가 만든 YouTube 튜토리얼도 따랐다. 그들은 모두 같은 말을 했다:

Zero Trust > Settings > Network > Firewall > TLS decryption으로 가서 스위치를 켜라.

그래서 거기로 갔다. 스위치를 켰다. 그러자 화면 상단에 빨간 배너가 나타났고 거기에는 단순히 이렇게 적혀 있었다:

Error configuring TLS setting.

그게 전부였다. 코드도 없고, 힌트도 없고, "자세한 내용은 여기를 클릭" 링크도 없었다. 그저 "뭔가 잘못됐다, 행운을 빈다"는 분위기뿐이었다.

다시 시도했다. 같은 오류. 새로고침했다. 같은 오류. Firefox에서 시도했다. 같은 오류. 캐시를 지웠다. 같은 오류. 커피를 만들까 고민했다. 커피를 만들었다. 같은 오류.

탐정 작업

여기서 내가 가장 좋아하는 도구가 등장한다. UI가 무엇이 잘못되었는지 말해주지 않을 때, 네트워크 탭과 curl이 그 답을 알려준다. 개발자 도구를 열고 토글이 보내는 요청을 확인한 다음, curl로 복사하여 로컬에서 실행했다:

{
  "result": null,
  "success": false,
  "errors": [
    {
      "code": 2211,
      "message": "TLS decryption cannot be enabled without a certificate. Please disable TLS encryption or configure a certificate using the 'certificate' setting."
    }
  ],
  "messages": []
}

거기 있었다. 명확하고, 도움이 되며, 실행 가능한 오류 메시지. 이 메시지가 UI에 표시되었다면 내 인생의 약 90분을 절약할 수 있었을 종류의 메시지. 대신 JSON 응답 안에 숨어 있었고, API와 화면 사이 어딘가에서 삼켜져 버렸다.

메시지는 기본적으로 이렇게 말하고 있었다: "먼저 인증서가 필요합니다, 이 감자 같은 분." (의역한 것이다.)

진짜 해결책

인터넷상의 누구도 언급하지 않는 것 같은 사실이 여기 있다: 인증서 관리가 이동되었다.

내가 읽은 모든 가이드는 옛날 위치를 가리키고 있었다. 실제 현재 위치는 완전히 다른 섹션에 묻혀 있다. 구체적으로:

Zero Trust > Traffic policies > Traffic settings > Certificates (상단 탭)

Network도 아니고, Firewall도 아니다. Traffic policies > Traffic settings.

거기서 Cloudflare 관리 인증서를 생성한다. 그런 다음 AvailableIn-Use로 표시한다. 그런 다음 5분에서 10분을 기다린다(이 부분도 아무도 언급하지 않는다. 그냥 상태 필드를 바라보며 조용히 인생의 선택들을 의심하게 된다). 인증서가 완전히 활성화되면, 마침내 돌아가서 TLS 복호화를 활성화할 수 있다.

그냥 된다. 토글이 켜지고, 빨간 배너는 사라지고, 세상이 다시 이해된다.

교훈

이 작은 모험에서 두 가지가 내 마음에 남았다.

첫째: 문서는 틀리지 않았고, 그냥 최신이 아니었다. Cloudflare는 빠르게 움직이고 대시보드를 자주 재구성한다. 이는 불평이 아니라 현실이다. 빠르게 진화하는 제품에 대한 가이드를 따를 때는 메뉴 경로가 바뀌었을 수 있다고 예상해야 한다. 개념은 동일하지만, 버튼은 항상 스크린샷이 말하는 위치에 있지 않다.

둘째: 네트워크 탭은 가장 친한 친구다. UI가 쓸모없는 오류를 줄 때, API는 거의 항상 더 많은 정보를 알고 있다. 브라우저 개발자 도구, curl, 또는 그냥 원시 응답을 읽는 것은 5분 만에 디버깅하는 것과 5시간 만에 디버깅하는 것의 차이다. UI 오류 처리는 훨씬 더 자세한 시스템 위에 칠해진 얇은 레이어이며, 그 시스템은 보통 거기서 당신이 정중하게 물어보길 기다리고 있다.

보너스

이것을 Cloudflare에 실제로 보고했다. 오류 코드 2211에는 완벽하게 좋은 메시지가 첨부되어 있다. 그저 화면까지 도달하지 못하고 있을 뿐이다. 누군가 발견해서 미래의 주말 전사가 모호한 배너 대신 도움이 되는 배너를 보게 되길 바란다.

그때까지, "Error configuring TLS setting"이라는 오류를 더 이상의 설명 없이 본다면, 답은 아마도 이것일 것이다:

  1. 먼저 인증서 생성 (Traffic policies > Traffic settings 아래)
  2. Available 및 In-Use로 표시
  3. 기다리기
  4. 그런 다음 TLS 복호화 활성화

이제 실례하겠다, 드디어 작동하는 Egress VM이 있고, 두 번이나 식은 커피가 있다.

일요일 자정(오전 02:42) 디버깅 책상에서 인사를 전한다.