Let'sEncrypt 설치후 AWS에 적용하기

Posted by , November 04, 2021
LetsEncryptAwsInfra
Series ofLetsEncrypt

thumbnail

22.09.25 내용 추가

여기서 진행한 방식의 경우 standalone 방식이다.
이 방식은 80포트를 강제로 내려서 인증 대상이 진짜 사용하는 서비스인지를 체크하기에 매우 비효율적인 방식이다.

최근 방식의 경우 Webroot나 DNS 인증을 사용하는데, 이번에 DNS 인증에 대하여 포스팅을 진행했다.
Webroot도 사용하지만 와일드카드(ex: *.api.com 등) 인증이 불가하기 때문에 DNS 인증을 사용할 것을 추천한다.
DNS 인증 방식이 필요한 경우 아래 포스팅을 참고하자.

LetsEncrypt 적용법 (DNS 인증 & AWS)


Let'sEncrypt?

이번에 서비스를 준비하면서 EC2에서 하나씩 올려서 해보기로 했다.

사실 AWS 기반이라 로드벨런서에 인증서 물리면 되는데...
전에 해보던게 생각 나기도 했고..

일단 서비스 규모가 더 커지면 그 때 안정적으로 가고 지금은 빌드업 수준으로 해보기로 했다.

일단 뭐 Let'sEncrypt에 대한 자세한 것은 이미 알고 있다는 가정 하에 바로 설치법부터 들어간다.

그 전에 환경은..

AWS 기반 EC2 Ubuntu 20.04 LTS 기준으로 작업을 진행
Nginx 사용 <- 중요하진 않음


Part 1 설치 커맨드

아래의 커맨드로 하나씩 진행하였다

sudo apt update
sudo snap install core; sudo snap refresh core
sudo apt-get remove certbot
sudo snap install --classic certbot # 설치
sudo ln -s /snap/bin/certbot /usr/bin/certbot # 링크
sudo certbot certonly --email [인증에 사용할 이메일] --standalone -d [적용할 도메인]  실행

커맨드 설명은 아래와 같다

1번 : 설치 전 업데이트 처리
2번 : 필요한 것들 설치
3번 : 기존에 설치된 certbot이 있다면 제거
4번 : certbot 설치
5번 : 심볼릭 링크 생성
6번 인증서 만드는데 email은 인증에 대한 대표자 메일(필자는 주로 쓰는 메일 사용)을 적고 -d는 적용할 도메인을 적어준다 (elfinlas.io.xx 등)

6번 명령어 이후 아래와 같이 뜨면 정상적으로 된 것이다.

ubuntu@ip$ sudo certbot certonly --email test@test.com --standalone -d dev.net
Saving debug log to /your/some/path/letsencrypt.log
Requesting a certificate for dev.net

Successfully received certificate.
Certificate is saved at: /your/some/path/letsencrypt/live/dev.net/fullchain.pem
Key is saved at:         /your/some/path/letsencrypt/live/dev.net/privkey.pem
This certificate expires on 9999-99-99. <= 여긴 인증기간은 3개월인가 줘서 사람마다 틀림
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

커맨드에 대해 좀더 설명이 필요한 분은 이곳 에서 직접 확인해보자

Part 2 AWS 작업

이렇게 진행하고 나서 AWS 콘솔로 가준다.
콘솔에서는 다음과 같은 절차로 진행한다.

  1. AWS 콘솔에서 Certificate Manager 이동
  2. 인증서 선택에서 각 항목에 해당 하는 값을 가져온다. (아까 생성한 pem 파일을 사용)
    1. 인증서 본문 => cert.pem
    2. 인증서 프라이빗 => privkey.pem
    3. 인증서 체인 => fullchain.pem
  3. 마무리 하면 ec2에 접속해서 콘솔에서 아랴와 같이 nginx를 재시작 해준다.
    1. sudo service nginx restart

아마 다른 블로그에서는 설치법만 나오고 보통 AWS 설명도 약간 부실했는데 직접 찾아보고 적용한 방법이다.

그리고 기반은 nginx 인데 아파치 쓰거나 다른 미들웨어 쓰시는 분들은 똑같이 서비스만 재시작 하면 된다.