HTTPS로 사이트 보안 유지

HTTPS(Hypertext Transfer Protocol Secure)란 사용자 컴퓨터와 방문한 사이트 간에 전송되는 사용자 데이터의 무결성과 기밀성을 유지할 수 있게 해주는 인터넷 통신 프로토콜입니다. 사용자는 웹사이트를 이용할 때 안전한 비공개 온라인 환경을 기대합니다. Google에서는 사이트의 콘텐츠와 상관없이 HTTPS를 도입하여 웹사이트에 접속하는 사용자를 보호할 것을 권장하고 있습니다.

HTTPS를 사용하여 전송되는 데이터의 보안은 다음과 같은 3중 핵심 보호층을 제공하는 전송 계층 보안 프로토콜(TLS)을 통해 더욱 강화됩니다.

  1. 암호화: 교환되는 데이터를 암호화하여 침입자로부터 보호합니다. 즉, 사용자가 웹사이트를 탐색하는 동안 아무도 대화를 '엿들을' 수 없고 페이지에서 활동을 추적할 수 없으며 정보를 도용할 수 없습니다.
  2. 데이터 무결성: 데이터가 전송되는 동안 의도적이든 그렇지 않든 모르는 사이에 데이터가 변경되거나 손상되는 일을 방지합니다.
  3. 인증: 사용자가 의도된 웹사이트와 통신 중임을 입증합니다. 중간자 공격을 차단하고 사용자의 신뢰를 구축하게 되어 다른 비즈니스 이점으로 이어지게 됩니다.

HTTPS 구현 시 권장사항

강력한 보안 인증서 사용

사이트에서 HTTPS를 사용하도록 설정하는 과정에서 보안 인증서를 발급받아야 합니다. 인증서는 인증 기관(CA)에서 발급하며 웹 주소가 실제로 특정 기관/단체에 속하는지 확인하는 단계를 거침으로써 중간자 공격으로부터 고객을 보호합니다. 인증서를 설정할 때 2,048비트 키를 선택하여 높은 보안 수준을 유지해야 합니다. 인증서가 보안 수준이 낮은 키(1,024비트)로 되어 있다면 2,048비트로 업그레이드하세요. 사이트 인증서를 선택할 때 다음 요소를 고려하세요.

  • 기술 지원을 제공하는 신뢰할 수 있는 CA에서 인증서를 발급받습니다.
  • 다음 중에서 필요한 인증서의 종류를 결정합니다.
    • 하나의 보안 출처에 하나의 인증서 사용(예: www.example.com)
    • 잘 알려진 여러 보안 출처에 여러 도메인 인증서 사용(예: www.example.com, cdn.example.com, example.co.uk)
    • 많은 동적 하위 도메인이 있는 보안 출처에 와일드카드 인증서 사용(예: a.example.com, b.example.com)

영구 서버 측 리디렉션 사용

영구 서버 측 리디렉션을 사용하여 HTTPS 페이지나 리소스로 사용자와 검색엔진을 리디렉션합니다.

Google에서 HTTPS 페이지를 크롤링 및 색인 생성할 수 있는지 확인

  • URL 검사 도구를 사용하여 Googlebot이 페이지에 액세스할 수 있는지 테스트합니다.
  • robots.txt 파일로 HTTPS 페이지를 차단하지 않습니다.
  • HTTPS 페이지에 noindex 태그를 포함하지 않습니다.

HSTS 지원

Google은 HTTPS 사이트에서 HSTS(HTTP Strict Transport Security)를 지원할 것을 권장합니다. HSTS는 사용자가 브라우저의 주소 표시줄에 http를 입력하는 경우에도 HTTPS 페이지를 자동으로 요청하도록 브라우저에 지시합니다. 또한 검색결과에 보안 URL을 제공하도록 Google에 지시하게 됩니다. 이와 같은 조치를 통해 사용자에게 보안 수준이 낮은 콘텐츠를 제공할 위험성을 최소화할 수 있습니다.

