Computer >> 컴퓨터 >  >> 문제 해결 >> Windows 오류

Firefox에서 TLS 핸드셰이크 실패 오류 해결하는 방법

Firefox는 현재 시장을 선도하는 주요 웹 브라우저 중 하나입니다. 2002년에 처음 출시된 이후 Windows, macOS, Linux 등 주요 운영체제에서 강력하고 안정적인 브라우저로 자리 잡았으며, Android와 iOS 기기에서도 사용할 수 있습니다.

하지만 최근 일부 사용자들은 Firefox로 웹사이트에 접속할 때 이른바 'TLS 핸드셰이크' 단계에서 멈추는 현상을 겪고 있다고 보고했습니다. 주소창에 웹사이트 주소를 입력해도 TLS 핸드셰이크가 실패하면서 페이지가 로드되지 않는 것입니다. 원래 TLS 핸드셰이크는 몇 초 안에 완료되어야 하며, 몇 분씩 걸려서는 안 됩니다. 만약 이 단계에서 계속 머물러 있거나 핸드셰이크가 5초 이상 걸린다면 브라우저에 무언가 문제가 있는 것입니다.

이 글에서는 TLS 핸드셰이크가 무엇인지 살펴보고, 핸드셰이크 실패 문제가 발생했을 때 해결하는 방법을 단계별로 알아보겠습니다.

TLS 핸드셰이크란?

전송 계층 보안(TLS) 핸드셰이크 프로토콜은 보안 세션을 시작하거나 재개할 때 인증과 키 교환이 필요한 경우 사용됩니다. TLS 핸드셰이크 프로토콜은 암호 스위트(cipher suite) 협상, 서버와 클라이언트 간의 상호 인증, 그리고 세션 키 정보 교환을 담당합니다.

TLS 핸드셰이크는 겉으로 보기에는 단순해 보이지만, 실제로는 다음과 같은 복잡한 단계들로 구성되어 있습니다.

  1. 클라이언트(브라우저)가 Client Hello 메시지와 함께 클라이언트의 난수 값과 암호 스위트 목록을 서버로 전송합니다.
  2. 서버가 Server Hello 메시지와 서버 측 난수 값으로 응답합니다.
  3. 서버가 인증용 인증서를 클라이언트에 전송하고, 필요한 경우 클라이언트에게도 인증서를 요청합니다. 이후 서버는 Server hello done 알림을 보냅니다.
  4. 클라이언트는 서버가 요청한 경우 자신의 인증서를 전송합니다.
  5. 클라이언트가 무작위 Pre-Master Secret을 서버로 전송하면, 양측이 이를 바탕으로 Master Secret세션 키를 생성합니다.
  6. 클라이언트가 Change cipher spec 메시지와 이어서 Client finished 알림을 전송합니다.
  7. 서버가 Change cipher spec 메시지를 받아 대칭키 암호화로 전환한 후, Server finished 알림을 클라이언트에 보냅니다.
  8. 이렇게 클라이언트와 서버 사이에 보안 채널이 확립되며, 이를 통해 데이터를 주고받을 수 있게 됩니다.

이처럼 서버와 클라이언트 사이에 수많은 데이터 교환이 이루어지기 때문에 과정에서 여러 가지 문제가 발생할 수 있습니다. 예를 들어 브라우저 설정이 잘못되었거나 웹사이트의 인증서가 누락된 경우에도 전체 TLS 핸드셰이크 과정이 실패할 수 있습니다.

TLS 핸드셰이크 실패의 원인

최근 여러 Firefox 사용자들이 브라우저로 웹사이트에 접속할 때마다 TLS 핸드셰이크 실패를 경험한다고 보고했습니다. 어떤 사용자는 특정 웹사이트에서만 문제가 발생하는 반면, 다른 사용자는 모든 웹사이트에서 오류가 나타나기도 합니다. 어떤 경우에는 페이지가 TLS 핸드셰이크 단계에서 한동안 멈춘 뒤 결국 로드되기도 하지만, 대부분의 경우 화면은 흰색이나 검은색으로 변한 채 그대로 멈춥니다.

TLS 핸드셰이크 오류의 대표적인 원인은 다음과 같습니다.

  • 잘못된 시스템 시간 – 컴퓨터의 날짜 및 시간 설정이 올바르지 않은 경우입니다.
  • 프로토콜 불일치 – 브라우저가 사용하는 프로토콜을 서버가 지원하지 않는 경우입니다.
  • 브라우저 오류 – 브라우저 설정 중 하나가 오류를 유발하는 경우입니다.
  • 제3자 개입 – 방화벽이나 백신 프로그램 같은 제3자가 연결을 가로채거나 조작하거나 방해하는 경우입니다.
  • 암호 스위트 불일치 – 서버가 클라이언트가 사용하는 암호 스위트를 지원하지 않는 경우입니다.
  • 잘못된 인증서 – 불완전하거나 유효하지 않은 인증서, 잘못된 URL 호스트 이름, 폐기되었거나 만료된 SSL/TLS 인증서, 자체 서명 인증서의 경로 구성 오류 등이 원인일 수 있습니다.

Firefox에서 TLS 핸드셰이크 실패 해결 방법

Firefox가 TLS 핸드셰이크 단계에서 멈추는데 새로고침으로도 해결되지 않는다면 어딘가에 문제가 있는 것입니다. 다음은 Firefox에서 TLS 핸드셰이크 문제를 해결하는 몇 가지 방법입니다.

1. 캐시 및 방문 기록 삭제하기

