
저도 처음 워드프레스 사이트에 SSL을 적용하고 나서 오히려 “연결이 안전하지 않습니다” 경고가 뜨는 바람에 당황했던 기억이 있어요. 인증서는 분명히 설치했는데 왜 오류가 뜨는지 몰라서 한참을 헤맸는데, 알고 보니 혼합 콘텐츠(Mixed Content) 문제 하나였어요. 이 글에서는 SSL 인증서 오류의 종류별 원인과 해결 방법을 완벽하게 정리해 드릴게요.
1. SSL 인증서 오류란? 주요 원인 한눈에 보기
SSL(Secure Sockets Layer) 인증서는 웹사이트와 사용자 사이의 데이터를 암호화해 안전하게 전송하는 보안 인증서입니다. HTTPS 주소 앞의 자물쇠 아이콘이 SSL 인증서가 정상적으로 작동하고 있다는 신호입니다.
SSL 오류가 발생하는 주요 원인은 크게 다섯 가지입니다.
- 인증서 만료 — 유효기간이 지난 인증서 사용
- 도메인 불일치 — 인증서에 등록된 도메인과 실제 접속 도메인이 다름
- 혼합 콘텐츠 — HTTPS 페이지 안에 HTTP 리소스가 포함됨
- 자체 서명 인증서 — 공인 인증 기관(CA)이 아닌 직접 서명한 인증서 사용
- 인증 체인 오류 — 중간 인증서(Intermediate Certificate)가 누락됨
2. 오류 유형별 원인과 해결 방법
| 오류 코드/메시지 | 원인 | 해결 방법 |
|---|---|---|
| ERR_CERT_DATE_INVALID | 인증서 유효기간 만료 | 인증서 갱신 또는 재발급 |
| ERR_CERT_COMMON_NAME_INVALID | 도메인 이름 불일치 | 올바른 도메인으로 인증서 재발급 |
| ERR_CERT_AUTHORITY_INVALID | 신뢰할 수 없는 인증 기관 | 공인 CA 인증서로 교체 (Let’s Encrypt 등) |
| ERR_SSL_PROTOCOL_ERROR | SSL 프로토콜 버전 불일치 | 서버의 TLS 버전 업그레이드 (TLS 1.2 이상) |
| NET::ERR_CERT_REVOKED | 인증서가 폐기됨 | 새 인증서 재발급 |
| Mixed Content 경고 | HTTPS 페이지 내 HTTP 리소스 포함 | 모든 리소스 URL을 HTTPS로 변경 |
| SEC_ERROR_EXPIRED_CERTIFICATE | 인증서 만료 (파이어폭스) | 인증서 갱신 |
| ERR_CERT_INVALID | 인증서 형식 오류 | 인증서 재설치 |
3. 혼합 콘텐츠(Mixed Content) 오류 해결
혼합 콘텐츠 오류는 HTTPS 사이트에서 가장 흔하게 발생하는 문제입니다. HTTPS 페이지 안에 HTTP로 불러오는 이미지, 스크립트, CSS 등이 하나라도 있으면 브라우저가 보안 경고를 표시합니다.
혼합 콘텐츠 확인 방법:
- 크롬 브라우저에서 해당 페이지 접속
- F12 눌러 개발자 도구 열기
- Console 탭 클릭
- “Mixed Content” 경고 메시지 확인
- 경고 메시지에서 HTTP로 불러오는 리소스 URL 확인
워드프레스에서 혼합 콘텐츠 해결 방법:
방법 1 — Really Simple SSL 플러그인 사용 (가장 간편):
- 워드프레스 관리자 > 플러그인 > 새 플러그인 추가
- Really Simple SSL 검색 후 설치 및 활성화
- SSL 활성화 버튼 클릭
- 플러그인이 자동으로 HTTP 리소스를 HTTPS로 변환
방법 2 — wp-config.php 수정:
wp-config.php 파일에 아래 코드 추가:
php
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
$_SERVER['HTTPS'] = 'on';
}
방법 3 — .htaccess에 리다이렉트 추가:
apache
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
4. 인증서 만료 오류 해결
Let’s Encrypt 인증서 갱신 방법 (서버 직접 관리 시):
bash
sudo certbot renew
sudo systemctl reload nginx # 또는 apache2
자동 갱신 설정 (크론탭):
bash
0 0 1 * * certbot renew --quiet && systemctl reload nginx
cPanel에서 인증서 갱신:
- cPanel 로그인 > SSL/TLS 클릭
- 인증서 관리 클릭
- 만료된 인증서 확인 후 갱신 클릭
💡 팁: Let’s Encrypt 인증서는 90일 유효기간입니다. 만료 30일 전부터 갱신 알림 이메일이 발송되므로 알림 이메일을 놓치지 마세요. 자동 갱신 크론탭을 설정해두면 만료 걱정 없이 운영할 수 있습니다.
5. 인증서 이름 불일치 오류 해결
ERR_CERT_COMMON_NAME_INVALID 오류는 인증서에 등록된 도메인과 실제 접속하는 도메인이 다를 때 발생합니다.
자주 발생하는 패턴:
- www 유무 불일치 — 인증서는 example.com에만 발급됐는데 www.example.com으로 접속
- 서브도메인 미포함 — 와일드카드 인증서(*.example.com)가 아닌 경우 서브도메인 별도 발급 필요
- IP 주소로 접속 — 도메인용 인증서인데 IP 주소로 직접 접속
해결 방법:
- www와 non-www 모두 포함하는 인증서로 재발급
- Let’s Encrypt 발급 시 -d example.com -d www.example.com 형태로 멀티 도메인 지정
bash
sudo certbot --nginx -d example.com -d www.example.com
6. 브라우저별 SSL 오류 해결 방법
크롬(Chrome):
- 주소창에 chrome://settings/clearBrowserData 입력
- 쿠키 및 기타 사이트 데이터, 캐시된 이미지 및 파일 체크
- 데이터 삭제 클릭 후 재접속
엣지(Edge):
- Ctrl+Shift+Delete > 캐시 및 쿠키 삭제
- 재접속 시도
내 PC 시간이 잘못됐을 때 (ERR_CERT_DATE_INVALID):
- 작업 표시줄 시계 우클릭 > 날짜/시간 조정
- 자동으로 시간 설정 켜기
- 지금 동기화 클릭
- 브라우저 재시작
💡 PC 시간 오류 주의: SSL 인증서 유효성은 날짜 기준으로 검증합니다. PC 시간이 잘못 설정된 경우에도 인증서 만료 오류가 발생할 수 있습니다.
7. 워드프레스 SSL 오류 해결 방법
사이트 URL이 HTTP로 남아있는 경우:
- 워드프레스 관리자 > 설정 > 일반
- 워드프레스 주소(URL) 와 사이트 주소(URL) 모두 https:// 로 변경
- 변경 사항 저장
데이터베이스에 남아있는 HTTP URL 일괄 변경:
플러그인 Better Search Replace 사용:
- 플러그인 설치 및 활성화
- 도구 > Better Search Replace 클릭
- 검색값: http://yourdomain.com
- 교체값: https://yourdomain.com
- 모든 테이블 선택 후 실행
8. SSL 인증서 상태 확인 방법
온라인 도구로 확인:
- SSL Labs (ssllabs.com/ssltest) — 가장 상세한 SSL 분석, A~F 등급 평가
- Why No Padlock (whynopadlock.com) — 혼합 콘텐츠 원인 URL 목록 확인
- SSL Checker (sslshopper.com/ssl-checker.html) — 인증서 체인 및 만료일 확인
CMD에서 확인:
openssl s_client -connect yourdomain.com:443
9. 자주 묻는 질문(FAQ)
Q. SSL 인증서는 꼭 유료로 구매해야 하나요? 아닙니다. Let’s Encrypt는 완전 무료로 공인 SSL 인증서를 발급해줍니다. 대부분의 호스팅(카페24, 가비아 등)에서도 Let’s Encrypt 자동 발급 기능을 제공합니다. 유료 인증서는 EV(Extended Validation) 인증처럼 높은 신뢰 수준이 필요한 금융·기업 사이트에 주로 사용됩니다.
Q. SSL 적용 후 SEO에도 영향이 있나요? 네, 있습니다. 구글은 HTTPS 사이트를 검색 순위 결정 요소 중 하나로 공식 발표했습니다. SSL 적용은 보안뿐만 아니라 SEO에도 유리합니다.