조회수: 13

ERR_SSL_BAD_RECORD_MAC_ALERT: Chrome 해결

ERR_SSL_BAD_RECORD_MAC_ALERT는 인증서가 아니라 전송 중 TLS 레코드가 손상됐다는 뜻입니다. MTU·Wi-Fi·백신을 점검하세요. 무료 SSL 진단으로 바로 확인.

내 도메인에 이 문제가 있는지 지금 확인

무료, 가입 불필요. 이 가이드가 다루는 항목을 바로 검사하고 조치 방법을 알려드립니다.

문제

Chrome이 페이지를 ERR_SSL_BAD_RECORD_MAC_ALERT로 로드하지 못합니다. 그리고 첫 반응 — 인증서 재발급 — 은 정확히 틀렸습니다. 여기서 거부된 인증서는 없습니다. 이 오류가 뜰 때쯤이면 인증서는 이미 제시·수락됐고, 키가 교환됐고, 연결은 암호화된 상태입니다. 이 오류는 그 암호화된 채널 안에서 발생하며, 한쪽이 인증할 수 없는 암호화된 레코드를 받았다는 뜻입니다.

증상

  • Chrome(또는 아무 Chromium 브라우저)이 net::ERR_SSL_BAD_RECORD_MAC_ALERT를 냅니다 — 첫 요청이 아니라 로딩 도중에 뜨는 경우가 많습니다.
  • 자주 간헐적입니다 — 새로고침이 될 때도, 안 될 때도 — 그리고 약하거나 붐비는 네트워크와 상관관계가 있습니다.
  • Wi-Fi를 이더넷으로 바꾸거나, 네트워크를 바꾸거나, 보안 제품을 끄면 사라집니다.
  • 다른 사람은 같은 사이트를 잘 열거나, 같은 기기가 서로 무관한 여러 HTTPS 사이트에서 실패합니다.

이 오류의 진짜 의미

TLS는 데이터를 암호화만 하는 게 아니라 모든 레코드를 인증합니다. 한쪽이 애플리케이션 레코드를 보낼 때 그것을 보호합니다 — TLS 1.2에선 내용에 대해 계산한 MAC을 덧붙이고, TLS 1.3에선 레코드 전체를 태그로 덮는 AEAD 암호로 봉인하죠. 받는 쪽은 복호화해 쓰기 전에 그 보호를 다시 계산하거나 검증합니다. 검사가 실패하면 받는 쪽은 이게 전송 오류인지 의도적 변조인지 알 방법이 없으므로 최악을 가정합니다: 연결을 끊고 치명적 bad_record_mac 알림(TLS 알림 코드 20, RFC 5246 §7.2.2는 TLS 1.2, RFC 8446 §6.2는 TLS 1.3)를 보냅니다. Chrome은 그 알림을 ERR_SSL_BAD_RECORD_MAC_ALERT로 표출합니다.

그러니 번역은 단순합니다: 암호화된 레코드가 손상돼 도착했고, TLS가 그것을 괜찮은 척하기를 거부했다. 이건 기능입니다. 프로토콜은 손상된 바이트를 조용히 앱에 넘기느니 요란하게 실패하도록 설계됐습니다. 진단의 전부는 레코드가 어디서 손상됐는지가 됩니다 — 물리 링크, 스트림을 재암호화하는 미들웨어, 아니면 버그 있는 TLS 종단 장비.

한 가지 중요한 귀결: 이건 인증서·cipher suite·TLS 버전을 바꿔서 고치는 문제가 거의 아닙니다. 그건 핸드셰이크 관심사이고, 핸드셰이크는 이미 성공했습니다. 당신은 이미 수립된 채널의 데이터 무결성을 디버깅하는 중입니다.