HSTS를 지원하려면 HSTS를 지원하는 웹 서버를 사용하고 기능을 사용 설정하세요.

HSTS를 사용하면 보안이 강화되지만 롤백 전략이 복잡해집니다. 다음과 같은 방법으로 HSTS를 사용 설정해 보세요.

  1. 먼저 HSTS 없이 HTTPS 페이지를 배포합니다.
  2. 짧은 max-age로 HSTS 헤더 전송을 시작합니다. 사용자 및 기타 클라이언트 모두로부터 트래픽을 모니터링하고 광고와 같은 종속 항목의 성능도 모니터링합니다.
  3. HSTS max-age를 천천히 늘립니다.
  4. HSTS가 사용자 및 검색엔진에 부정적인 영향을 미치지 않는다면 대부분의 주요 브라우저에 사용되는 HSTS 미리 로드 목록에 사이트를 추가할 수 있습니다. 이렇게 하면 보안이 강화되고 성능이 개선됩니다.

일반적인 실수 피하기

TLS를 사용하여 사이트의 보안을 강화하는 과정에서 다음과 같은 실수를 범하지 않도록 하세요.

일반적인 실수 및 해결책
인증서 만료됨 인증서를 항상 업데이트된 상태로 유지합니다.
인증서가 잘못된 웹사이트 이름으로 등록됨 사이트에서 제공하는 모든 호스트 이름에 인증서를 받았는지 확인합니다. 예를 들어 인증서가 www.example.com만 적용되는 경우, www. 접두어 없이 example.com만을 사용하여 사이트를 로드하는 방문자는 인증서 이름 불일치 오류로 인해 차단됩니다.
SNI(Server Name Indication)가 지원되지 않음 웹 서버에서 SNI를 지원하며 일반적으로 잠재고객이 지원되는 브라우저를 사용하는지 확인합니다. 모든 최신 브라우저에서 SNI를 지원하지만 이전 브라우저를 지원해야 하는 경우 전용 IP가 필요합니다.
크롤링 문제 robots.txt를 사용하여 HTTPS 사이트의 크롤링을 차단하지 않습니다. 자세히 알아보기
색인 생성 문제 가능한 경우 검색엔진에서 페이지의 색인을 생성하도록 허용합니다. noindex 태그는 사용하지 마세요.
프로토콜이 이전 버전임 이전 프로토콜 버전은 보안 수준이 낮으므로 최신 기능을 갖춘 최신 버전의 TLS 라이브러리를 사용하고 최신 프로토콜 버전을 구현해야 합니다.
보안 요소 혼선 HTTPS 페이지에는 HTTPS 콘텐츠만 삽입합니다.
HTTP와 HTTPS의 콘텐츠가 다름 HTTP 사이트와 HTTPS 사이트의 콘텐츠가 동일한지 확인합니다.
HTTPS에서 HTTP 상태 코드 오류 발생 웹사이트에서 정확한 HTTP 상태 코드를 반환하는지 확인합니다. 예를 들어 접속 가능한 페이지에는 200 OK, 존재하지 않는 페이지에는 404 또는 410을 표시합니다.

HTTP에서 HTTPS로 이전

사이트를 HTTP에서 HTTPS로 이전하는 경우 Google에서는 URL이 변경되는 사이트 이전으로 취급합니다. 이 경우 트래픽 양에 일시적으로 영향이 있을 수 있습니다. 모든 사이트 이전과 관련된 권장사항에 관해 자세히 알아보세요.

Search Console에 새 HTTPS 속성을 추가해야 합니다. Search Console은 HTTP와 HTTPS를 별개로 처리하며, 속성에 관한 데이터를 서로 공유하지 않습니다.

사이트에서 HTTPS를 사용하는 방법에 관한 추가 도움말은 HTTPS 이전 FAQ를 확인하세요.

TLS 구현 관련 추가 리소스

다음은 사이트에 TLS를 구현하는 방법에 관한 몇 가지 추가 리소스입니다.