발급 경로 선택
| 경로 | 비용 | 적합한 경우 |
|---|---|---|
| Let’s Encrypt (무료) | 0원, 90일 주기 자동갱신 | 대부분의 웹 서비스. 자동갱신을 구성할 수 있으면 1순위 |
| 구매 (DV/OV/EV) | 연 단위 계약 (인증서 1장은 최대 200일, 계약 기간 중 재발급) | 자동갱신이 불가능한 환경(WebtoB 수동 운영 등), OV/EV 요구 |
Let’s Encrypt (certbot)
# 웹서버가 이미 80 포트로 서비스 중이면 (webroot 방식)
sudo certbot certonly --webroot -w /var/www/html -d 새도메인 -d www.새도메인
# 와일드카드가 필요하면 DNS-01 (DNS 제공자 플러그인 필요)
sudo certbot certonly --dns-cloudflare -d '*.새도메인' -d 새도메인
발급된 파일은 /etc/letsencrypt/live/새도메인/에 생긴다.
| 파일 | 용도 |
|---|---|
fullchain.pem |
서버 인증서 + 중간 인증서. 서버 설정은 대부분 이 파일을 쓴다 |
privkey.pem |
개인키 |
cert.pem / chain.pem |
leaf 단독 / 체인 단독. 구버전 Apache처럼 따로 지정할 때 쓴다 |
구매 인증서는 CSR부터
# 개인키 + CSR 생성 (RSA 2048)
openssl req -new -newkey rsa:2048 -nodes \
-keyout 새도메인.key -out 새도메인.csr \
-subj "/C=KR/ST=Seoul/O=회사명/CN=새도메인"
# CSR 내용 확인 후 발급 기관에 제출
openssl req -in 새도메인.csr -noout -text | head -20
발급 기관은 보통 서버 인증서, 중간(체인) 인증서, 루트를 준다. 서버에 필요한 건 서버 인증서와 중간 인증서이고, 루트는 배포하지 않는 게 정상이다. 이유는 체인 구조 글에 있다.
받은 파일 형식이 제각각이면
# PEM 인지 확인 (-----BEGIN 으로 시작하면 PEM)
head -1 받은파일.crt
# DER → PEM
openssl x509 -inform der -in 받은파일.cer -out 도메인.crt.pem
# fullchain 만들기 (서버 인증서 + 중간 순서)
cat 도메인.crt.pem 중간.crt.pem > fullchain.pem
# IIS 용 PFX (개인키 포함)
openssl pkcs12 -export -out 도메인.pfx -inkey 도메인.key -in fullchain.pem
# 개인키-인증서 짝 확인 (해시 일치해야 함)
openssl x509 -in 도메인.crt.pem -noout -pubkey | openssl sha256
openssl pkey -in 도메인.key -pubout | openssl sha256
서버별 설치
발급이 끝나면 Nginx, Apache, Tomcat, IIS, WebtoB 가이드의 “신규 도메인 인증서 설치” 절로 넘어간다. 설치한 뒤 진단 툴에서 체인, 만료, 보안 등급을 확인한다.