JaeWon's Devlog
article thumbnail
반응형

AWS 프리티어 중 Amazon Linux2를 사용하는 서버에서 HTTPS를 서비스에 등록해보겠습니다.
HTTPS가 없더라도 크게 문제는 없지만, 많은 회사들이 SSL을 사용하고 있기 때문에, 적용해보고자 하였습니다.


1. Let's Encrypt 설치하기

- 비용을 지불해서 사용하는 유료 인증서도 있지만, 최근 오픈소스 인증서인 Let's Encrypt가 등장해서 무료로 HTTPS를 사용할수 있게되었습니다.
- Let's Encrypt 설치 및 업데이트를 쉽게 해주는 certbot이 등장해서 사용하기도 굉장히 수월해졌습니다.

- AWS 서버에 접속하여, Let's Encrypt(certbot)를 설치하도록 하겠습니다.

- 다음 명령어를 입력합니다. (EPEL을 다운로드( Certbot에 필요한 종속성을 공급하는데 필요 ))


sudo wget -r --no-parent -A 'epel-release-*.rpm' http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/

- 설치가 완료되었다면, 다음 명령어를 입력하여 리포지토리 패키지를 설치합니다.

sudo rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm

- 리포지토리 패키지도 설치가 완료되었다면, epel를 활성화를 시키도록 하겠습니다.

sudo yum-config-manager --enable epel*

- 다음 두 명령을 차례대로 입력하여 certbot을 설치합니다.

sudo yum install -y certbot python2-certbot-apache
sudo yum install certbot-nginx

2. Nginx

- 만약, nginx가 설치가 안되어있다면, 다음 명령어를 통해 설치를 진행합니다.

1. nginx 설치
sudo yum install nginx
2. nginx 실행
sudo service nginx start
3. nginx 실행 확인
ps -ef | grep nginx

- nginx 설정파일에서 server name을 입력해주도록 하겠습니다.

sudo vi /etc/nginx/nginx.conf
또는 
sudo vi /etc/nginx/conf.d/default.conf

3. Let's Encrypt 적용하기

참고!!!
Let'S Encrypt를 적용하기 위해서는 도메인이 필요합니다.

- 아래 명령어를 통해서 nginx에 Let's Encrypt를 적용하도록 하겠습니다.

sudo certbot --nginx

- 해당 명령어가 입력되면, 다음과 같이 진행됩니다.

  • nginx 설정에서 server_name을 지정 안했을 경우.

- server_name(도메인)을 입력합니다. 입력시에는 도메인간에 공백 또는 콤마로 구분합니다.(ex: example.com www.example.com)

 

  • nginx 설정에서 server_name을 지정한 경우.

-  server_name(도메인)이 자동으로 매칭되는 것을 확인이 되었다면, 엔터를 입력하여 진행하시면 됩니다.

- 도메인 설정 후 설치를 진행하면 Certbot은 Nginx의 구성을 완료하고 성공 및 기타정보를 보고합니다.

- Let's Encrypt 설치가 정상적으로 성공하셨다면, 해당 도메인의 https 접속을 확인합니다.

4. Let's Encrypt 자동갱신

- Certbot은 무료로 제공하다보니 기본적으로 90일의 만료기간이 있습니다.

- 90일마다 서버에 접속하여 새로운 인증서를 발급하는 것은 일정 확인과 직접 작업에 대한 어려움이 있기 때문에, 이를 cron을 통해 자동화를 하도록 하겠습니다.

- 해당 파일을 수정하여 cron을 지정하도록 하겠습니다.

sudo vi /etc/crontab

- 다음의 내용을 입력 후 저장을 합니다.

...

39 1,13 * * * root certbot renew --no-self-upgrade

- 위의 명령은 다음과 같습니다.

  • 39 1,13 * * * : 매일 1시 39분, 13시 39분에 실행하도록 합니다.
  • root : 명령이 root 권한으로 실행하도록 합니다.
  • certbot renew --no-self-upgrade : Let's Encrypt 인증서를 갱신합니다.
    renew는 Certbot이 이전에 얻은 모든 인증서가 점검하고 만료 날짜가 다가오고 있는 인증서를 갱신합니다.
    --no-self-upgrade 플래그를 사용하면 Certbot이 사용자의 개입 없이 자체 업그레이드하지 않습니다.

- 시간 설정은 임의로 작성한 것이지만, Certbot 개발자는 최소한 매일 두 번 명령을 실행하는 것을 제안한다고 합니다.

- 시간 설정은 90일에 안쪽으로 원하시는 날짜에 맞춰서 작성하셔도 되겠습니다.

- 모든 설정이 끝났다면 cron을 재실행하여 적용시키도록 합니다.

sudo systemctl restart crond

- 이제 cron을 통해서 인증서도 자동으로 갱신이 될 것 입니다.


출처

- https://jojoldu.tistory.com/270?category=635883 

- https://m.blog.naver.com/hsmang/221836126462

반응형
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!