SSL 설정하다 보면 파일 이름이 너무 많아서 헷갈림.
- .crt
- .pem
- .key
- fullchain.pem
- privkey.pem
- .csr
- .pfx
대충 다 비슷해보이는데 역할이 다름.
핵심
실제로 HTTPS 서버 운영할 때 필요한 건 보통 이것뿐임.
- 서버 인증서 ( 이 안에 공개키가 들어가있음)
- 개인키(private key)
즉:
인증서 + 개인키
이 2개만 있으면 nginx/apache/k8s 대부분 구성 가능함.
[1. .key]
가장 중요함.
server.key
tls.key
privkey.pem
같은 이름으로 존재함.
이건 개인키(private key)임.
절대 외부 유출되면 안 됨.
nginx에서는 보통:
ssl_certificate_key /etc/ssl/tls.key;
처럼 사용함.
[2. .crt]
서버 인증서임.
server.crt
tls.crt
같은 형태.
브라우저가 서버 신뢰할 수 있는지 확인하는 인증서임.
nginx에서는:
ssl_certificate /etc/ssl/tls.crt;
처럼 사용함.
[3. .pem]
이건 파일 종류라기보다 포맷 개념에 가까움.
PEM = Base64 텍스트 인코딩 형식.
내용 보면 보통 이런 형태임.
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
또는:
-----BEGIN PRIVATE KEY-----
즉 .pem 안에는:
- 인증서도 들어갈 수 있음
- 개인키도 들어갈 수 있음
- 체인 인증서도 들어갈 수 있음
확장자만 보고 역할 판단하면 안 됨.
[4. fullchain.pem]
Let's Encrypt 쓸 때 많이 봄.
이건:
서버 인증서 + 중간 인증서(intermediate CA)
를 합쳐놓은 파일임.
보통 nginx에서는 이걸 많이 사용함.
ssl_certificate /etc/letsencrypt/live/domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain/privkey.pem;
왜 필요하냐면,
브라우저가 인증서 신뢰 경로(chain)를 확인해야 하기 때문임.
요즘은 대부분 fullchain 사용함.
[5. privkey.pem]
이건 그냥 개인키 파일임.
실질적으로 .key랑 같은 역할.
privkey.pem == tls.key == server.key
느낌임.
[6. .csr]
인증서 발급 요청 파일.
Certificate Signing Request
약자임.
CA(인증기관)에 인증서 발급 요청할 때만 사용함.
운영 서버에서는 보통 안 씀.
생성 예시:
openssl req -new -newkey rsa:2048 -nodes \
-keyout server.key \
-out server.csr
최종 정리
| .key | 개인키 |
| .crt | 서버 인증서 |
| .pem | 인증서/키를 담는 포맷 |
| fullchain.pem | 서버 인증서 + 중간 인증서 |
| privkey.pem | 개인키 |
| .csr | 인증서 발급 요청 파일 |
| .pfx .p12 | 인증서+키 묶음(Windows 계열 많이 사용) |
'TIL' 카테고리의 다른 글
| 클라우드 인프라 밑바닥 파헤치기: 랙, 스위치, 라우터 개념 잡기 (1) | 2026.05.08 |
|---|---|
| kubectl apply 내부 동작 원리 (feat. create랑 섞어 쓰면 안 되는 이유) (0) | 2026.05.07 |
| VPN거치면 왜 느릴까? (0) | 2026.05.04 |
| kubectl namespace에 대해서 알아야 할 것. (0) | 2026.05.04 |
| Kubernetes Service가 없으면 어떻게 될까? (0) | 2026.05.03 |