“연결이 비공개로 설정되지 않았습니다”는 가장 흔한 SSL 오류입니다. 브라우저가 웹사이트의 SSL 인증서에 문제를 발견하고 안전한 연결을 거부했음을 의미합니다. Chrome에서는 NET::ERR_CERT_*로, Firefox에서는 “경고: 잠재적 보안 위험”으로, Safari에서는 “이 연결은 비공개가 아닙니다”로 표시됩니다.
이 가이드에서는 양쪽 모두에 대한 해결 방법을 다룹니다: 방문자로서 오류를 보는 경우와 방문자에게 오류가 표시되는 웹사이트 소유자인 경우.
방문자인 경우 (빠른 해결)
다음은 클라이언트 측 원인 — 웹사이트가 아닌 기기의 문제를 해결하는 단계입니다.
1. 페이지 새로고침
TLS 핸드셰이크 중 네트워크 오류로 인해 일시적으로 발생하는 경우가 있습니다. F5 또는 Ctrl+R을 누르세요.
2. 기기의 날짜와 시간 확인
SSL 인증서에는 유효 기간이 있습니다. 컴퓨터 시계가 잘못되면 브라우저가 인증서를 만료되었거나 아직 유효하지 않다고 판단합니다. 해결 방법:
- Windows: 설정 → 시간 및 언어 → 자동으로 시간 설정
- macOS: 시스템 설정 → 일반 → 날짜 및 시간 → 자동으로 설정
- Linux:
sudo timedatectl set-ntp true
3. 시크릿/비공개 모드 시도
시크릿 모드에서는 작동하고 일반 모드에서는 안 되면, 브라우저 확장 프로그램이 방해하는 것입니다 — HTTPS 트래픽을 검사하는 바이러스 백신, VPN 또는 광고 차단기일 가능성이 높습니다. 확장 프로그램을 하나씩 비활성화하여 원인을 찾으세요.
4. 브라우저 캐시 및 SSL 상태 초기화
브라우저가 이전 인증서를 캐시한 경우:
- Chrome: 설정 → 개인정보 보호 → 인터넷 사용 기록 삭제 → 캐시된 이미지 및 파일
- Windows: 인터넷 속성 → 내용 → SSL 상태 지우기
- macOS: 키체인 접근 → 도메인 검색 → 캐시된 항목 삭제
5. 네트워크 확인
기업 프록시, 호텔 Wi-Fi 캡티브 포털, 일부 VPN은 자체 인증서를 삽입합니다. 시도해 보세요:
- VPN 연결 해제 후 다시 시도
- 다른 네트워크로 전환 (예: 모바일 핫스팟)
- 호텔/공항 Wi-Fi인 경우 캡티브 포털에 연결
6. 브라우저 업데이트
이전 브라우저는 최신 인증 기관을 신뢰하지 않거나 최신 TLS를 지원하지 않을 수 있습니다. 최신 버전으로 업데이트하세요.
“계속 진행”을 클릭해도 되나요? 위험을 이해하고 사이트를 신뢰하는 경우에만 — 예를 들어, 자체 서명 인증서가 있는 개발 서버. 은행, 이메일 또는 쇼핑 사이트에서는 절대로 경고를 무시하지 마세요.
웹사이트 소유자인 경우 (서버 측 해결)
방문자에게 이 오류가 표시되는 이유는 SSL 설정에 문제가 있기 때문입니다. 각 원인을 진단하고 해결하는 방법을 알아보세요.
원인 1: 인증서 만료
가장 흔한 원인입니다. Let’s Encrypt 인증서는 90일마다 만료됩니다.
진단:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates
해결: 인증서를 갱신하세요. GetHTTPS를 사용하면 5분이면 됩니다. 파일을 교체하고 서버를 리로드하세요.
원인 2: 인증서가 도메인과 불일치
인증서가 example.com으로 발급되었지만 www.example.com으로 접근하고 있습니다(또는 그 반대).
진단:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -ext subjectAltName
해결: 기본 도메인과 www 모두를 포함하는 새 인증서를 발급받으세요. GetHTTPS에서 example.com과 www.example.com을 모두 추가하세요.
원인 3: 불완전한 인증서 체인
서버가 중간 인증서를 전송하지 않고 있습니다. 브라우저가 인증서에서 루트 CA로의 신뢰 경로를 구축할 수 없습니다.
진단:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | grep "Verify return code"
# "21 (unable to verify the first certificate)" = 체인 불완전
해결:
- Nginx:
ssl_certificate에cert.pem이 아닌fullchain.pem을 사용 - Apache:
SSLCertificateChainFile chain.pem추가
원인 4: 자체 서명 인증서
자체 서명 인증서는 브라우저에서 신뢰하지 않습니다 — 이를 보증하는 CA가 없습니다.
해결: Let’s Encrypt(무료) 또는 상용 CA의 실제 인증서로 교체하세요.
원인 5: 잘못된 인증서 제공
하나의 서버에서 여러 사이트를 호스팅하는 경우 잘못된 인증서가 제공될 수 있습니다(SNI 설정 오류).
진단:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -subject
# CN이 도메인과 일치하는지 확인
해결: 각 server 블록(Nginx) 또는 <VirtualHost>(Apache)에 해당 도메인의 올바른 ssl_certificate가 있는지 확인하세요.
원인 6: TLS 버전 너무 오래됨
서버가 브라우저에서 폐기한 이전 TLS 버전(1.0/1.1)만 지원합니다.
해결:
# Nginx
ssl_protocols TLSv1.2 TLSv1.3;
# Apache
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
원인 7: Cloudflare “Flexible” SSL 모드
Cloudflare의 “Flexible” 모드는 오리진 서버에 유효한 인증서가 없을 때 이 오류를 유발할 수 있습니다.
해결: 오리진에 인증서를 설치하고(GetHTTPS 또는 Cloudflare Origin CA) “Full (Strict)” 모드로 전환하세요.
원인 8: HSTS가 잘못된 상태를 캐시
이전에 HSTS 헤더를 전송했다가 HTTPS가 깨진 경우, 브라우저가 HTTP로의 폴백을 거부합니다.
해결: 유효한 인증서로 HTTPS를 복구하세요. 테스트 중에는 확신이 생길 때까지 짧은 HSTS max-age(예: 300초)를 사용하세요.
오류 코드 참조
| Chrome 오류 코드 | 의미 | 일반적인 해결 방법 |
|---|---|---|
NET::ERR_CERT_DATE_INVALID | 인증서 만료 또는 아직 유효하지 않음 | 인증서 갱신 또는 시스템 시계 수정 |
NET::ERR_CERT_COMMON_NAME_INVALID | 도메인이 인증서와 불일치 | 올바른 도메인으로 인증서 발급 |
NET::ERR_CERT_AUTHORITY_INVALID | 자체 서명 또는 신뢰할 수 없는 CA | Let’s Encrypt 같은 신뢰할 수 있는 CA 사용 |
NET::ERR_CERT_REVOKED | 인증서가 폐기됨 | 새 인증서 발급 |
NET::ERR_SSL_PROTOCOL_ERROR | TLS 핸드셰이크 실패 | 서버 TLS 설정 확인 |
NET::ERR_SSL_VERSION_OR_CIPHER_MISMATCH | 공통 TLS 버전/암호화 방식 없음 | 서버에서 TLS 1.2 이상 활성화 |
SSL_ERROR_HANDSHAKE_FAILURE_ALERT | (Firefox) 핸드셰이크 거부됨 | 서버 인증서 및 설정 확인 |
자주 묻는 질문
”계속 진행” / “위험 수락”을 클릭해도 안전한가요?
신뢰하는 사이트에서 위험을 이해하는 경우에만 — 예를 들어, 자체 서명 인증서가 있는 개발 서버. 은행, 전자상거래, 이메일 또는 소셜 미디어 사이트에서는 절대로 경고를 무시하지 마세요. 경고는 누군가가 트래픽을 가로채고 있을 수 있기 때문에 존재합니다.
내 사이트에서 이 오류가 보입니다. 가장 빠르게 해결하려면?
GetHTTPS에서 새 무료 인증서를 발급받고 설치한 후 웹 서버를 리로드하세요. 5분이면 됩니다. 오류가 지속되면 오류 코드를 확인하세요 — 정확히 무엇이 잘못되었는지 알려줍니다(만료, 잘못된 도메인, 누락된 체인 등).
일부 기기에서만 오류가 나타납니다
보통 신뢰 체인 문제입니다 — 서버가 중간 인증서를 전송하지 않고 있습니다. 일부 브라우저/OS는 이전 방문에서 중간 인증서를 캐시하고 있지만, 새 기기는 본 적이 없습니다. 서버에서 fullchain.pem을 사용하여 해결하세요.
인증서가 유효한데도 오류가 나타납니다
다음을 확인하세요: 도메인 불일치(www vs non-www), 불완전한 체인, HSTS가 이전 실패를 캐시, 프록시/CDN이 다른 인증서를 제공. openssl s_client를 사용하여 서버가 실제로 어떤 인증서를 제공하는지 확인하세요.