Error 525: SSL handshake failed
Cloudflare SSL/TLS 모드가 Full 또는 Full (Strict)일 때 Cloudflare와 원본 웹 서버 사이의 SSL/TLS 핸드셰이크가 완료되지 못하면 표시되는 오류입니다.
Transport Layer Security(구 SSL)는 클라이언트와 서버가 신뢰할 수 없는 네트워크 위에서 통신할 때, 전송 중 데이터를 암호화하고 변조를 탐지하며 서버 신원을 인증하는 프로토콜입니다. 웹에서 HTTP에 적용되면 그 결과가 HTTPS입니다.
SSL/TLS는 클라이언트와 신뢰할 수 없는 네트워크를 사이에 둔 서버가 안전하게 통신하도록 암호화·무결성·인증을 제공하는 프로토콜입니다. TLS는 SSL의 후속 표준이며, 웹에서 HTTP를 보호할 때 HTTPS라는 이름으로 쓰입니다.
SSL/TLS는 클라이언트와 서버가 신뢰할 수 없는 네트워크를 사이에 두고도 안전하게 통신하도록 돕는 프로토콜입니다. TLS(Transport Layer Security)는 이전 이름인 SSL(Secure Sockets Layer)의 후속 표준으로, 오늘날 실무에서 두 용어는 같은 프로토콜 계열을 가리킵니다.
웹에서 TLS가 HTTP 연결에 적용된 결과가 HTTPS입니다.
MDN 문서 기준으로 TLS는 네트워크 연결에 대해 다음을 보장합니다.
| 보장 | 의미 |
|---|---|
| 암호화 | 전송 중인 데이터를 암호화해 공격자가 내용을 읽지 못하게 합니다. |
| 무결성 | 전송 중 데이터가 몰래 변조되면 이를 탐지할 수 있습니다. |
| 인증 | 상대가 주장하는 신원이 맞는지 증명합니다. 웹에서는 보통 서버가 클라이언트에게 자신을 인증합니다. |
서버 인증은 서버가 유효한 디지털 인증서를 제시하는 방식으로 이루어지며, 양쪽이 각자 인증서를 제시하면 상호 인증도 가능합니다.
TLS는 브라우저와 원본 서버 사이의 보안 연결을 담당하므로, CDN처럼 요청을 중계하는 구성요소가 끼어들면 브라우저↔프록시 구간과 프록시↔원본 구간의 TLS 상태를 따로 볼 필요가 있습니다. 인증서의 유효기간·호스트 이름·인증 경로 중 하나라도 브라우저가 신뢰하지 못하면 경고 화면으로 이어집니다.
인증서 검증 실패나 핸드셰이크 실패를 다룰 때는, 문제가 어느 구간에서 발생했는지 확인하기 전에 인증서 자체가 원인이라고 단정하지 않습니다.
[Observation] MDN 문서는 현행 버전으로 TLS 1.3(RFC 8446)을 제시하며 TLS 1.2도 여전히 사용된다고 설명합니다. 같은 문서는 TLS 1.1과 1.0은 더 이상 사용하지 않아야 한다고 명시합니다.