본문으로 건너뛰기
wpflow
사이트 관리

워드프레스 HTTPS 전환 후 자물쇠가 안 뜰 때: 혼합 콘텐츠 해결 순서

SSL을 설치했는데 '안전하지 않음'이 뜨나요? 워드프레스 주소 설정, 개발자 도구로 http 리소스 찾기, 안전한 검색·치환, 리디렉션 확인까지 공식 문서 기준으로 정리했습니다.

wpflow 편집팀10분 읽기
노트북에서 브라우저 개발자 도구를 열고 주소창의 자물쇠 아이콘을 확인하는 사람
이 글의 순서 (7)
  1. 먼저 증상을 구분하세요: 인증서 문제인지, 혼합 콘텐츠인지
  2. 워드프레스 주소와 사이트 주소를 https로 바꾸기
  3. 브라우저 개발자 도구로 http 리소스 찾기
  4. http 주소가 흔히 남아 있는 곳
  5. 데이터베이스 검색·치환은 이렇게 안전하게
  6. http에서 https로 리디렉션되는지 확인하기
  7. 급할 때 쓰는 임시 방법과 마무리 점검

SSL 인증서를 설치하고 https 주소로 접속했는데도 주소창에 자물쇠가 안 뜨거나 '안전하지 않음'이 보인다면, 대부분 페이지 안에 http로 불러오는 이미지·스크립트가 남아 있는 혼합 콘텐츠(mixed content) 문제입니다. 이 글은 증상 구분, 워드프레스 주소 설정, 개발자 도구로 원인 찾기, 데이터베이스 검색·치환, 리디렉션 확인 순서로 하나씩 해결합니다.

먼저 증상을 구분하세요: 인증서 문제인지, 혼합 콘텐츠인지

https로 접속했을 때 페이지 대신 브라우저 전체 화면 경고가 뜬다면 인증서 자체의 문제입니다. 인증서가 없거나, 다른 도메인용이거나, 만료된 경우입니다. 이때는 워드프레스 설정보다 호스팅 관리 화면에서 인증서 발급·적용 상태를 먼저 확인해야 합니다.

페이지는 정상으로 열리는데 자물쇠가 없거나 '안전하지 않음' 표시만 보인다면 혼합 콘텐츠일 가능성이 높습니다. 혼합 콘텐츠는 HTML 문서는 https로 받았지만 이미지, 동영상, 스타일시트, 스크립트 같은 리소스 일부를 http로 불러오는 상태를 말합니다.

혼합 콘텐츠는 겉모양만의 문제가 아닙니다. http로 오가는 리소스는 중간에서 엿보거나 바꿔치기할 수 있습니다. 특히 스크립트처럼 페이지 전체를 바꿀 수 있는 리소스는 위험이 커서, 요즘 브라우저는 이런 요청을 기본으로 차단합니다. 그래서 광고 코드나 버튼 기능이 조용히 작동하지 않는 일도 생깁니다.

  • 전체 화면 경고 → 인증서 문제(호스팅에서 인증서 상태 확인)
  • 페이지는 열리지만 자물쇠 없음·'안전하지 않음' → 혼합 콘텐츠 의심
  • 일부 이미지만 깨지거나 스크립트 기능이 멈춤 → http 리소스가 차단되었을 가능성

워드프레스 주소와 사이트 주소를 https로 바꾸기

관리자 화면의 설정 > 일반에는 '워드프레스 주소(URL)'와 '사이트 주소(URL)' 두 칸이 있습니다. 워드프레스 주소는 코어 파일이 있는 위치이고, 사이트 주소는 방문자가 브라우저에 입력하는 주소입니다. 두 칸 모두 https:// 로 시작하고 끝에 슬래시(/)가 없어야 합니다.

워드프레스 5.7부터는 도구 > 사이트 건강 화면의 HTTPS 상태 항목에 'HTTPS를 사용하려면 사이트를 업데이트 하세요' 버튼이 나올 수 있습니다. 이 버튼은 서버에 유효한 인증서가 있다고 워드프레스가 확인했을 때만 보이고, 누르면 두 주소를 한 번에 https로 바꿉니다. 이 경우 본문·요약·위젯 텍스트·추가 CSS 안에 남은 내 사이트의 http 주소를 화면에 출력할 때 https로 바꿔 주는 기능도 함께 켜집니다.

