
sudo apt-get install letsencrypt -y 명령을 통해 letsencrypt를 설치한다.
그리고 sudo apt upgrade -y 명령을 진행해준다.
sudo apt install certbot python3-certbot-nginx 명령을 통해 Nginx 웹서버용 파이썬3를 설치한다.
다른 블로그를 보면 python-certbot-nginx 명령을 사용하는데 파이썬3로 업그레이드 되면서 파이썬3를 사용하라는 권고를 받는다고 한다. 그래서 본인은 처음부터 파이썬3로 설치했다. 



Certbot은 다양한 플러그인을 통해서 SSL 인증서를 얻는 다양한 방법을 제공한다. Nginx의 경우에는 필요할 때마다 Nginx를 재구성하고 구성을 reload하는 방식을 사용한다.
SSL 인증서를 받기 위해 sudo certbot --nginx -d xx0hn.site -d www.xx0hn.site 명령을 실행한다. 도메인을 더 추가하고 싶다면 -d 도메인이름을 뒤에 붙이면 된다. 처음 인증서를 설치하면 다음과 같이 이메일 등록, 약관 동의를 진행하게 된다.
그리고 기존 http 연결을 어떻게 설정할 것인지 선택해야 되는데 별 생각없이 1로 설정을 했다. (1을 입력한다면 HTTP 연결을 HTTPS로 리다이렉트 하지 않고, 2를 입력한다면 HTTP 연결을 HTTPS로 리다이렉트 한다.)
설정까지 끝나면 구성이 업데이트되고 Nginx가 재시작된다.
http 연결 설정을 아무것도 모른 상태에서 진행해서 sudo certbot --nginx -d xx0hn.site -d www.xx0hn.site 명령을 다시 실행시켰다. 
인증서 다운로드 및 설치가 완료되었다는 내용이 나온다. 다음 터미널 화면의 상단을 보면 You should test your configuration at: 이라는 문구가 보인다. 아래 url로 접속해본다. 
SSL Labs Server Test로 이동하게 되고 도메인을 test한다. Assessment failed:Unable to connect to the server 라는 오류 메세지가 뜬다. 오류가 발생한 이유는 AWS EC2 인스턴스의 보안 그룹에 SSL이 사용되는 https(443)포트를 추가해주지 않았기 때문이다. 
AWS로 들어가 실행중인 EC2 인스턴스의 보안 설정에서 다음과 같이 인바운드 규칙을 추가해준다. 
인바운드 규칙을 추가해줬으니 sudo certbot --nginx 명령을 다시 실행해준다. 
SSL Labs Server Test에서 도메인을 입력해서 다시 test를 진행한다. Submit을 누르면 이전의 오류 화면이 다시 뜨는데 Clear cache를 눌러 test를 다시 진행하도록 한다. 
test가 끝나면 다음과 같이 등급을 확인할 수 있다. 
위와 같이 오류가 없다면 모든 설정이 완료된 것이다. 인증서 자동 갱신 프로세스가 실패할 경우에는 Let's Encrypt는 지정 이메일로 인증서 만료 경고 메세지를 보낸다.