EC2 인스턴스에 HTTPS를 적용하려면 우선 SSL 인증서를 발급받아야 한다.
무료로 SSL 인증서를 받을 수 있는 Let's Encrypt를 사용했다.
1. Certbot 설치
Certbot: Let's Encrypt 인증서를 발급받고 자동갱신 하기 위함
$ sudo apt-get update
$ sudo apt-get install certbot python3-certbot-nginx
2. SSL 인증서 발급
sample.com과 www.sample.com 부분에 실제 도메인을 넣어준다.
# sudo certbot --nginx -d <도메인>
$ sudo certbot --nginx -d sample.com
3. 인증서 자동 갱신 설정
Let's Encrypt를 사용해서 발급된 인증서는 3개월 동안 유효하다. 아래 명령어를 입력해서 갱신을 한 번 시도해서 에러가 발생할지 여부를 살펴본다.
$ sudo certbot renew --dry-run
명령어 실행 시에 에러가 발생하지 않았다면 이제는 --dry-run 옵션을 빼고 실제 갱신을 수행해준다.
$ sudo certbot renew
인증서 정보를 확인해본다.
$ sudo certbot certificates
3개월 중 남은 89일동안 인증서가 유효한 것을 확인할 수 있다.
4. 자동 갱신 정보 확인하기
아래 명령어를 입력해보면 certbot에 적용된 timer를 확인할 수 있다.
$ sudo systemctl list-timers
아래 명령어를 사용해보면 certbot.timer에 대한 더 자세한 내용을 확인해 볼 수 있다.
$ sudo systemctl status certbot.timer
5. Nginx 파일에 SSL 정보 넣어주기
Nginx 설정 파일 열기
$ sudo vi /etc/nginx/sites-available/default
default 파일에서 아래 부분처럼 ssl에 대한 정보를 넣어준다. sample.com에는 실제 도메인 정보를 넣어준다.
(아마 # managed by Certbot라는 주석과 함께 자동 세팅 되어있을 것이다.)
server {
listen 443 ssl;
server_name sample.com;
ssl_certificate /etc/letsencrypt/live/sample.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/sample.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
이제 Nginx 설정이 제대로 됐는지 테스트를 진행한다.
$ sudo nginx -t
이상이 없다면, 아래 명령어를 통해 Nginx를 재시작한다. 상태도 확인해준다.
$ sudo systemctl restart nginx
$ sudo systemctl status nginx
'Linux' 카테고리의 다른 글
[Nginx] 하나의 서버에서 path로 서비스 분기하기 (1) | 2024.09.03 |
---|---|
[Ubuntu] timezone 변경하기 (0) | 2024.09.01 |
Ubuntu에 Node/npm 설치하기 (0) | 2024.07.08 |
Linux 실시간 로그 보기: tail 명령어 (0) | 2024.07.08 |