EC2 인스턴스에 NGINX를 사용하여 SSL을 적용하는 방법은 다음 단계로 진행할 수 있습니다. 일반적으로 무료 SSL 인증서는 Let's Encrypt를 사용하며, certbot을 이용해 쉽게 SSL 인증서를 발급하고 NGINX에 적용할 수 있습니다. 저는 우분투 환경에서 진행하였습니다. 참고바랍니다:)
1. NGINX 설치 (이미 설치되어 있으면 이 단계는 건너뛰세요)
sudo apt update
sudo apt install nginx
2. NGINX 활성화 및 시작
sudo systemctl enable nginx
sudo systemctl start nginx
3. 도메인 설정 (도메인이 필요함)
Let's Encrypt로 SSL 인증서를 발급받으려면 도메인이 필요합니다. 도메인을 이미 연결한 상태라면, NGINX 설정 파일에 도메인 정보를 추가합니다. 만약, 도메인이 없다면 무료 도메인인 내 도메인 한국을 추천합니다. 만료일을 계속해서 연장해서 사용할 수 있고, 한글 버전의 도메인도 사용 가능합니다.
4. certbot 및 Let's Encrypt SSL 설치
Let's Encrypt의 certbot 도구를 설치합니다.
(1) certbot 및 NGINX 플러그인 설치
sudo apt install certbot python3-certbot-nginx
(2) SSL 인증서 발급
예를 들어, 도메인이 example.com이라면 다음 명령을 사용하세요.
sudo certbot --nginx -d example.com -d www.example.com
여기서 example.com과 www.example.com은 인증서를 발급받고자 하는 도메인입니다. 여러 도메인을 동시에 입력할 수도 있습니다.
(5) 인증서 발급 과정
- 이메일 주소를 입력하여 갱신 관련 알림 체크
- certbot이 NGINX 설정을 자동으로 구성할지 물어봅니다. 자동으로 구성하려면 "Yes"를 선택하면 됩니다.
5. NGINX 설정 확인
Let's Encrypt가 SSL 인증서를 자동으로 NGINX 설정에 추가했다면, 설정 파일은 /etc/nginx/sites-available/default 또는 해당 도메인의 설정 파일에 SSL 설정이 추가됩니다. 설정 파일을 확인하고 수정할 수 있습니다. 아래 파일만 수정하면, 다른 파일은 수정할 필요가 없습니다.
sudo nano /etc/nginx/sites-available/default
NGINX 설정은 다음과 같이 SSL 관련 항목이 있어야 합니다.
certbot 설치하면서 NGINX 설정을 자동으로 구성 'Yes'를 입력했다면 자동으로 등록이 됩니다.
server {
listen 80;
server_name example.com www.example.com;
# Redirect all HTTP traffic to HTTPS
return 301 https://$host$request_uri;
}
# certbot이 자동으로 등록해주는 부분
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://localhost:3333; # Your app's internal port (modify as needed)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
6. Nginx 설정 테스트 및 재시작
설정이 완료되었으면 NGINX 설정을 테스트한 후 재시작합니다.
sudo nginx -t
에러가 없다면 NGINX를 재시작합니다.
sudo systemctl restart nginx
7. SSL 자동 갱신 설정
Let's Encrypt 인증서는 90일 동안 유효하므로, 이를 자동으로 갱신하도록 설정합니다.
sudo certbot renew --dry-run
위의 명령어가 정상적으로 동작한다면 인증서가 만료되기 전에 자동으로 갱신됩니다. 혹시라도 잘 안되신다면, 아래 포스트를 참고바랍니다.
8. 방화벽 설정
EC2 인스턴스의 보안 그룹에서 80번(HTTP)과 443번(HTTPS) 포트를 열어야 외부에서 접근 가능합니다.
# 포트 80 및 443 허용
sudo ufw allow 'Nginx Full'
또는 AWS 콘솔의 보안 그룹 설정에서 포트 80과 443을 허용해야 합니다.
'1. 웹개발 > 1_2_1 AWS' 카테고리의 다른 글
[AWS] EC2에서 PM2를 사용하여 애플리케이션 관리하기 (0) | 2024.11.09 |
---|---|
[AWS] EC2 프리티어 용량 + 메모리 늘리기 (0) | 2024.11.02 |
[AWS] EC2 인스턴스 서로 다른 계정과 공유하는 방법 (1) | 2024.10.19 |
[AWS] RDS MySQL 데이터베이스 생성 (0) | 2024.10.05 |
[AWS] 서로 다른 계정에서 RDS 데이터 복사하는 방법 (feat. MySQL Workbench) (0) | 2024.09.28 |