본문 바로가기
IT

NET::ERR_CERT 인증서 오류 — 연결이 비공개로 설정되어 있지 않음 원인·해결·예방

by 샤나엘 2026. 6. 24.
반응형

NET::ERR_CERT 인증서 오류 — 연결이 비공개로 설정되어 있지 않음 원인·해결·예방

크롬에서 HTTPS 사이트에 들어갔는데 빨간 경고와 함께 "연결이 비공개로 설정되어 있지 않습니다 / Your connection is not private"가 뜨고, 아래에 NET::ERR_CERT_로 시작하는 코드가 보인다면, 보안 연결의 협상까지는 됐지만 그 사이트가 내민 인증서(SSL/TLS 인증서)가 검증을 통과하지 못한 것이다. 앞 글의 ERR_SSL_PROTOCOL_ERROR가 "악수 방식이 안 맞음"이었다면, 이번에는 "악수는 했는데 신분증이 이상함"이다.

 

인증서 오류는 한 가지가 아니라 코드별로 원인이 갈린다. 만료됐거나(DATE_INVALID), 도메인이 다르거나(COMMON_NAME_INVALID), 믿을 수 없는 기관이 발급했거나(AUTHORITY_INVALID) 등이다. 그리고 이건 단순 오류가 아니라 보안 경고라, "계속" 버튼을 함부로 누르면 안 된다. 이 글은 의미, 코드별 원인, 진단, 단계별 해결, 그리고 다른 보안 오류와의 차이까지 정리한다.

NET::ERR_CERT 인증서 오류

 

이 글의 구성

 

🔎인증서 오류의 의미와 코드 종류
🧩자주 나오는 발생 원인 5가지
💻재현 시나리오와 인증서 진단
🛠해결 방법과 단계별 진단
⚖️SSL·연결 오류와의 차이와 보안
💬자주 묻는 질문 5가지

🔎 인증서 오류의 의미와 코드 종류

이 오류도 HTTP 상태 코드가 아니라 크롬(크로미엄 계열)이 보여주는 보안 경고 화면이다. TLS 핸드셰이크 과정에서 서버가 보낸 인증서를 브라우저가 검증하는데, 유효 기간·도메인·발급 기관 같은 항목 중 하나라도 통과하지 못하면 연결을 막고 경고를 띄운다. 정확한 원인은 화면 하단의 NET::ERR_CERT_ 코드에 적혀 있다.

코드
ERR_CERT_DATE_INVALID 인증서 만료·유효 기간 밖 (또는 내 시계 오류)
ERR_CERT_COMMON_NAME_INVALID 인증서의 도메인이 접속한 주소와 불일치
ERR_CERT_AUTHORITY_INVALID 신뢰할 수 없는 기관 발급·체인 누락·자체 서명
ERR_CERT_REVOKED 등 인증서 폐기·약한 서명 알고리즘 등 기타

핵심 구분은 SSL 협상 오류와의 차이다. ERR_SSL_PROTOCOL_ERROR가 "암호화 방식 합의 실패(악수가 안 됨)"라면, ERR_CERT_는 "악수는 됐는데 상대가 내민 신분증이 만료됐거나 가짜이거나 다른 사람 것"인 경우다. 그래서 ERR_CERT_는 본질적으로 보안 경고다.

핵심 관찰 — 이건 오류가 아니라 경고다

ERR_CERT_는 브라우저가 "이 사이트가 진짜 그 사이트인지 보장할 수 없다"고 경고하는 것이다. 그래서 "고급 → 계속 진행"을 습관적으로 누르면 위험하다. 중간자 공격(MITM)일 수도 있기 때문이다. 먼저 코드를 읽고 원인을 파악하는 것이 순서다.


🧩 자주 나오는 발생 원인 5가지

원인 1 — 인증서 만료 (DATE_INVALID)

가장 흔하다. 사이트 소유자가 인증서를 제때 갱신하지 않아 유효 기간이 지나면 모든 방문자가 경고를 본다. 인증서는 보통 짧은 주기로 만료되므로 자동 갱신을 걸어두지 않으면 자주 발생한다.

원인 2 — 내 시스템 시계 오류 (DATE_INVALID)

사이트는 멀쩡한데 내 기기 날짜·시간이 크게 어긋나 있으면, 정상 인증서도 유효 기간 밖으로 보여 DATE_INVALID가 난다. 다른 사이트들에서도 같은 날짜 오류가 보인다면 시계부터 의심한다.

원인 3 — 도메인 불일치 (COMMON_NAME_INVALID)

인증서에 적힌 도메인과 실제 접속 주소가 다를 때다. 인증서가 다른 도메인용이거나, www가 붙고 안 붙고가 다르거나, 도메인 대신 IP로 접속하거나, 인증서의 SAN(대상 도메인 목록)에 그 주소가 빠진 경우다.

