SSL과 TLS의 관계
SSL(Secure Sockets Layer)은 넷스케이프가 1995년에 개발한 암호화 통신 프로토콜이다. 이후 보안 취약점이 발견되어 TLS(Transport Layer Security)로 대체되었다. 현재 사용되는 것은 TLS 1.2와 TLS 1.3이며, SSL 2.0과 3.0은 공식적으로 폐기되었다. 하지만 업계에서는 관례적으로 여전히 SSL 인증서라는 용어를 사용한다. 정확하게는 TLS 인증서이지만, 이 글에서도 통용되는 SSL 인증서라는 표현을 병행한다.
SSL 인증서가 하는 일
SSL 인증서는 두 가지 핵심 기능을 수행한다. 첫째, 서버의 신원을 인증한다. 사용자가 접속한 서버가 진짜 해당 도메인의 소유자가 운영하는 서버인지를 제3자(인증 기관, CA)가 보증하는 것이다. 피싱 사이트나 중간자 공격(MITM)을 방어하는 기반이 된다. 둘째, 통신 내용을 암호화한다. 클라이언트와 서버 사이에 전송되는 모든 데이터를 암호화하여 네트워크 도청자가 내용을 읽을 수 없게 만든다. 로그인 비밀번호, 결제 정보, 개인정보 등 민감한 데이터가 평문으로 노출되는 것을 방지한다.
TLS 핸드셰이크 과정
HTTPS 연결이 수립되는 과정을 TLS 핸드셰이크라고 한다. 클라이언트가 서버에 접속하면 서버가 자신의 SSL 인증서를 제시한다. 클라이언트는 해당 인증서가 신뢰할 수 있는 CA에 의해 서명되었는지 검증한다. 검증이 통과되면 양측이 대칭 키를 생성하기 위한 키 교환을 수행한다. TLS 1.3에서는 이 과정이 1-RTT(Round Trip Time)로 최적화되어 기존 TLS 1.2의 2-RTT보다 빠르게 연결이 수립된다. 핸드셰이크가 완료되면 이후 모든 통신은 대칭 키로 암호화된다.
인증서의 종류
인증서는 검증 수준에 따라 DV, OV, EV로 나뉜다. DV(Domain Validation)는 도메인 소유권만 확인하는 가장 기본적인 인증서다. 발급이 빠르고 무료(Let’s Encrypt)부터 저가까지 다양하다. OV(Organization Validation)는 도메인 소유권에 더해 조직의 실체를 확인한다. 기업 웹사이트에서 신뢰도를 높이기 위해 사용한다. EV(Extended Validation)는 가장 엄격한 검증을 거치며, 과거에는 브라우저 주소창에 녹색으로 기업명이 표시되었으나 현재 대부분의 브라우저에서는 이 시각적 구분이 제거되었다.
Let’s Encrypt와 자동 갱신
Let’s Encrypt는 ISRG(Internet Security Research Group)가 운영하는 무료 CA다. DV 인증서를 무료로 발급하며, ACME 프로토콜을 통해 인증서 발급과 갱신을 자동화할 수 있다. Certbot 클라이언트를 설치하고 cron에 갱신 스크립트를 등록해두면 90일 단위로 자동 갱신되어 인증서 만료로 인한 서비스 장애를 방지할 수 있다. 개인 서버와 소규모 서비스에서는 Let’s Encrypt가 사실상 표준이다.
HTTPS가 필수인 이유
구글 크롬은 HTTPS가 적용되지 않은 사이트에 안전하지 않음 경고를 표시한다. SEO 관점에서도 구글은 HTTPS 적용 여부를 검색 순위 요소로 반영한다. HTTP/2와 HTTP/3 프로토콜은 HTTPS를 전제로 동작하므로, 최신 웹 성능 최적화의 혜택을 받으려면 SSL 인증서 적용이 필수다.