SSL 인증서 오류는 방문자가 사이트에 안전하게 접속하는 것을 차단합니다. 이 가이드는 모든 일반적인 오류 코드, 의미, 해결 방법을 다룹니다 — 방문자이든 웹사이트 소유자이든 상관없이.
가장 흔한 오류에 대한 전용 가이드는 다음을 참고하세요: “연결이 비공개가 아닙니다” 해결 방법 →
오류 참조 표
| 오류 코드 (Chrome) | Firefox 대응 오류 | 의미 | 해결 방법 |
|---|---|---|---|
NET::ERR_CERT_DATE_INVALID | SEC_ERROR_EXPIRED_CERTIFICATE | 인증서 만료 | 인증서 갱신 |
NET::ERR_CERT_COMMON_NAME_INVALID | SSL_ERROR_BAD_CERT_DOMAIN | 도메인이 인증서와 불일치 | 올바른 도메인으로 인증서 발급 |
NET::ERR_CERT_AUTHORITY_INVALID | SEC_ERROR_UNKNOWN_ISSUER | 자체 서명 또는 신뢰할 수 없는 CA | Let’s Encrypt 사용 |
NET::ERR_CERT_REVOKED | SEC_ERROR_REVOKED_CERTIFICATE | 인증서가 폐기됨 | 새 인증서 발급 |
NET::ERR_SSL_PROTOCOL_ERROR | SSL_ERROR_RX_RECORD_TOO_LONG | TLS 핸드셰이크 실패 | 서버 설정 확인 |
NET::ERR_SSL_VERSION_OR_CIPHER_MISMATCH | SSL_ERROR_NO_CYPHER_OVERLAP | 공통 TLS 버전/암호화 스위트 없음 | TLS 1.2 이상 활성화 |
ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN | — | HPKP 핀이 불일치 | HPKP 핀 업데이트 또는 제거 |
ERR_CERTIFICATE_TRANSPARENCY_REQUIRED | — | CT 로그 항목 누락 | CT 호환 CA에서 재발급 |
상세 오류 해결
ERR_CERT_DATE_INVALID — 인증서 만료
원인: 인증서의 Not After 날짜가 지났습니다. 90일 Let’s Encrypt 인증서의 경우, 갱신을 잊으면 발생합니다.
방문자 해결: 기기의 날짜와 시간을 확인하세요 — 시계가 잘못되어 있으면 유효한 인증서도 만료된 것으로 나타납니다.
운영자 해결:
# 실제 만료일 확인
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -enddate
즉시 갱신하고, 파일을 교체한 후 서버를 리로드합니다. 향후 이를 방지하려면 모니터링을 설정하세요.
ERR_CERT_COMMON_NAME_INVALID — 도메인 불일치
원인: 인증서가 example.com에 대해 발급되었지만 www.example.com(또는 그 반대)에 접속 중이거나, 인증서가 완전히 다른 도메인을 포함하고 있습니다.
운영자 해결:
# 인증서가 포함하는 도메인 확인
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -ext subjectAltName
필요한 모든 도메인을 포함하는 새 인증서를 발급받으세요. GetHTTPS에서 example.com과 www.example.com을 모두 추가합니다.
ERR_CERT_AUTHORITY_INVALID — 신뢰할 수 없는 CA
원인: 인증서가 자체 서명이거나, 알 수 없는 CA가 발급했거나, 중간 인증서 체인이 불완전합니다.
운영자 해결:
- 자체 서명인 경우 → Let’s Encrypt 인증서로 교체
- 체인이 불완전한 경우 →
fullchain.pem사용(Nginx) 또는SSLCertificateChainFile추가(Apache) - 알 수 없는 CA인 경우 → 신뢰할 수 있는 CA로 전환
ERR_SSL_PROTOCOL_ERROR — 핸드셰이크 실패
원인: 서버의 TLS 설정이 잘못되어 있습니다 — 잘못된 인증서 경로, 손상된 파일 또는 잘못된 설정.
운영자 해결:
# TLS 연결 테스트
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
# 인증서와 키가 일치하는지 확인
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in privkey.pem | openssl md5
# 해시가 일치해야 함
일반적인 원인: 서버 설정의 잘못된 파일 경로, 서로 다른 세션에서 나온 인증서와 키, 너무 제한적인 파일 권한.
ERR_SSL_VERSION_OR_CIPHER_MISMATCH — 호환 TLS 없음
원인: 서버가 브라우저가 중단한 이전 TLS 버전(1.0/1.1)만 지원하거나, 브라우저가 지원하지 않는 암호화 스위트를 사용합니다.
운영자 해결:
# Nginx — 최신 TLS 활성화
ssl_protocols TLSv1.2 TLSv1.3;
# Apache
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
혼합 콘텐츠 경고
원인: HTTPS 페이지가 이미지, 스크립트 또는 CSS를 HTTP를 통해 로드합니다.
인증서 오류가 아닙니다 — 인증서는 정상이지만 페이지가 안전하지 않은 리소스를 참조합니다. 전체 혼합 콘텐츠 해결 가이드 →
진단 워크플로우
SSL 오류가 발생하면 다음 순서를 따르세요:
1. 오류 코드 확인 → 카테고리 파악
↓
2. 인증서 세부 정보 확인
openssl s_client -connect domain:443 -servername domain
↓
3. 만료됨? → 갱신
도메인 불일치? → 올바른 도메인으로 재발급
체인 불완전? → fullchain.pem 사용
자체 서명? → Let's Encrypt로 전환
설정 오류? → 파일 경로와 권한 확인
↓
4. 수정 후 → 서버 리로드, 브라우저 캐시 삭제, 확인
온라인 진단 도구
| 도구 | URL | 검사 내용 |
|---|---|---|
| SSL Labs | ssllabs.com/ssltest | 전체 SSL 감사 (등급 A-F) |
| SSL Checker | sslshopper.com/ssl-checker | 체인, 만료, 도메인 일치 |
| Certificate Search | crt.sh | Certificate Transparency 로그 |
| Why No Padlock | whynopadlock.com | 혼합 콘텐츠 감지 |
자주 묻는 질문
오류를 수정했는데 브라우저에 여전히 표시됩니다
브라우저 캐시를 삭제(Ctrl+Shift+Delete)하거나 시크릿 창에서 테스트하세요. 브라우저는 SSL 상태를 캐시하며, HSTS가 캐시된 결정을 강제할 수 있습니다. Windows에서는 SSL 상태도 삭제하세요: 인터넷 옵션 → 콘텐츠 → SSL 상태 지우기.
일부 브라우저에서만 오류가 나타납니다
브라우저마다 신뢰 저장소와 캐싱이 다릅니다. 가장 흔한 경우: 일부 브라우저는 캐시에서 채울 수 있지만 다른 브라우저는 채울 수 없는 불완전한 인증서 체인. 서버에서 전체 체인을 제공하여 해결합니다.
SSL 오류를 예방하려면?
- 인증서 만료 모니터링 — 90일 중 60일째에 알림 설정
cert.pem대신fullchain.pem사용 — 체인 오류 방지- 인증서에 모든 도메인 변형(www + non-www) 포함
- 프로덕션 서버에 Certbot으로 자동 갱신 설정
- 변경할 때마다 SSL Labs로 테스트