Web 프로그래밍/Unix & Linux / / 2021. 10. 18. 11:20

nginx ssl certbot react ec2 으로 무료 설정하는 방법(자동갱신)

목차

리액트로 홈페이지를 여러 개 만들고 있는데 항상 배포 전에 ssl 설정 때문에 많이 시간이 지체되어 이번에 nginx + ssl + certbot으로 무료 ssl 설정하는 방법에 대해 포스팅해보려고 한다. 꽤 여러 번 해보았어서 이번엔 정리도 해볼 겸 다음번에 빠르게 하기 위해 명령어만 신속하게 정리를 해본다.

서버는 AWS EC2 ubuntu 18.04버전으로 하였으며 다른 버전도 크게 상관없을 거 같다. yum 계열의 linux 계열이면 명령어가 조금 다를 것이니 주의하여야 한다. 아래의 명령어를 순차대로 실행하면 될 것이다.

1. nginx & certbot 설치

기본적인 설치를 진행해 주도록 한다. nginx와 certbot을 설치한다.

  • apt-get update
  • apt-get install nginx
  • apt-get install software-properties-common
  • add-apt-repository ppa:certbot/certbot
  • apt-get update

2. 파이썬 설치

certbot용 파이썬을 설치해야하는데 처음 설치하는 것이라면 보통 위의 명령어로 설치가 될 것이다. 만약 파이썬 3.0이 설치되어 있다면 아래 명령어로 실행해야 한다.

  • apt-get install python-certbot-nginx
  • apt-get install python-certbot3-nginx

3. webroot 방식으로 ssl pem 생성

nginx를 중단하고 설치를 진행한다. 만약 서비스를 하고 있는 상태라면 굳이 중지하지 않고 해도 된다. 또한 두 번째 명령어인 도메인은 1개이면 하나만 있으면 하나만 해도 된다.

  • service nginx stop
  • certbot certonly --manual -d "도메인1" -d "도메인2"

이메일을 적어주고, 동의를 하고, Y를 선택하여 계속 뒤로 넘어가 줍니다. 딱히 설정할 건 없고 이메일은 도메인이 만료될 시점에 알람이 오는 것인데 알람을 받길 원하지 않으면 무시해도 좋습니다.

이 부분이 조금 애매한데 마지막 줄에 나온 주소로 파일을 생성하고 위의 값으로 입력한 후 저장을 해야 합니다. 아래의 값은 위의 이미지에 대한 예시이며 본인의 값으로 대체해서 입력하셔야 합니다.

[파일 생성]

  • vi http://도메인/.well-known/acme-challenge/Dg-UBaJecX95GuKtlw3kTI8arOBOWsKoUd10phFFHw4

[값 입력]

  • Dg-UBaJecX95GuKtlw3kTI8arOBOWsKoUd10phFFHw4.3y51YK92RVl3xdHSpxCr9LNOKuwzPoldc7XQbqImMmM

완료가 되면 위의 이미지처럼 결과화면이 나오는 것을 확인할 수 있습니다.

완료가 되면 위의 폴더처럼 비밀키 파일이 생성된 것을 확인할 수 있습니다.

  • cd /etc/letsencrypt/live/도메인

4. nginx 설정(react용)

80번 포트는 443으로 리다이렉트를 해주고 443 포트에는 ssl 설정을 적용시켜줘야 합니다.

  • vi /etc/nginx/sites-available/default
server {
        listen 80;
        listen [::]:80;

        server_name 도메인;

        location / {
                return 301 https://$host$request_uri;
        }
}

server {
        listen 443;
        listen [::]:443;
        server_name 도메인;

        ssl     on;
        ssl_certificate /etc/letsencrypt/live/도메인/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/도메인/privkey.pem;

        location / {
        		root /opt;
                index   index.html;
                try_files $uri $uri/ /index.html;
        }
        location /api { // api 경로 proxy pass 처리
                proxy_pass http://localhost:3001;
        }
}

5. 도메인 자동갱신 설정(crontab)

마지막으로 도메인을 자동으로 갱신해줘야 합니다. 무료 ssl은 기한이 3개월이라서 계속 업데이트해줘야 하는데 신경 쓰기 귀찮으니까 crontab으로 등록을 해줍니다.

  • crontab -e
  • 1 1 1 * * certbot renew --quiet --renew-hook "service nginx restart"

이상으로 도메인 ssl 무료로 적용하는 방법에 대해서 알아보았습니다. 글이 유익하셨다면 좋아요 한 번 부탁드립니다. 이외에도 다른 유용한 글들을 한 번씩 봐보시길 바랍니다.

[IT 활용법/인터넷] - 유튜브 영상 다운로드 가장 확실한 방법(고화질 무료)

[IT 활용법/인터넷] - 오피스 2019 정품인증 사용하는 방법(최신)

[IT 활용법/인터넷] - MS 오피스 2019 다운로드 무료 설치 방법 총정리

[Web 프로그래밍/Javascript] - React Native Expo 2달 사용 후기 및 설치 및 배포 방법

[IT 활용법/인터넷] - 저작권 걱정없는 무료폰트 추천 100가지 선

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유