본문 바로가기
BackEnd

[aws] ec2 에 배포한 사이트에 ssl 인증서 발급하기 (feat. nginx)

by 위그든씨 2023. 12. 8.

https://bitgadak.tistory.com/6

 

certbot 으로 let's encrypt 인증서 발급받기

certbot 을 통해 let's encrypt 인증서를 발급받아보자. 현재로서는 가장 간단한 방법인 것 같다. 공식 사이트 가이드를 따라 진행한다. 아래 페이지를 참고했다. certbot 가이드: https://certbot.eff.org/instruc

bitgadak.tistory.com

ssl 발급 전에 개인 도메인부터 있어야 함. (가비아 같은 곳에서 이벤트가에 사면 500원에도 구매 가능)

도메인은 aws route53 에서 ec2 인스턴스의 퍼블릭 ip와 연결해주면 됨 .

1. certbot을 설치하는 과정은 위 링크를 따라하기

certbot certonly --nginx -d [도메인]

만약 Permission denied: 이 떳다면 자신이 root에 접속 -> sudo -i 

발급 받은 키들은 ls -l /etc/letsencrypt/live/도메인 안에 저장되어 있음

2. nginx에 해당 키들에 대해 명시해주기

server {
    listen 80 ;
    listen 443 ssl;

    root /var/www/html;
    index index.html;

    server_name [도메인];

    ssl_certificate     /etc/letsencrypt/live/도메인/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/도메인/privkey.pem;
    
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

3. sudo nginx -t 를 통해 문법 체크해주고 sudo service nginx restart 를 통해 재시작 이후 접속 해보기

 

ch) http 로 접속시 자동으로 https 통신을 원하면 site-available/default에 아래 내용을 추가하면 됨

server {
    listen 80;
    server_name [domain] www.[domain];
    return 301 https://$host$request_uri;
}

return 301 https://$host$request_uri; 이 부분은 수정 없이 그대로 사용.

이 명령은 HTTP를 통해 들어온 모든 요청을 HTTPS로 리디렉션하는 역할.

$host와 $request_uri는 Nginx가 자동으로 처리하는 변수:

  • $host는 요청된 서버의 호스트 이름을 나타냄
  • $request_uri는 요청된 URI를 나타냄 (예: /path?query=string).