SSL/TLS 인증서 완벽 가이드: X.509, PEM 및 최신 표준 이해하기
브라우저 주소창의 자물쇠 아이콘을 보면 연결이 안전하다는 것을 알 수 있습니다. 하지만 그 작은 아이콘 뒤에는 디지털 인증서, 암호화 키, 신뢰할 수 있는 기관들로 구성된 복잡한 인프라가 숨겨져 있습니다.
이 가이드에서는 SSL/TLS 인증서의 형식을 파헤치고, 웹을 안전하게 유지하는 프로토콜과 주요 요소들을 설명합니다.
1. X.509 인증서란 무엇인가요?
X.509는 공개 키 인증서 형식에 관한 국제 표준입니다. 흔히 "SSL 인증서"라고 부르는 것은 실제로는 X.509 인증서를 의미합니다.
X.509 인증서는 공개 키를 ID(도메인 이름 또는 회사명 등)와 연결하며, **인증 기관(CA)**에 의해 디지털 서명되어 신뢰성을 보장받습니다.
2. 일반적인 인증서 형식
인증서는 다양한 파일 확장자를 가지고 있어 혼동하기 쉽습니다. 인증서를 인코딩하는 두 가지 주요 방식은 다음과 같습니다.
PEM (Privacy Enhanced Mail)
Apache나 Nginx 같은 웹 서버에서 가장 흔히 사용되는 형식입니다.
- 확장자:
.pem,.crt,.cer,.key - 형식: Base64로 인코딩된 ASCII 텍스트입니다. 주로
-----BEGIN CERTIFICATE-----로 시작합니다.
DER (Distinguished Encoding Rules)
인증서의 이진(Binary) 버전입니다. 주로 Java 기반 환경이나 Windows에서 사용됩니다.
- 확장자:
.der,.cer - 형식: 이진 데이터입니다.
PKCS#12 (PFX)
인증서, 중간 체인, 그리고 개인 키를 하나의 비밀번호로 보호된 파일에 담는 "번들" 형식입니다.
- 확장자:
.p12,.pfx - 용도: 서버 간 인증서 이동이나 Windows/IIS 설치 시 사용됩니다.
3. 라이프사이클: CSR에서 CA까지
인증서를 발급받는 과정은 다음과 같습니다.
- 개인 키 생성: 서버에 보관될 비밀 키를 생성합니다.
- CSR(Certificate Signing Request) 생성: 공개 키와 신원 정보가 포함된 파일입니다.
- 제출: CSR을 Let's Encrypt, DigiCert, Sectigo와 같은 **CA(인증 기관)**에 보냅니다.
- 검증: CA가 해당 도메인의 소유권을 확인합니다.
- 발급: CA가 인증서에 서명하여 사용자에게 다시 보냅니다.
4. 최신 표준: TLS 1.3과 그 이후
여전히 "SSL 인증서"라고 부르지만, SSL 프로토콜 자체는 오래되고 취약합니다. 현재 우리는 **TLS(Transport Layer Security)**를 사용합니다.
TLS 1.3: 현재의 표준
2018년에 발표된 TLS 1.3은 이전 버전보다 빠르고 안전합니다.
- 속도: 연결을 설정하는 데 필요한 "핸드셰이크" 횟수를 줄여 웹사이트 로딩 속도를 높입니다.
- 보안: MD5, SHA-1 같은 오래되고 취약한 암호화 알고리즘을 제거했습니다.
SNI (Server Name Indication)
SNI는 하나의 IP 주소를 가진 단일 서버가 여러 도메인에 대해 서로 다른 SSL 인증서를 호스팅할 수 있게 해주는 TLS의 확장 기능입니다. 현대의 공유 호스팅과 CDN이 가능한 이유입니다.
OCSP (Online Certificate Status Protocol)
OCSP는 브라우저가 인증서 만료 전이라도 해당 인증서가 폐기되었는지(예: 개인 키 유출) 실시간으로 확인하는 방법입니다.
5. 확장자 요약 표
| 확장자 | 형식 | 포함 내용 | 용도 |
|---|---|---|---|
| .pem / .crt | PEM (텍스트) | 인증서만 포함 | 리눅스 서버 (Nginx/Apache) |
| .key | PEM (텍스트) | 개인 키 | 리눅스 서버 (Nginx/Apache) |
| .p12 / .pfx | PKCS#12 (이진) | 인증서+키+체인 | 윈도우 (IIS), Java |
| .csr | PEM (텍스트) | 서명 요청서 | 인증서 신청용 |
권장 사항
- 개인 키 보안:
.key파일을 도난당하면 누구나 여러분의 서버를 사칭할 수 있습니다. - Let's Encrypt 활용: 대부분의 웹사이트에서 Let's Encrypt는 유료 인증서와 동일한 수준의 보안을 제공하는 무료 자동 인증서를 제공합니다.
- 만료일 모니터링: 인증서가 만료되어 "연결이 비공개로 설정되어 있지 않습니다"라는 오류가 뜨지 않도록 미리 관리하세요.
- 이전 프로토콜 비활성화: 서버가 TLS 1.2 및 TLS 1.3만 허용하도록 설정하세요.
결론
SSL/TLS 인증서는 인터넷 신뢰의 기반입니다. X.509나 PEM 같은 기술적 용어가 처음에는 복잡해 보일 수 있지만, 핵심은 간단합니다. "여러분의 신원을 증명하고 사용자 데이터를 안전하게 보호하는 것"입니다.
인증서 형식을 변환하거나 해시값을 확인해야 하나요? 현재 전용 SSL 도구는 없지만, 파일의 무결성을 확인하기 위해 저희의 해시 생성기를 사용할 수 있습니다.