두 칸이 회색으로 잠겨 있다면 wp-config.php 에 WP_HOME, WP_SITEURL 상수가 적혀 있는 것입니다. 이때는 관리자 화면이 아니라 wp-config.php 의 값을 https로 고쳐야 합니다.

wp-config.php 에 주소가 고정된 경우 (example.com 은 내 도메인으로)
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );

브라우저 개발자 도구로 http 리소스 찾기

주소 설정을 바꿨는데도 자물쇠가 안 뜬다면, 어떤 파일이 http로 불려 오는지 직접 찾아야 합니다. 가장 확실한 방법은 문제가 되는 페이지를 연 상태에서 브라우저 개발자 도구의 콘솔을 보는 것입니다.

콘솔에는 두 종류의 메시지가 보입니다. 이미지·동영상·오디오처럼 브라우저가 https로 자동 전환해 불러온 경우에는 '업그레이드했다'는 경고가, 스크립트·스타일시트·iframe 처럼 차단된 경우에는 '차단했다'는 오류가 뜹니다. 크롬 계열 브라우저는 개발자 도구의 Issues(문제) 탭에도 자세한 내용을 정리해 보여 줍니다.

콘솔 기록은 다른 페이지로 이동하면 지워지고, 지금 보고 있는 페이지의 문제만 보여 줍니다. 그래서 홈, 글 페이지, 카테고리 페이지, 고정 페이지처럼 생김새가 다른 페이지를 하나씩 열어 확인해야 합니다.

  1. 문제가 되는 페이지를 https 주소로 엽니다.
  2. F12(맥은 Cmd+Option+I)를 눌러 개발자 도구를 열고 Console(콘솔) 탭을 선택합니다.
  3. 페이지를 새로고침한 뒤 'Mixed Content' 로 시작하는 메시지를 찾습니다.
  4. 메시지에 적힌 http:// 주소와 그 주소가 나온 페이지를 함께 목록으로 적어 둡니다.
  5. 적어 둔 주소의 http:// 를 https:// 로 바꿔 새 탭에서 열어 보고, 파일이 정상으로 열리는지 확인합니다.

http 주소가 흔히 남아 있는 곳

콘솔에서 찾은 주소가 어디에서 들어왔는지 알아야 고칠 수 있습니다. 워드프레스 사이트에서는 아래 위치에 http 주소가 자주 남아 있습니다.