브라우저에 문제가 발생했을 때 가장 먼저 해야 할 일은 캐시 데이터와 방문 기록을 모두 삭제하는 것입니다. 방법은 다음과 같습니다.

  1. 상단 메뉴 오른쪽 위에 있는 메뉴 아이콘을 클릭합니다.
  2. 드롭다운 메뉴에서 방문 기록(History)을 선택합니다.
  3. 최근 방문 기록 지우기(Clear Recent History)를 클릭합니다.
  4. 삭제할 시간 범위를 선택합니다(지난 1시간, 지난 2시간, 지난 4시간, 오늘 또는 전체).
  5. 삭제할 항목을 모두 선택합니다. 방문 및 다운로드 기록, 활성화된 로그인, 쿠키, 캐시, 양식 및 검색 기록, 사이트별 설정, 오프라인 웹사이트 데이터를 삭제할 수 있습니다.
  6. 지금 지우기(Clear Now) 버튼을 클릭합니다.

이와 함께 컴퓨터 내 불필요한 파일까지 정리하면 손상된 파일이 시스템 작업을 방해하는 일을 막을 수 있습니다. Outbyte PC Repair 같은 전문 도구를 사용하면 컴퓨터의 정크 파일을 한 번에 제거할 수 있습니다.

방문 기록, 캐시, 정크 파일을 모두 삭제했다면, 이전에 열리지 않았던 웹사이트를 다시 열어 정리가 효과가 있었는지 확인해 보세요.

2. 새 프로필 사용하기

Firefox의 캐시 데이터와 방문 기록을 삭제해도 문제가 해결되지 않는다면, 새 Firefox 프로필을 만들어 보세요. 새 프로필을 사용하는 것은 깨끗한 상태에서 시작하는 것과 같습니다. 때로는 개인화된 설정이 브라우저 작동에 방해가 되기 때문입니다. 이 방법은 문제가 Firefox 설정 때문인지 아니면 다른 원인인지 확인하는 데도 도움이 됩니다.

새 프로필을 만들려면 다음 단계를 따르세요.

  1. 주소창에 about:profiles를 입력하고 Enter 키를 누릅니다.
  2. 프로필 관리자(Profile Manager) 창이 열리면 새 프로필 만들기(Create a New Profile) 버튼을 클릭합니다.
  3. 프로필 생성 마법사(Create Profile Wizard)를 따라 개인 설정과 환경설정을 지정합니다.
  4. 프로필 생성이 완료되면 기본 프로필로 설정(Set as default profile)을 클릭한 후 Firefox를 종료합니다.

새 사용자 프로필로 Firefox를 다시 실행하고 TLS 핸드셰이크 문제가 해결되었는지 확인합니다.

기존 프로필을 수정해 볼 수도 있지만, 문제의 원인을 찾아내는 것은 어렵고 시간이 많이 걸립니다. 부가 기능(add-on)을 비활성화했다가 다시 활성화하고, 프록시 연결을 꼼꼼히 점검하고, 확장 기능을 제거해야 할 수도 있습니다. 데이터 손실이 걱정된다면 기존 데이터를 새 프로필로 옮겨 번거로움을 피할 수 있습니다.

3. 자체 서명 인증서의 동일 정보 확인하기

개발자이거나 내부 웹사이트에 접속하는 경우라면, Firefox가 SSL 인증서를 처리하는 데 어려움을 겪을 가능성이 있습니다. 웹사이트의 인증서가 여러 번 교체되었고 새 인증서들이 동일한 주체(subject) 및 발급자(issuer) 정보를 포함하고 있다면, Firefox는 가능한 경로 조합이 너무 많아져 처리 속도가 느려지기 시작합니다. 자체 서명 인증서가 7~8개 저장되면 Firefox가 느려지는 것이 눈에 띄고, 10개 이상이 되면 TLS 핸드셰이크를 수행하는 동안 브라우저가 멈출 수 있습니다.

자체 서명 인증서가 Firefox 문제의 원인인지 확인하려면 다음 지침을 따르세요.

  1. Firefox를 실행하고 주소창에 about:support를 입력합니다.
  2. 프로필 폴더(Profile Folder) 항목의 폴더 열기(Open Folder) 버튼을 클릭합니다.
  3. cert8.db 파일을 찾아 이름을 변경합니다. 그러면 브라우저를 다시 시작할 때 Firefox가 해당 파일을 새로 생성합니다.
  4. Firefox를 다시 시작하고 문제가 발생했던 웹사이트에 다시 접속합니다.

웹페이지가 성공적으로 로드된다면 로컬 인증서 데이터베이스가 Firefox 문제의 원인이 맞습니다. 이 문제를 해결하려면 시스템이 새 인증서를 생성하는 방식을 조정하여 동일한 정보를 가진 인증서가 생기지 않도록 해야 합니다.

4. Firefox에서 TLS 비활성화하기

위의 해결 방법들이 모두 효과가 없다면 브라우저에서 TLS를 비활성화해 볼 수 있습니다.

방법은 다음과 같습니다.

  1. Firefox 메뉴를 열고 옵션(Options)을 클릭합니다.
  2. 고급(Advanced) 탭을 클릭한 후 암호화(Encryption)를 선택합니다.
  3. SSL 3.0 사용(Use SSL 3.0)TLS 1.0 사용(Use TLS 1.0) 항목의 체크를 해제합니다.
  4. 확인(OK) 버튼을 클릭합니다.
  5. Firefox를 다시 시작합니다.

이렇게 설정하면 Firefox로 웹페이지에 접속할 때마다 TLS 핸드셰이크가 비활성화됩니다.

마치며

'TLS 핸드셰이크 수행 중(Performing TLS Handshake)'이라는 메시지에서 멈추는 문제의 까다로운 점은 원인이 매우 다양할 수 있다는 것입니다. 위에서 소개한 해결 방법을 하나씩, 또는 여러 가지를 조합하여 시도해 보면서 자신의 상황에 맞는 해결책을 찾아보시기 바랍니다.