문제

카페24 사이트가 HTTPS로 열리지 않습니다. 브라우저가 인증서 경고(“연결이 비공개로 설정되어 있지 않습니다”, NET::ERR_CERT_COMMON_NAME_INVALID 또는 ERR_CERT_AUTHORITY_INVALID)를 띄우거나, 카페24 관리 화면에서 신청한 무료 SSL 인증서가 아예 발급되지 않습니다. 도메인은 분명히 내 것이고 평문 HTTP로는 사이트가 잘 뜨는데, 자물쇠만 안 나타납니다.

카페24 SSL 문제는 거의 다 한 가지로 귀결됩니다: 인증서는 도메인을 연결하는 마지막 단계인데, 사람들은 이걸 첫 단계로 만들려 합니다. 순서만 바로잡으면 해결책은 대개 명확해집니다.

증상

  • 브라우저가 인증서 경고로 사이트를 차단하고, 인증서의 이름이 입력한 주소와 일치하지 않습니다.
  • 루트 도메인은 HTTPS가 되는데 www에서 경고가 뜹니다(또는 반대), 혹은 m. 모바일 호스트에서 경고가 뜹니다.
  • 카페24 무료 SSL 신청이 실패하거나, 시간 초과되거나, 끝나지 않습니다.
  • http://로는 사이트가 잘 뜨는데 https://는 실패하거나 엉뚱한 인증서를 제시합니다.
  • 나에게는 되는데 다른 망에 있는 동료는 여전히 오류를 봅니다.

사람들이 하나로 뭉뚱그리는 두 단계

카페24로 사이트를 HTTPS에 올리는 건 사실 별개의 두 작업이고, 이 둘을 헷갈리는 데서 대부분의 고통이 나옵니다.

1단계 — 도메인이 실제로 연결돼야 한다. 도메인의 네임서버가 카페24(또는 사이트가 호스팅된 곳)로 위임돼 있어야 하고, 도메인이 카페24 서버로 해석되어 평문 HTTP로 응답해야 합니다. 이건 평범한 DNS 작업이고, 네임서버 변경은 전파에 최대 24~48시간이 걸립니다. 그전까지 도메인은 카페24가 통제하는 곳을 안정적으로 가리키지 않습니다.

2단계 — 인증서가 발급된다. 카페24 무료 인증서는 Let’s Encrypt에서 오며, 유효기간 90일에 자동 갱신됩니다. Let’s Encrypt는 소유 주장을 그냥 믿지 않고 ACME HTTP-01 챌린지로 증명합니다 — http://내도메인/.well-known/acme-challenge/…에서 특정 파일을 평문 HTTP로 가져갑니다. 이 가져가기는 1단계가 이미 끝나야만 성공합니다: 이름이 카페24로 해석되고 서버가 80번 포트로 응답해야 합니다. 도메인이 연결되기 전에 인증서를 신청하면 챌린지가 도착할 곳이 없습니다. 발급은 실패하고, 오류 메시지는 “DNS가 아직 준비 안 됐다”고 좀처럼 말해주지 않습니다.

그러니까 인증서는 도메인을 작동시키는 물건이 아닙니다. 도메인이 이미 작동한 다음에야 작동하는 물건입니다.

주요 원인 3가지

  1. 도메인이 연결되기 전에 인증서를 신청함. 네임서버가 아직 카페24로 위임되지 않았거나 변경이 전파 중이라 Let’s Encrypt HTTP-01 챌린지가 도메인에 도달하지 못합니다. 신호: 평문 http://도 카페24에서 깔끔하게 안 뜨거나, DNS 조회 결과 도메인이 여전히 다른 곳에 위임돼 있습니다.
  2. 인증서가 커버하지 않는 이름. 카페24 무료 인증서는 단일 도메인이라 와일드카드가 아닙니다. 한 호스트명(예: 루트)으로 발급됐는데 방문자는 인증서 SAN에 없는 다른 이름(www, m. 모바일 호스트)으로 접속합니다. 신호: 한 호스트명은 HTTPS가 되고 형제 호스트에서 이름 불일치 오류가 납니다.
  3. 오래된 위임이 SNI로 엉뚱한 인증서를 제시함. 도메인이 전파 중이라 일부 리졸버는 여전히 방문자를 옛 호스트나 공유 기본 엔드포인트로 보냅니다. 서버는 SNI 호스트명을 보고 제시할 인증서를 고르는데, 기본 엔드포인트는 다른 이름의 인증서를(또는 아무것도) 돌려줍니다. 신호: 어떤 망에서는 오류가 나고 어떤 망에서는 안 납니다.

DechoNet으로 진단

  • SSL Check는 서버가 특정 호스트명에 대해 실제로 제시하는 인증서를 보여줍니다 — SAN에 담긴 정확한 이름들, 발급자, 유효기간, 체인이 완전한지. 루트와 www 양쪽에 실행해보세요. 이름 불일치나 “인증서 없음” 결과가 나오면 문제가 커버리지인지 발급인지 즉시 알 수 있습니다.
  • DNS Lookup은 도메인이 카페24로 위임됐는지, A/CNAME 레코드가 무엇을 반환하는지 확인합니다 — 인증서 오류로 위장한 1단계 문제를 잡는 가장 빠른 방법입니다.
  • HTTP Check는 도메인이 평문 HTTP로 응답하는지 확인합니다. 이것이 Let’s Encrypt 챌린지가 의존하는 전제 조건입니다.

해결 체크리스트

  • DNS Lookup을 실행해 도메인 네임서버가 카페24로 위임됐고 A 레코드가 카페24 서버를 가리키는지 확인합니다. 네임서버를 방금 바꿨다면 발급이 성공하기까지 최대 24~48시간을 예상하세요.
  • 먼저 사이트가 평문 http://로 뜨는지 확인합니다. 도메인이 해석되어 80번 포트로 응답하지 않으면 Let’s Encrypt HTTP-01 챌린지가 완료될 수 없습니다 — HTTPS는 HTTP가 되기 전에 올 수 없습니다.
  • 그다음에야 카페24에서 무료 SSL 인증서를 신청합니다. 도메인 연결 전의 발급 실패는 버그가 아니라 당연한 결과입니다.
  • 서비스하는 모든 호스트명 — 루트, www, 쓴다면 m. — 에 SSL Check를 실행합니다. 인증서가 단일 도메인이므로 각 이름은 각자의 커버리지가 필요합니다. www에서 경고가 뜨면 그 이름이 포함되지 않은 것입니다.
  • 발급은 성공했는데 경고가 계속되면 다른 기기나 망에서 테스트합니다. 망마다 결과가 다르면 오래된 위임(TTL 대기)이지 발급 실패가 아닙니다.

에스컬레이션 시점

  • DNS가 카페24로 완전히 위임됐고 도메인이 HTTP로 뜨는데도 발급이 계속 실패한다면, 카페24 발급 파이프라인의 문제입니다 — 무작정 재시도하지 말고 정확한 호스트명과 실패 메시지를 들고 카페24 고객센터에 문의하세요.
  • 루트, www, 여러 서브도메인을 하나의 인증서로 커버해야 한다면 단일 도메인 무료 인증서는 맞는 도구가 아닙니다 — 그건 와일드카드나 멀티-SAN 인증서이고, 디버깅할 설정 오류가 아니라 별개의 상품입니다.

내 도메인에서 바로 확인

무료, 가입 불필요. 이 가이드가 다루는 항목을 바로 검사하고 조치 방법을 알려드립니다.