사이트 건강의 버튼으로 전환했다면 본문 안의 내 도메인 http 주소는 출력할 때 자동으로 바뀝니다. 하지만 이 기능은 내 사이트 주소만 대상으로 하고, 테마 설정값이나 테마 파일에 직접 적힌 주소, 외부 사이트의 http 주소까지 고쳐 주지는 않습니다.

  • 글·페이지 본문에 전체 주소(http://내도메인/wp-content/uploads/...)로 들어간 이미지
  • 테마 사용자 정의(외모 > 사용자 정의)에 넣은 로고·배경 이미지 주소
  • 위젯이나 사용자 정의 HTML 블록에 붙여 넣은 배너·카운터·외부 스크립트 코드
  • 헤더·푸터 삽입 플러그인이나 테마 옵션에 넣은 분석·광고 스크립트
  • 추가 CSS의 background-image, @font-face 에 적힌 http 주소
  • 테마·자식 테마 파일(header.php 등)에 직접 적어 둔 http 주소

데이터베이스 검색·치환은 이렇게 안전하게

글이 많으면 본문의 http 주소를 하나씩 고치기 어렵습니다. 이때 데이터베이스 전체에서 http://내도메인 을 https://내도메인 으로 바꾸는 검색·치환을 씁니다. 다만 phpMyAdmin 에서 SQL로 일괄 치환하는 방식은 피하세요.

워드프레스 공식 문서는 일부 테마와 위젯이 주소의 글자 수까지 함께 저장(직렬화)하기 때문에, 단순 치환을 하면 글자 수가 어긋나 설정이 깨질 수 있다고 안내합니다. 직렬화 데이터를 처리하는 도구로는 Better Search Replace 같은 플러그인이나 WP-CLI 의 search-replace 명령을 안내하고 있습니다.

또 하나 중요한 점은 wp_posts 표의 guid 칸은 바꾸지 않는 것입니다. guid 는 글마다 한 번 정해지면 바뀌지 않아야 하는 식별자로, 주로 RSS 피드에서 쓰입니다. 이 값을 바꾸면 피드 구독기가 예전 글을 새 글로 다시 보여 줄 수 있습니다.

  1. 데이터베이스와 파일을 백업하고, 백업 파일을 서버 밖에 한 부 저장합니다.
  2. 검색어는 'http://' 만 쓰지 말고 'http://example.com' 처럼 내 도메인 전체를 적습니다. 외부 사이트 링크까지 바뀌는 것을 막기 위해서입니다.
  3. 먼저 dry-run(미리보기)으로 몇 건이 바뀌는지 확인합니다.
  4. guid 칸을 제외하고 실제 치환을 실행합니다.
  5. 캐시 플러그인·서버 캐시를 비운 뒤 페이지를 다시 열어 콘솔을 확인합니다.
WP-CLI 예시 (example.com 은 내 도메인으로)
# 1) 미리보기: 저장하지 않고 바뀔 개수만 확인
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run

# 2) 실제 치환
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid

http에서 https로 리디렉션되는지 확인하기

혼합 콘텐츠를 다 고쳐도, http 주소로 들어온 방문자와 검색엔진을 https로 보내지 않으면 같은 글이 두 주소로 열립니다. 주소창에 http://내도메인 을 직접 입력했을 때 https 주소로 넘어가는지 확인하세요.

구글 검색 센터는 HTTP에서 HTTPS로 옮기는 것도 사이트 이전으로 보고, 가능하면 서버 쪽 영구 리디렉션(301 또는 308)을 쓰고 리디렉션을 여러 번 거치지 않게 하라고 권합니다. 예를 들어 http://example.com → http://www.example.com → https://www.example.com 처럼 두세 번 넘어가지 말고, 처음부터 최종 주소로 한 번에 보내는 것이 좋습니다.

리디렉션 설정은 호스팅 관리 화면의 'HTTPS 강제' 같은 옵션이나 서버 설정에서 하는 경우가 많습니다. 메뉴 이름은 호스팅마다 다르니 사용하는 호스팅의 공식 안내에서 확인하세요.

  • http://example.com 과 http://www.example.com 을 각각 입력해 최종 주소가 하나로 모이는지 확인
  • 글 주소 하나를 http 로 바꿔 입력해 같은 글의 https 주소로 가는지 확인
  • 페이지가 계속 새로고침되며 열리지 않으면 리디렉션 반복(무한 루프) 의심
  • 구글 서치 콘솔을 URL 접두어 방식으로 등록했다면 https 주소 속성을 따로 추가하고 사이트맵 제출

급할 때 쓰는 임시 방법과 마무리 점검

당장 원인을 다 고칠 시간이 없다면 CSP의 upgrade-insecure-requests 지시어로 브라우저가 http 요청을 https로 바꿔 요청하게 할 수 있습니다. 다만 해당 파일이 https로 제공되지 않으면 그 파일은 그냥 불러오지 못합니다. 원인을 없애는 방법이 아니므로 위의 수정 작업은 그대로 진행하세요.

모든 작업을 마쳤다면 캐시를 비우고, 생김새가 다른 페이지를 골고루 열어 자물쇠와 콘솔을 다시 확인합니다. 새 글을 쓸 때 외부 코드를 붙여 넣는다면 주소가 https 인지 먼저 보는 습관을 들이면 같은 문제가 다시 생기지 않습니다.

HTML head 에 넣는 임시 설정
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
  • 설정 > 일반의 두 주소가 모두 https:// 로 시작하는지
  • 홈·글·카테고리·고정 페이지에서 콘솔에 Mixed Content 메시지가 없는지
  • http 주소 입력 시 https 최종 주소로 한 번에 넘어가는지
  • 광고·분석 스크립트가 정상으로 불러와지는지
  • 도구 > 사이트 건강의 HTTPS 상태 항목에 문제가 남아 있지 않은지
이 글은 일반적인 사이트 운영 정보를 제공합니다. 검색엔진·광고 플랫폼의 정책과 화면은 바뀔 수 있으므로 중요한 설정은 공식 안내와 현재 계정 화면에서 다시 확인하세요. 특정 승인이나 수익을 보장하지 않습니다.