원인 4 — 미신뢰 발급기관·체인 누락 (AUTHORITY_INVALID)

자체 서명(self-signed) 인증서이거나, 브라우저가 신뢰하지 않는 기관이 발급했거나, 중간(체인) 인증서가 빠져 신뢰 경로를 완성하지 못하면 발생한다. 로컬 개발용 자체 서명 인증서에서 자주 본다.

원인 5 — 백신·회사 프록시의 HTTPS 가로채기

백신·회사 보안 장비가 HTTPS를 검사하려고 자체 인증서로 트래픽을 가로채는데, 그 기관 인증서가 기기에 신뢰 등록되어 있지 않으면 AUTHORITY_INVALID가 난다. 회사·학교 PC에서 자주 나타난다.


💻 재현 시나리오와 인증서 진단

가장 먼저 화면에서 NET::ERR_CERT_ 코드를 확인한다. 이 코드가 원인을 거의 다 알려준다.

# 경고 화면 하단에 표시되는 코드 예
NET::ERR_CERT_DATE_INVALID       # 만료 또는 시계 오류
NET::ERR_CERT_AUTHORITY_INVALID  # 미신뢰 발급기관·체인 누락
NET::ERR_CERT_COMMON_NAME_INVALID # 도메인 불일치

서버 인증서의 만료일·도메인·체인은 openssl로 직접 확인한다. 만료일과 발급 도메인을 한 번에 볼 수 있다.

# 인증서 만료일 확인
openssl s_client -connect example.com:443 -servername example.com | openssl x509 -noout -dates

# 발급 도메인(주체)·SAN 확인
openssl s_client -connect example.com:443 | openssl x509 -noout -subject -ext subjectAltName

체인 누락 여부와 종합 상태는 SSL Labs로 점검하고, 사용자는 시계를 먼저 맞춰 본다.

# ✓ 서버 인증서 종합 점검 (브라우저 접속)
https://www.ssllabs.com/ssltest/

# 사용자: DATE_INVALID면 시스템 날짜·시간 자동 동기화부터
# 확인 포인트 : 만료일, 중간 인증서 체인 완성, SAN에 도메인 포함

🛠 해결 방법과 단계별 진단

해결은 코드와 입장에 따라 갈린다. 가장 중요한 원칙은 "이유를 모른 채 계속 진행을 누르지 않는 것"이다.