가장 흔한 원인 3가지

  1. 불안정하거나 잘못 설정된 네트워크 경로가 레코드를 손상 - 전형적 경우. 프레임을 떨구고 재전송하는 약한 Wi-Fi, TLS 레코드를 어색하게 쪼개는 낮거나 안 맞는 MTU의 라우터, 고장 나는 NIC·케이블·드라이버 — 이 중 무엇이든 전송 중 암호화된 레코드 안의 바이트를 바꿀 수 있습니다. TLS는 TCP 체크섬이 놓친 손상을 잡아내고 끊습니다. 그래서 이 오류가 그토록 간헐적이고 네트워크별로 나타나며, 이더넷이나 다른 연결로 옮기면 사라지는 것이죠.
  2. TLS 검사 보안 소프트웨어가 재암호화한 스트림을 망가뜨림 - HTTPS 스캔을 하는 백신, 회사 프록시, DLP 장비가 연결을 가로채 복호화·검사하고 브라우저로 재암호화합니다. 그 재암호화에 버그가 있으면 — 레코드 프레이밍 오류, 어긋난 시퀀스 번호, 깨진 cipher 구현 — 브라우저는 MAC/태그가 검증되지 않는 레코드를 받습니다. 지문은 당신 사이트뿐 아니라 한 기기의 여러 HTTPS 사이트에서 발생한다는 점입니다.
  3. TLS 오프로드를 하는 로드밸런서·중간 장비의 버그 - 서버측에서 TLS를 종단하는 장비(하드웨어 암호 오프로드, 오래된 LB 펌웨어, 인라인 IPS)가 특정 조건이나 부하 시 레코드를 손상시킬 수 있습니다. 이 경우 실패는 한 사용자를 따라다니기보다 많은/모든 클라이언트에 나타나거나 트래픽 양과 함께 움직입니다.

DechoNet으로 진단하기

  • SSL 진단은 네트워크 바깥에서 서버로 전체 TLS 핸드셰이크를 돌리고 레코드 계층을 되읽습니다. 깨끗이 끝나고 유효한 체인을 돌려주면 서버 TLS는 건강하고 손상은 클라이언트 경로에서 일어나는 것이지 오리진이 아닙니다. 그 한 결과가 문제를 절반으로 가릅니다.
  • HTTP 진단은 사이트를 아예 네트워크 바깥에서 가져옵니다. 외부 가져오기는 깨끗한데 당신 브라우저만 실패한다면 로컬 링크·프록시·보안 소프트웨어를 정확히 가리킵니다.

해결 체크리스트

  • 클라이언트냐 서버냐부터 격리하세요. 외부 TLS 진단을 돌리거나 다른 네트워크(모바일 핫스팟)에서 사이트를 여세요. 외부에선 깨끗한데 당신 네트워크에서 깨지면 문제는 사이트가 아니라 당신의 경로입니다.
  • Wi-Fi를 이더넷으로 바꾸거나 다른 네트워크로 옮기세요. 오류가 사라지면 물리 링크·라우터 문제를 확인한 것입니다 — 고장 나는 케이블·NIC를 점검하고, 너무 낮게 잡힌 MTU를 의심하세요(인터페이스 MTU를 낮췄다가 정상화해 보세요).
  • TLS 검사 백신이나 회사 프록시를 잠시 끄고 재시도하세요. 그걸로 고쳐지면 가로채기 계층이 레코드를 손상시키는 것입니다 — HTTPS 스캔을 영구히 꺼 두지 말고 업데이트하거나 재설정하세요.
  • 모두에게 실패하거나 부하와 함께 커지면 TLS를 종단하는 무엇이든 서버측에서 보세요: 로드밸런서·장비 펌웨어를 업데이트하고, 하드웨어 암호 오프로드를 끈 채로 테스트해 오프로드 버그를 배제하세요.
  • 변경할 때마다 SSL 진단을 다시 돌려 레코드 계층이 끝에서 끝까지 깨끗한지 확인하세요.

에스컬레이션 시점

  • 외부 SSL 진단은 서버가 건강하다고 하는데 특정 기기 하나가 여러 사이트에서 계속 실패하면, 그 엔드포인트의 보안 소프트웨어를 관리하는 사람에게 올리세요 — 검사 프록시나 백신이 거의 확실한 범인이고, 그 TLS 처리는 그들만 고칠 수 있습니다.
  • 실패가 부하와 함께 움직이거나 모든 클라이언트에 나타나면, TLS 종단을 담당하는 쪽(CDN·로드밸런서·장비 벤더)에 레코드 손상 버그로 넘기세요. 인증서와 핸드셰이크가 멀쩡하다는 증거로 외부 핸드셰이크 결과를 함께 주세요.
  • 한 기기가 아니라 한 사무실 네트워크에 국한되면 공유 경로 문제입니다 — 네트워크 팀에 넘겨 사이트와 엣지 사이의 중간 장비 체인과 링크 품질을 점검하게 하세요.

관련 도구

관련 가이드

가이드 공유

[Ad] Guide Detail Inline
← 전체 가이드 보기