- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 크롬 등 브라우저에서 발생하는 NET::ERR_CERT_DATE_INVALID 오류를 신속하게 진단·복구하기 위한 실무 절차와 시스템 시간 자동 동기화 설정 방법을 OS별로 정리하여 현장에서 바로 적용할 수 있도록 돕는 것이다.
1. 오류 개요와 원인 매커니즘
NET::ERR_CERT_DATE_INVALID 오류는 브라우저가 수신한 서버 인증서의 유효기간 또는 클라이언트 시스템 시각과의 불일치로 TLS 핸드셰이크가 안전하지 않다고 판단할 때 발생한다. 핵심 요인은 다음과 같다.
- 인증서 만료(NotAfter 초과) 또는 아직 유효하지 않음(NotBefore 이전)이다.
- 클라이언트 시스템 시계가 크게 틀려 유효기간 검증이 실패한다.
- 중간 인증서 체인이 누락되거나 루트 신뢰 저장소가 최신이 아니다.
- 기업 프록시·보안 게이트웨이의 SSL 가로채기(중간자) 인증서가 만료되었다.
- 공용 Wi-Fi의 캡티브 포털 또는 잘못된 DNS/리다이렉트가 HTTPS 세션을 방해한다.
| 증상 | 가능 원인 | 우선 조치 |
|---|---|---|
| 특정 사이트만 오류 | 해당 도메인 인증서 만료, 중간체 누락 | 다른 네트워크·브라우저로 재시도, 인증서 체인 점검 |
| 모든 HTTPS 사이트 오류 | 클라이언트 시계 오류, 프록시 인증서 만료 | 시계 자동 동기화, 프록시 우회 또는 새 인증서 배포 |
| 회사 내에서만 발생 | SSL 가로채기 장비 인증서 문제 | 온프레미스 CA·게이트웨이 인증서 갱신 |
| 공항·카페 Wi-Fi에서 발생 | 캡티브 포털 미인증 | http://neverssl.com 같은 일반 HTTP 호출 후 포털 로그인 |
| 일부 구형 OS에서만 발생 | 루트 신뢰 저장소 미갱신 | OS 업데이트 또는 최신 루트 인증서 패키지 설치 |
2. 브라우저 경고 메시지 해석과 위험도
- NET::ERR_CERT_DATE_INVALID: 날짜 검증 실패이다. 사용자가 경고를 무시하면 중간자 공격 위험이 증가한다.
- HSTS 적용 사이트: 예외 추가가 불가하다. 원인을 해결해야만 접속 가능하다.
- “시계가 맞지 않습니다” 안내: OS 시간 오차 가능성이 높다. 자동 동기화를 먼저 수행한다.
3. 3분 복구: 빠른 자가 점검 10단계
- 다른 HTTPS 사이트 2~3곳 접속 테스트를 한다.
- 시스템 날짜·시간·시간대가 올바른지 확인하고 자동 동기화를 실행한다.
- 유·무선 네트워크를 변경해 본다(모바일 핫스팟 등).
- 캡티브 포털 네트워크라면 일반 HTTP 페이지 접근으로 로그인 절차를 완료한다.
- 브라우저 프로필·확장 프로그램을 비활성화 후 시도한다.
- 기업·학교 환경이라면 프록시 설정을 임시 우회하거나 보안 프로그램을 일시 해제하고 재시도한다.
- 운영체제 업데이트를 적용해 루트 인증서 저장소를 최신화한다.
- 문제가 되는 도메인의 인증서 만료일을 확인한다(아래 명령어 참고).
- 회사 내 공통 장애라면 SSL 가로채기 장비·프록시의 인증서 유효기간을 점검한다.
- 여전히 재현되면 상세 진단 절차로 전환한다.
4. 시스템 시간 자동 동기화 설정: Windows 11/10
- 설정 > 시간 및 언어 > 날짜 및 시간에서 시간 자동 설정과 시간대 자동 설정을 켠다.
- 동기화 지금을 눌러 즉시 NTP 동기화를 수행한다.
- 회사 PC에서 도메인 정책으로 제한된 경우 IT 관리자에게 NTP 소스 확인을 요청한다.
고급 진단·수동 동기화는 다음 명령을 관리자 권한 PowerShell 또는 명령 프롬프트에서 실행한다.
REM 현재 구성 확인
w32tm /query /status
w32tm /query /configuration
REM 수동 NTP 서버 지정 및 재동기화(예: time.windows.com)
w32tm /config /manualpeerlist:"time.windows.com,0x8" /syncfromflags:manual /update
w32tm /resync /force
기업 표준으로 Google NTP를 쓰는 경우 예시는 다음과 같다.
w32tm /config /manualpeerlist:"time.google.com,0x8" /syncfromflags:manual /update
w32tm /resync /force
BIOS/UEFI 시간이 크게 틀어진 경우 OS 부팅 전 펌웨어 설정에서 날짜·시간을 1차 조정한 뒤 OS에서 NTP 동기화를 수행한다.
5. macOS 시간 자동 동기화
- 시스템 설정 > 일반 > 날짜와 시간에서 자동으로 설정을 활성화한다.
- 터미널에서 상태 점검 및 동기화를 수행한다.
# 시간 서버 확인
systemsetup -getusingnetworktime
systemsetup -getnetworktimeserver
# 시간 서버 설정 및 활성화(관리자 권한 필요)
sudo systemsetup -setusingnetworktime on
sudo systemsetup -setnetworktimeserver time.apple.com
6. Linux(Ubuntu/CentOS 등) 시간 동기화
systemd 기반 배포판은 timedatectl로 관리한다.
# 상태 확인
timedatectl status
# NTP 사용 켜기
sudo timedatectl set-ntp true
# chrony 사용 시 예시(설정 파일 편집 후 재시작)
sudo nano /etc/chrony/chrony.conf # server time.google.com iburst 등 설정
sudo systemctl restart chrony
7. Android/iOS 모바일 시계 동기화
- Android: 설정 > 시스템 > 날짜 및 시간 > 자동 날짜 및 시간, 자동 시간대 활성화 후 재부팅한다.
- iOS: 설정 > 일반 > 날짜 및 시간 > 자동 설정 켠다. 프로파일·MDM이 있는 경우 관리 정책을 확인한다.
8. 인증서 유효기간 구조와 판별 로직
브라우저는 서버가 제시한 인증서의 NotBefore와 NotAfter 값을 클라이언트 시스템 시각과 비교한다. 시스템 시각이 NotBefore보다 과거이거나 NotAfter를 초과하면 오류가 발생한다. 또한 전체 체인의 만료일 중 가장 이른 인증서가 병목이 된다.
| 필드 | 의미 | 점검 포인트 |
|---|---|---|
| NotBefore | 인증서 효력 시작 시각 | 클라이언트 시계가 이보다 과거면 오류이다. |
| NotAfter | 인증서 만료 시각 | 만료 직전 교체가 필요하다. |
| Issuer | 발급자(CA) | 사내 CA 또는 프록시 발급 여부 식별한다. |
| Chain | 중간·루트 인증서 경로 | 중간체 누락 시 신뢰 실패가 발생한다. |
9. 서버·네트워크 측 문제 식별 절차
- 사내망과 외부망에서 동일 도메인에 대해 증상을 비교한다.
- 프록시 우회(직접 연결) 시 정상이라면 프록시 또는 SSL 가로채기 장비 인증서를 교체한다.
- 외부에서도 동일 증상이면 서버 인증서 교체·체인 보강이 필요하다.
- 구형 클라이언트에서만 발생하면 루트 저장소 갱신을 배포한다.
10. 현장 진단 명령어 모음
서버 인증서 만료일·체인을 확인한다.
# OpenSSL: 인증서 유효기간 확인
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -issuer -subject
# 체인 파일 저장 후 점검(리다이렉트·SNI 필요 시 -servername 지정)
openssl s_client -showcerts -connect example.com:443 -servername example.com < /dev/null
# PowerShell: 만료일만 빠르게 조회(Windows)
$domain="example.com"
$port=443
$tcpClient = New-Object Net.Sockets.TcpClient($domain,$port)
$sslStream = New-Object Net.Security.SslStream($tcpClient.GetStream(), $false, ({ $true }))
$sslStream.AuthenticateAsClient($domain)
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $sslStream.RemoteCertificate
$cert.NotBefore; $cert.NotAfter; $cert.Subject; $cert.Issuer
11. 공용 NTP 소스와 포트·방화벽 점검
| 항목 | 값 | 비고 |
|---|---|---|
| NTP 프로토콜 포트 | UDP 123 | 방화벽·게이트웨이에서 허용한다. |
| 예시 NTP 서버 | time.windows.com, time.google.com, pool.ntp.org | 기업은 내부 NTP를 권장한다. |
| 시간대 설정 | Asia/Seoul 등 | 시간대 오류도 만료 판정에 간접 영향이 있다. |
12. 재현·검증 체크리스트
- 재현 조건을 기록한다: 네트워크 종류, 프록시 사용 여부, OS·브라우저 버전이다.
- 시계 동기화 전·후 캡처를 남긴다(오류 스크린샷, 인증서 상세 창).
- 서버 인증서 교체 후 즉시 체인 재검증을 수행한다.
- 브라우저 캐시·프로필 영향 배제를 위해 시크릿 모드와 별도 프로필을 병행 테스트한다.
13. 기업 환경 운영 가이드(정책·자동화)
- 표준 시간 소스: 내부 NTP(예: 도메인 컨트롤러) 구축 후 외부 상위 NTP와 동기화한다.
- 그룹 정책: Windows GPO로 시간 서비스 구성과 프록시 인증서 배포를 표준화한다.
- 만료 모니터링: 서버·프록시·WAF·SSL 가시성 장비의 인증서 만료일을 CMDB에 등록하고 30·14·7일 전 자동 알림을 설정한다.
- 변경 관리: 인증서 교체 작업은 롤백·검증 계획과 함께 진행한다.
- 교육: 사용자에게 시계 자동 설정을 고정하도록 안내한다.
14. 사례별 원인-해결 매핑
| 사례 | 원인 | 해결 |
|---|---|---|
| 사내 전 사용자 동시 오류 | SSL 가로채기 장비의 중간 인증서 만료 | 장비 인증서 교체 및 루트/중간 재배포 |
| 특정 노트북만 오류 | 절전 복귀 후 시계 드리프트 | NTP 강제 재동기화, 배터리 상태 점검 |
| 외부 협력사 사이트만 오류 | 상대 서버 인증서 만료 | 담당자에 교체 요청, 임시로 대체 접속 채널 확보 |
| 공항 Wi-Fi에서만 오류 | 캡티브 포털 미인증 | 포털 페이지 인증 후 재시도 |
15. 최소복구 스크립트 묶음(현장용)
:: Windows 즉시 동기화(관리자)
powershell -Command "Start-Process cmd -Verb runAs -ArgumentList '/c w32tm /resync /force'"
# macOS 즉시 동기화(관리자)
sudo systemsetup -setusingnetworktime on && sudo systemsetup -setnetworktimeserver time.apple.com
# Linux 즉시 동기화(systemd-timesyncd)
sudo timedatectl set-ntp true && timedatectl status
16. FAQ
오류가 간헐적으로만 발생한다. 무엇을 우선 확인해야 하나?
모듈식 네트워크 환경에서 프록시 경로가 다를 수 있다. 프록시·보안게이트웨이 장비별 인증서 만료일과 체인을 비교하고, 장비 이중화 시 세컨더리 노드의 인증서 상태를 별도로 점검한다.
시계를 맞췄는데도 여전히 오류가 나온다.
서버 측 인증서 만료 또는 중간 인증서 누락 가능성이 높다. OpenSSL로 NotAfter와 체인을 확인하고, 브라우저 인증서 상세 보기에서 발급자와 체인 구성을 비교한다.
회사에서만 문제가 발생한다.
SSL 가로채기 또는 프록시 인증서 만료가 흔한 원인이다. 사내 루트 인증서 저장소 배포 상태와 게이트웨이 장비의 인증서 유효기간을 점검한다.
루트 인증서 저장소는 어떻게 최신화하나?
Windows는 Windows Update로, macOS·iOS는 OS 업데이트로, Linux는 배포판의 ca-certificates 패키지 업데이트로 관리한다.
캡티브 포털 환경에서 반복된다.
일반 HTTP 페이지 접근 후 포털 인증을 먼저 완료한다. 이후 HTTPS 접속을 재시도한다.