상황 해결 방법
DATE_INVALID(사용자) 시스템 날짜·시간 자동 동기화, 브라우저·OS 업데이트
DATE_INVALID(소유자) 인증서 갱신, 자동 갱신(ACME·Let's Encrypt 등) 설정
COMMON_NAME 접속 도메인에 맞는 인증서 발급(SAN·와일드카드), 올바른 주소로 접속
AUTHORITY_INVALID 신뢰 CA 인증서 사용, 중간 인증서(풀체인) 설치
백신·회사망 HTTPS 검사 일시 해제, 회사 루트 인증서 신뢰 등록(관리자)

단계별 진단 절차

01화면 하단의 NET::ERR_CERT_ 코드를 먼저 읽는다. 코드가 원인의 절반을 알려준다.
02DATE_INVALID면 다른 사이트도 그런지 보고, 내 시스템 시계부터 정확히 맞춘다.
03회사·학교 PC라면 보안 장비의 HTTPS 가로채기·루트 인증서 미설치를 의심한다.
04내 사이트라면 openssl·SSL Labs로 만료일·도메인(SAN)·중간 체인을 점검한다.
05원인을 모른 채 "계속 진행"을 누르지 않는다. 신뢰하는 자신의 개발 서버일 때만 예외다.

⚖️ SSL·연결 오류와의 차이와 보안

HTTPS 관련 오류는 실패한 단계로 구분하면 명확하다. 특히 협상 오류와 인증서 오류를 나눠 보는 게 중요하다.

오류 단계 의미
ERR_CERT_* 인증서 검증 신분증(인증서) 만료·도메인·발급기관 문제
ERR_SSL_PROTOCOL_ERROR TLS 협상 버전·암호 방식 합의 실패
CONNECTION_REFUSED/TIMED_OUT TCP 연결 연결 거부·무응답 시간 초과
NXDOMAIN DNS 도메인을 IP로 못 바꿈

보안 관점이 특히 중요하다. ERR_CERT_ 경고는 "이 사이트가 진짜 그 사이트인지 보증할 수 없다"는 뜻이라, 공용 와이파이나 회사망에서 이걸 무시하고 진행하면 누군가 트래픽을 가로채는 중일 수도 있다. 은행·로그인 같은 민감한 사이트에서 이 경고가 뜨면 절대 그냥 진행하지 말고, 네트워크를 바꾸거나 사이트가 정상화될 때까지 접속을 미뤄야 한다. 예외는 신뢰하는 자신의 자체 서명 개발 서버처럼 원인을 분명히 아는 경우뿐이다.

인증서 경고의 "계속 진행"은 편의 버튼이 아니라 위험 버튼이다. 코드를 읽기 전에는 누르지 마라.

 

— CERT는 인증서, SSL은 협상


💬 자주 묻는 질문 5가지

Q1"계속 진행"을 눌러도 되나요?

권장하지 않습니다. 인증서 경고는 보안 경고라, 무시하고 진행하면 가짜 사이트나 중간자 공격에 노출될 수 있습니다. 특히 은행·로그인 사이트에서는 절대 진행하지 마세요. 원인을 분명히 아는 자신의 개발 서버 정도일 때만 예외입니다.

Q2여러 사이트에서 다 인증서 오류가 떠요.

대부분 내 시스템 날짜·시간이 틀렸거나, 백신·회사 보안 장비의 HTTPS 검사 때문입니다. DATE_INVALID 코드가 보이면 시계를 자동 동기화로 맞추세요. 회사·학교 PC라면 보안 장비의 루트 인증서 설정 문제일 수 있어 관리자 문의가 필요합니다.

Q3SSL 에러랑 인증서 에러는 뭐가 다른가요?

ERR_SSL_PROTOCOL_ERROR는 암호화 방식(프로토콜)을 합의하지 못한 협상 실패이고, NET::ERR_CERT_는 협상은 됐으나 인증서가 만료·도메인 불일치·미신뢰 발급 등으로 검증을 통과하지 못한 경우입니다. 코드 앞부분이 SSL이면 협상, CERT면 인증서입니다.

Q4내 사이트가 갑자기 인증서 오류가 나요.

인증서 만료가 가장 흔합니다. 코드가 DATE_INVALID면 갱신이 필요하며, 자동 갱신(ACME·Let's Encrypt 등)을 걸어두면 재발을 막습니다. AUTHORITY_INVALID면 중간 인증서(풀체인) 설치를, COMMON_NAME이면 접속 도메인을 포함한 인증서(SAN·와일드카드)인지 확인하세요.

Q5로컬 개발용 자체 서명 인증서는 왜 경고가 뜨나요?

자체 서명 인증서는 공인된 기관이 발급한 게 아니라 브라우저가 신뢰하지 않아 AUTHORITY_INVALID가 납니다. 개발 환경에서는 정상적인 일이며, 로컬 신뢰 저장소에 그 인증서를 등록하거나 mkcert 같은 도구로 로컬 신뢰 인증서를 만들면 경고 없이 쓸 수 있습니다.


📌 결론

NET::ERR_CERT_ 오류는 "HTTPS 협상은 됐는데 인증서가 검증을 통과하지 못했다"는 보안 경고다. SSL 협상 오류가 악수 방식의 문제였다면, 이건 상대가 내민 신분증의 문제다. 그래서 가장 먼저 할 일은 코드를 읽고, 함부로 진행하지 않는 것이다.

실무 원칙은 다음과 같다.

 

📅 코드부터 읽는다. DATE_INVALID는 만료·시계, COMMON_NAME은 도메인, AUTHORITY는 발급기관·체인 문제다.

🔏 보안 경고이므로 함부로 "계속 진행"을 누르지 않는다. 민감한 사이트에서는 특히 금물이다.

🌐 내 사이트라면 인증서 자동 갱신·풀체인 설치·도메인 일치를 갖춰 재발을 막는다.

인증서 오류 트러블슈팅 체크리스트

 

01화면 하단 NET::ERR_CERT_ 코드 확인으로 원인 좁히기.
02DATE_INVALID·여러 사이트 공통이면 시스템 시계 자동 동기화.
03회사·학교 PC면 보안 장비 HTTPS 가로채기·루트 인증서 점검.
04내 사이트는 openssl·SSL Labs로 만료일·SAN·중간 체인 점검.
05소유자: 인증서 자동 갱신(ACME) 설정으로 만료 재발 방지.
06AUTHORITY는 풀체인 설치, COMMON_NAME은 도메인 일치 인증서.
07원인 모를 땐 "계속 진행" 금지 — 민감 사이트는 특히 주의.

본 글은 NET::ERR_CERT 계열 인증서 오류의 일반적 원인과 해결 방법을 정리한 자료다. 인증서·보안 설정 변경은 영향 범위를 확인한 뒤 신중히 적용한다.

 

#NET_ERR_CERT #인증서오류 #ERR_CERT_DATE_INVALID #ERR_CERT_AUTHORITY_INVALID #연결이비공개로설정되어있지않음 #SSL인증서 #인증서만료 #자체서명인증서 #중간인증서 #도메인불일치 #크롬에러 #HTTPS #LetsEncrypt #웹브라우저 #트러블슈팅

반응형

댓글