

AL2023 Nginx SSL 인증서 적용
SSL/TLS
SSL(Secure Socket Layer)/TLS(Transport Layer Security)은 전송계층 상에서 클라이언트, 서버에 대한 인증 및 데이터 암호화를 수행한다. 보안용 프로토콜이며 이 둘은 버전의 차이이다.
Let's Encrypt
무료로 SSL/TLS 인증서를 발급해 주는 비영리기관이다. 무료인 대신 만료기한이 90일로 기간 안에 매번 재발급을 진행해야 한다.
1. Certbot 설치
Certbot은 SSL/TLS 인증서를 자동으로 발급하고 갱신하는 도구이다.
bash
sudo dnf install -y certbot python3-certbot-dns-route53 python3-certbot-nginx
python3-certbot-dns-route53
Certbot의 플러그인 중 하나로, AWS Route 53 DNS 서비스를 사용하여 인증서를 자동으로 갱신하고 관리하는 데 필요한 기능을 제공한다.
python3-certbot-dns-route53 주요 기능
- AWS Route 53을 사용하여 DNS 레코드를 자동으로 추가/삭제할 수 있다
- DNS-01 챌린지를 통해 인증서를 자동으로 발급받고 갱신할 수 있다
- 웹 서버가 직접적인 액세스를 할 수 없는 환경에서도 유용하게 사용할 수 있다
python3-certbot-nginx
Certbot의 플러그인 중 하나로, Nginx 웹 서버와 통합되어 SSL/TLS 인증서를 자동으로 발급하고 설정하는 데 도움을 준다.
python3-certbot-nginx 주요 기능
- Certbot이 nginx 웹 서버를 자동으로 인식하고, 해당 서버의 설정 파일을 수정하여 SSL을 활성화한다
- 인증서 발급 후, nginx 서버에 HTTPS를 위한 SSL 설정을 자동으로 추가한다
- 인증서 갱신 시, 갱신된 인증서를 자동으로 nginx 서버에 반영한다
- 여러 도메인에 대해 자동으로 SSL을 적용할 수 있다

2. Systemd 데몬 reload
bash
sudo systemctl daemon-reload
3. 인증서 갱신을 위한 타이머 활성화
Certbot은 인증서의 갱신을 자동화하는 systemd 타이머를 제공한다. 타이머는 주기적으로 실행되어 인증서 갱신 여부를 확인하고, 필요할 경우 인증서를 자동으로 갱신한다.
bash
sudo systemctl enable --now certbot-renew.timer
4. Certbot 사용해 Nginx SSL/TLS 인증서 발급 & 서버 설정
bash
sudo certbot --nginx

AWS Route 53, 가비아를 통해 도메인 및 DNS 설정을 다 한 상태이고, Route 53에 대한 플러그인도 설치를 했기 때문에 도메인을 입력하라는 부분에서 자동으로 설정된 도메인을 읽어왔습니다.
또 플러그인 설치로 conf 설정 파일에 SSL과 도메인에 대한 설정도 자동으로 추가 됐다.
서브 도메인 사용
"abc.co.kr", "www.abc.co.kr" 서브 도메인까지 사용한다고 하면 모두 포함한 SSL 인증서를 발급받아야 한다.
즉, SAN(Subject Alternative Name) 인증서를 발급받아야 한다.
SAN 인증서를 사용하면 하나의 인증서로 여러 도메인에 대해 SSL을 적용할 수 있다.
sudo certbot --nginx -d abc.co.kr -d www.abc.co.kr
5. 인증서 검증
bash
sudo certbot certificates

6. Nginx 설정 파일(.conf)

기본 설정으로 "location /"에 대한 proxy 설정만 한 상태였는데 자동으로 SSL 설정 등 HTTP 요청이 오면 HTTPS로 리다이렉트 하는 설정까지 추가해 준 것을 볼 수 있다.

브라우저로 접속해 보면 정상적으로 SSL이 적용된 것을 확인할 수 있다.
🔗 Reference
'devOps' 카테고리의 다른 글
AWS EC2 Amazon Linux 2023 Nginx 설치 (0) | 2025.03.10 |
---|---|
AWS EC2 Ubuntu Nginx 설치 (0) | 2025.03.01 |
Spring 프로젝트 AWS EC2 Docker 배포 (0) | 2025.02.05 |
Spring Boot 프로젝트 AWS EC2 배포하기 (1) | 2025.02.02 |
[Docker] Redis 설치 (0) | 2023.06.28 |