- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 크롬 등 브라우저에서 발생하는 ERR_SSL_PROTOCOL_ERROR를 현장에서 신속하고 체계적으로 해결하도록 TLS/SSL 핸드셰이크 구조, 원인별 진단 플로우, PC 시간 동기화 방법, 브라우저 초기화 절차를 표와 체크리스트 중심으로 제공하는 것이다.
1. ERR_SSL_PROTOCOL_ERROR의 의미와 영향
ERR_SSL_PROTOCOL_ERROR는 클라이언트와 서버 간 TLS/SSL 핸드셰이크가 정상적으로 완료되지 못했을 때 브라우저가 출력하는 일반 오류 코드이다.
이 오류는 암호화 통신을 시작하기 위한 버전 협상, 암호 스위트 선택, 인증서 검증, 키 교환 중 하나라도 실패할 때 발생한다.
업무 영향은 로그인 실패, 파일 전송 중단, 사내 시스템 접근 불가 등으로 나타나며, 보안 제품의 SSL 검사 기능, 프록시, 시간 불일치 등 환경적 요인도 빈번히 개입한다.
2. TLS/SSL 핸드셰이크 핵심 이해
핸드셰이크는 크게 다음 순서로 진행된다.
- ClientHello 전송: 클라이언트가 지원 TLS 버전, 암호 스위트, 확장을 알린다.
- ServerHello 수신: 서버가 선택한 TLS 버전과 암호 스위트를 통지한다.
- 인증서 전송 및 검증: 서버 인증서 체인과 호스트명, 유효기간, 신뢰 루트를 검증한다.
- 키 교환: 세션 키를 도출한다.
- Finished 교환: 세션 무결성을 확인하고 애플리케이션 데이터 전송을 시작한다.
어느 단계에서든 버전 미호환, 인증서 불일치, 중간자 장비 개입, 타임스탬프 오류가 있으면 세션 성립에 실패한다.
3. 현장용 원인-대응 매핑 표
| 증상/로그 힌트 | 가능 원인 | 즉시 조치 | 추가 확인 |
|---|---|---|---|
| ERR_SSL_PROTOCOL_ERROR 즉시 표시 | 브라우저 TLS 설정 손상, 캐시/SSL 상태 불량 | SSL 상태 초기화, 브라우저 재시작 | 프로필 새로 만들기 |
| 유효기간 관련 경고 없이 실패 | TLS 버전/암호 스위트 미호환 | TLS 1.3/1.2 허용 확인 | 서버 측 최소/최대 버전 점검 |
| 사내망만 실패 | 프록시·방화벽 SSL 가시화 | 프록시 예외 설정, 사설 루트 배포 | SSL 검사 정책 검토 |
| 특정 도메인만 실패 | 인증서 체인 불완전 또는 SNI 문제 | 도메인별 체인 확인 | 서버 SNI 대응 및 중간CA 설치 |
| 모든 HTTPS 실패 | PC 시스템 시간 불일치 | 시간 자동 동기화 | NTP 서버 접근성 점검 |
| 모바일 테더링 OK, 사무실망만 NG | DNS/캐시/QUIC 충돌 | DNS 플러시, QUIC 비활성화 | 라우터 재기동, MTU 확인 |
| 내부 포털만 접속 실패 | HSTS + 사설 인증서 불신 | 신뢰 루트 등록 | HSTS 정책 도메인 재검토 |
4. 10분 해결 체크리스트
- PC 시간 자동 동기화 상태를 확인하고 즉시 동기화한다.
- 브라우저에서 SSL 상태를 초기화하고 캐시/쿠키를 지운다.
- 브라우저 프로필을 새로 만들거나 기본값으로 초기화한다.
- 네트워크 재시작: 어댑터 재활성화, 라우터/게이트웨이 재부팅한다.
- DNS 캐시를 플러시하고 공용 DNS로 임시 전환한다.
- 보안제품의 SSL 검사 일시 해제 후 재시도한다.
- 프록시/패킷 캡처 도구 종료 후 재시도한다.
- 동일 사이트를 모바일 테더링으로 교차검증한다.
5. PC 시간 동기화 절차
5.1 Windows
- 설정 > 시간 및 언어 > 날짜 및 시간에서 시간 자동 설정을 켠다.
- 동기화 버튼을 눌러 즉시 동기화한다.
- 관리자 권한 PowerShell에서
w32tm /resync실행한다. - 사내 NTP가 있을 경우
w32tm /config /manualpeerlist:"ntp.example.local" /syncfromflags:manual /update적용 후 서비스 재시작한다.
5.2 macOS
- 시스템 설정 > 일반 > 날짜 및 시간에서 시간 자동으로 설정을 활성화한다.
- NTP 서버가 별도라면 해당 서버를 지정하여 동기화한다.
시간 오차가 크면 인증서 Not Before/Not After 범위를 벗어나 검증이 실패한다.
6. 브라우저 초기화와 SSL 상태 정리
6.1 Chrome 기준
- 주소창에
chrome://settings/reset입력 후 설정을 기본값으로 복원한다. chrome://net-internals/#events에서 네트워크 로그를 확인하여 TLS 핸드셰이크 실패 지점을 파악한다.chrome://net-internals/#dns에서 호스트 캐시를 비운다.- 인터넷 옵션(Windows) > 콘텐츠 > SSL 상태 지우기를 수행한다.
- 프로필 새로 만들기: 사용자 전환에서 새 프로필 생성 후 재시도한다.
6.2 Edge/Firefox 포인트
- Edge도 Chrome과 동일 절차를 따른다.
- Firefox는 설정 > 개인정보 및 보안 > 인증서 보기에서 인증서 캐시와 신뢰 저장소 상태를 확인한다.
7. 네트워크·보안 환경 점검
7.1 프록시·SSL 가시화
엔터프라이즈 프록시가 SSL 가시화를 수행하면 서버 인증서 대신 사내 CA로 재서명된 인증서가 제공된다.
이 경우 클라이언트에 사내 루트 인증서를 신뢰 루트로 배포해야 한다.
프록시 예외 목록에 신뢰가 필요한 도메인을 추가하여 중간자 프록시를 우회하는 것도 방법이다.
7.2 보안 제품과 트래픽 검사
백신, DLP, SSL 검사 기능이 중간자 동작을 수행할 수 있다.
오류 재현 시 일시적으로 SSL 검사 기능을 해제하여 원인 분리를 수행한다.
7.3 DNS·MTU·QUIC
- DNS 캐시 플러시 후 재시도한다.
- 사내 DNS 포워더 오류가 의심되면 공용 DNS로 임시 전환한다.
- 네트워크 장비 MTU 불일치가 TLS 레코드 단편화 문제를 유발할 수 있어 Path MTU를 점검한다.
- QUIC(HTTP/3) 비활성화 후 HTTP/2로 재시도하여 프로토콜 층을 분리 진단한다.
8. 서버 측 원인 분리
- 서버가 TLS 1.0/1.1만 허용하거나 특정 암호 스위트만 허용하면 최신 브라우저와 협상이 실패한다.
- 중간 인증서 누락은 체인 검증 실패를 유발한다.
- SNI 미구성 가상호스트 환경에서 도메인 불일치가 발생할 수 있다.
- HSTS 활성 도메인은 예외 추가만으로 회피가 불가능하다.
클라이언트에서 동일 사이트를 다른 네트워크, 다른 브라우저, 모바일로 교차검증하여 서버/경로 문제를 추정한다.
9. 현장 점검 스크립트와 명령 예
아래 명령은 개념 설명용이다.
- Windows:
ipconfig /flushdns,netsh winsock reset으로 DNS/Winsock 초기화한다. - macOS/Linux:
curl -v https://example.com으로 TLS 협상 로그를 관찰한다. - OpenSSL:
openssl s_client -connect example.com:443 -servername example.com으로 체인과 SNI 응답을 확인한다.
10. 기업 환경 표준 운영 절차(SOP) 샘플
- 사용자 신고 접수와 증상 수집: 도메인, 시간, 네트워크 유형, 스크린샷을 확보한다.
- 클라이언트 즉시 조치: 시간 동기화, SSL 상태 지우기, 캐시 삭제, 프로필 새로 만들기를 수행한다.
- 네트워크 분리 진단: 사내망, 외부망, 테더링으로 비교한다.
- 보안 장비 정책 확인: SSL 검사 예외 리스트와 사설 루트 배포 현황을 점검한다.
- 서버 담당 협의: TLS 버전, 암호 스위트, 체인, SNI 설정 리포트를 공유한다.
- 재발 방지: 표준 NTP 적용, 브라우저 정책 템플릿, 인증서 자동 배포를 운영한다.
11. 브라우저 정책 템플릿 포인트
- 기업 GPO 또는 관리 템플릿으로 TLS 1.2 이상 강제한다.
- QUIC 사용 정책을 환경에 맞게 설정한다.
- 신뢰 루트·중간CA를 중앙 배포한다.
- 프록시 PAC 파일에서 TLS 비가시화 예외를 유지한다.
12. 체크리스트: 사용자 단말
| 항목 | 확인 방법 | 합격 기준 |
|---|---|---|
| 시스템 시간 | 자동 동기화 상태, 즉시 동기화 | ±1분 이내 |
| 브라우저 버전 | 업데이트 확인 | 최신 채널 |
| SSL 상태 | 인터넷 옵션에서 지우기 | 초기화 완료 |
| 캐시/쿠키 | 모두 삭제 | 삭제 완료 |
| 보안제품 | SSL 검사 일시 해제 | 오류 재현 테스트 |
| DNS | 플러시, 공용 DNS 전환 | 정상 조회 |
13. 체크리스트: 서버·인프라
| 항목 | 확인 포인트 | 기준 |
|---|---|---|
| TLS 버전 | 최소 1.2 이상 허용 | 1.2/1.3 |
| 암호 스위트 | 현대 암호 스위트 활성 | 강한 스위트만 |
| 인증서 체인 | 중간CA 완전성 | 체인 완전 |
| SNI | 가상호스트별 인증서 매핑 | 정상 응답 |
| HSTS | 도메인 정책 검토 | 정합성 확보 |
14. 케이스별 빠른 해법
14.1 특정 사이트만 오류
다른 사이트가 정상이라면 서버 체인 또는 SNI 문제일 가능성이 높다. 모바일 네트워크로 교차검증하여 경로 의존성을 분리한다.
14.2 사내망에서만 오류
프록시, SSL 가시화, 방화벽 DPI를 우선 점검한다. 예외 리스트와 루트 배포 현황을 확인한다.
14.3 모든 HTTPS 전면 실패
PC 시간, 신뢰 저장소 손상, 브라우저 자체 문제 순으로 점검한다. 프로필 새로 만들기가 유효하다.
15. 오류 재현과 보고 양식
- 발생 시간, 도메인, 사용자 ID, 네트워크 유형을 기록한다.
- 브라우저 버전, OS 버전, 보안제품 버전을 기록한다.
- 가능하면 curl -v의 ClientHello/ServerHello 구간 로그를 첨부한다.
16. 재발 방지 전략
- 조직 표준 NTP 운영과 시간 동기화 강제 적용한다.
- 브라우저 정책으로 TLS 1.2 이상과 최신 프로토콜을 기본값으로 강제한다.
- 인증서 자동 갱신과 체인 검증 CI를 구축한다.
- 프록시 SSL 가시화 예외 기준과 배포 자동화를 문서화한다.
17. 현장 QRC(Quick Response Command) 묶음
- DNS 플러시:
ipconfig /flushdns - Winsock 초기화:
netsh winsock reset - 시간 재동기화:
w32tm /resync - 체인 점검:
openssl s_client -connect host:443 -servername host
18. 교육용 요약
핸드셰이크 실패는 시간, 인증서, 프로토콜, 경로 네 축으로 분해하면 해결 속도가 빠르다.
FAQ
브라우저를 초기화하면 북마크와 비밀번호가 삭제되는가?
동기화가 켜져 있으면 계정에 백업되어 다시 내려받을 수 있다. 초기화 전에 동기화 상태를 확인한다.
사설 인증서를 신뢰 저장소에 넣어도 계속 실패한다면 무엇을 보나?
중간CA 누락, HSTS 정책, 도메인 불일치를 확인한다. 체인이 완전해야 한다.
회사 프록시를 끄면 되는데 정책상 불가하다면?
해당 업무 도메인을 예외 목록에 등재하고 루트 배포를 완료한다. 정책 변경은 보안팀 승인 절차를 따른다.
QUIC 비활성화가 왜 도움이 되나?
HTTP/3 계층 변수를 제거하고 TLS 1.3/1.2 구간만 검증하려는 목적이다. 원인 분리에 유리하다.
시간 동기화 후에도 간헐적으로 실패한다면?
NTP 접근성, 방화벽 포트, 장비 시간대 설정을 점검한다. 장비 간 시간대 불일치도 오류를 유발할 수 있다.