서버개발 SpringBoot

EC2 Instance 에 HTTPS 적용 / HTTPS Redirect / Let's Encrypt / Certbot

아뵹젼 2022. 4. 7.

Let's Encrypt

Let's Encrypt 는 SSL 인증서를 무료로 발급해주는 CA(Certificate Authorities)이다.

Certbot

Let’s Encrypt의 SSL인증서는 ACME 프로토콜을 준수하는 프로그램을 이용해 발급을 받을 수 있는데 Let’s Encyrpt는 Cerbot 사용을 권장하고 있다.

 

우분투 에서 제공하는 Certbot 패키지가 이미 존재하지만, 오래된 버전이다.

따라서 레포지토리를 이용해 설치를 할 것이다.

$ sudo add-apt-repository ppa:certbot/certbot

 

Certbot의 Nginx 패키지 설치

$ sudo apt install python-certbot-nginx

 

SSL 인증서

Certbot은 다양한 플러그인을 통해 SSL 인증서를 획득하는 다양한 방법을 제공한다.

Nginx플러그인은 필요할 때마다 Nginx를 재구성하고 구성을 다시 로드한다.

$ sudo certbot --nginx -d jyeon.shop -d www.jyeon.shop

 

이메일을 입력하라는 명령이 나오면, 입력하고 여러 질문에 yes / no 로 대답하면 된다.

또한 다음과 같은 두 가지 선택사항이 나온다.

1 : HTTP 연결을 HTTPS로 리다이렉트 하지 않음

2 : HTTP연결을 HTTPS로 리다이렉트함

모든 http 연결을 https로 리다이렉트 하도록 2번을 선택했다.

 

 

https 설정이 모두 완료되었다!

ssllabs.com/ssltest/ 에서 테스트를 해보자.

www.ssllabs.com/ssltest/

 

SSL Server Test (Powered by Qualys SSL Labs)

SSL Server Test This free online service performs a deep analysis of the configuration of any SSL web server on the public Internet. Please note that the information you submit here is used only to provide you the service. We don't use the domain names or

www.ssllabs.com

 

 

처음에는 오류가 발생하는데, 이는 EC2 보안그룹에서 SSL 에 대한 인바운드 규칙을 설정하지 않았기 때문이다. 

다음과 같이 HTTPS 에 대한 인바운드 규칙을 설정해주고 나서 다시 테스트를 해보았다.

잘된다!!ㅎㅎ

 

이제 http://도메인을 입력해도 다음과 같이 자동으로 https 로 리다이렉트 된다.

도메인 옆에 있는 자물쇠 모양이 https 를 뜻한다!

 

 

Certbot 자동 갱신 확인

Let's Encrypt의 인증서는 90일 동안만 유효하므로, 90일마다 갱신해줘야 한다.

그러나 나는 certbot 패키지를 설치하였기 때문에 이미 갱신에 대한 자동화가 설정되어있다.

/etc/cron.d 내의 스크립트는 하루 두번씩 실행되어 만료일까지 30일 이내의 모든 인증서를 자동으로 갱신 시킬 수 있습니다.

갱신 프로세스가 잘 동작하는지 테스트를 해보려면 다음 명령어를 입력하면 된다.

$ sudo certbot renew --dry-run

오류가 나오지 않았으므로 모든 자동 갱신 프로세스 설정이 잘 완료된 것이다.

 

 

 

댓글