오랜만에 블로그를 써본다!!
그동안 과제와 설계에 죽어나는 3학년 인생을 살고있었다..
현재 구축해둔 서버 환경은 다음과 같다.
OS: Ubuntu 18.04 (LTS) -> AWS EC2로 클라우드 연결
웹서버 : Nginx
BL : PHP
DBMS : MySQL
도메인 구축 및 DNS 레코드 설정 완료(가비아로 등록)
Let's Encrypt란?
- 무료의 TLS/SSL 인증서를 쉽게 가져오고 설치할 수 있는 방법을 제공하는 CA(인증 기관)
- 웹 서버에서 암호화된 HTTPS를 사용할 수 있음
(1) Certbot 설치
우선 Certbot를 위한 repository를 추가해보자.
$ sudo apt update
$ sudo apt upgrade
$ sudo add-apt-repository ppa:certbot/certbot
다음으로, Certbot의 Nginx 패키지를 설치합니다.
$ sudo apt install python-certbot-nginx
(2) Nginx Configuration 설정
Nginx 기본 설정 파일(default)로 이동 후, 인증서를 적용할 도메인 이름을 설정하자!
$ cd /etc/nginx/sites-available
$ sudo vi default
변경을 하고 잘 되는지 확인하기 위해서 테스트를 진행 (-t)
$ sudo nginx -t
Nginx서버를 재시작
$ sudo service nginx restart
(3) 방화벽의 HTTPS 허용
- Ubuntu는 기본적으로 ufw라는 기본적인 방화벽을 가지고 있다.
HTTPS에 대한 방화벽 허용 설정이 필요하나, 필자의 서버환경인 AWS EC2 인스턴스의 경우는 기본으로 방화벽이 비활성화 되어있다.
$ sudo ufw status
비활성되어 있으면 넘어가자
(4) SSL 인증서 get
원하는 도메인을 지정해서 Nginx플러그인을 통해 인증서를 획득하면 된다.
$ sudo certbot --nginx -d 도메인url
// server에 여러개를 등록 했을경우 -d 도메인url을 뒤에 더 추가하면 됨
- 이메일을 입력하라고 나온다. 이메일을 입력해주자.
- A를 눌러서 동의
- 이메일 관련 알림 설정이 나오는데 상관없다! (필자는 N)
여기서 만약 도메인 오류가 발생한다면 도메인을 등록한 곳에서 DNS 레코드를 추가해 주어야 한다.
(필자는 가비아에서 A타입으로 @ 와 www를 등록하였다.)
이렇게 넘어가면
1. No redirect - ~~~
2. Redirect - ~~~
이런 문장이 나올 것이다. 이는
1 : HTTP 연결을 HTTPS로 리다이렉트 X
2 : HTTP연결을 HTTPS로 리다이렉트함
http로 접속했을때 https로 리다이렉트 해주므로 필자는 2번으로 했다!
이렇게 되면 결과가 나오며 https://www.ssllabs.com~~이라는 나올 것이다!
(작업을 끝낸 후 블로그를 작성해서 캡쳐화면이...죄송합니다)
클릭하여 이동하면 테스트를 진행할 것이다. (만약 직접 들어간다면 아래 사이트에서 도메인 주소 입력)
www.ssllabs.com/ssltest/
이렇게 위 사진과 같이 테스트를 진행할 것이다.
※ 만약 Assessment failed 오류가 뜬다면 SSL이 사용하는 HTTPS에 대한 포트 포워딩을 해주어야 한다!!
AWS ec2 보안 그룹 - 인바운드 규칙 - 인바운드 규칙 편집에서
443(HTTPS의 포트번호)에 대한 포트를 열어주면 된다.
그 후 테스트를 하면 잘 될 것이다.
(5) Certbot 자동 갱신 확인
Let's Encrypt의 인증서는 90일 동안만 유효하므로, 90일마다 갱신시켜줘야 한다.
하지만 설치하는 과정에서 /etc/cron.d에 이미 자동으로 갱신시켜주는 커맨드가 추가되어 있어 따로 설정할 필요는 없다.
만약, 갱신 프로세스가 잘 동작하는지 테스트를 해보고 싶다면 아래 명령어를 입력해보자
$ sudo certbot renew --dry-run
잘 실행되면 설정이 잘 된 것이다!
만약 자동 갱신이 실패할 경우 앞서 지정한 이메일로 인증서 만료 경고 메시지가 갈 것이다.
설정이 모두 완료가 되었으므로 Nginx의 서버를 재시작하자.
$ sudo service nginx restart
도메인 주소를 입력하면 자물쇠 모양이 생기며 https가 잘 적용된 것을 확인할 수 있다.
'Tech > Server' 카테고리의 다른 글
[Linux] Sudo: unable to resolve host explained 발생 시 해결 방법 (0) | 2023.04.18 |
---|---|
[아키텍처] 계층형, MVC, 마이크로서비스, 헥사고날 아키텍처, 장단점 (0) | 2023.04.02 |
[Spring, Redis] Spring boot에서 redis 서버 여러개 사용하는 방법(하나의 AWS EC2 환경에서 구현하기) (0) | 2023.02.17 |
[Spring, Redis] AWS EC2환경 spring boot에서 redis 연결방법, 연결 안될때 (connection refused) (0) | 2023.02.08 |
[DB 구축] AWS RDS 구축하기 (MySQL) (0) | 2022.04.08 |