지금 우리의 서버는 https로 접근이 안된다. 즉, 보안에 매우 취약한 것을 알 수 있다.
Let's Encrypt를 이용하여 우리 도메인에 http가 아닌 https를 적용해보자.
certbot 설치
Let's Encrpt를 사용하여 SSL 인증서를 얻을건데, 이를 위해 certbot을 다운하여야한다.
우선 업데이트 해주고,
sudo apt update
certbot 저장소를 따로 만들어준다.
sudo add-apt-repository ppa:certbot/certbot
sudo add-apt-repository -r ppa:certbot/certbot #does not have Release file 오류가 난다면 시도해볼 것
여기서부터 Ubuntu 버젼 차이로 인한 오류가 굉장히 많이 난다.
자신의 OS에 따른 설치법은 아래에서 확인할 수 있다.
각설하고, 나는 does not have Release file 오류가 나서 두번째 명령어를 실행하였다.
이후 다시 update 해주어야한다.
sudo apt update
이제 certbot을 다운할 차례이다.
sudo apt install python-certbot-nginx
sudo apt install python3-certbot-nginx #Unalbe to locate package ~ 나올 시 시도해볼 것
마찬가지로 다운받을 수 없다는 오류(Unable to locate package~)가 나오면 python3-certbot-nginx를 다운해준다.
2. Nginx 설정 파일 변경
certbot을 사용하기 위해선 nginx 설정파일의 server_name을 우리가 사용한 도메인 명으로 변경하여야만 한다.
vi로 설정파일을 열어주자
sudo vi /etc/nginx/sites-available/default
server_name에 우리가 사용한 도메인 명을 넣어주도록 하자
sudo service nginx restart
설정파일을 변경했으니 당연히 nginx도 재실행 시켜준다.
이제 우리는 HTTP가 아닌 HTTPS로 접근할 것이다. HTTP와 HTTPS의 포트 번호는 다르다. 이 말은 즉슨, AWS EC2의 인바운드 큐칙에서 HTTPS 포트를 열어주어야한다.
바로 추가해주도록 하자.
이제 SSL 인증서를 받을 준비가 끝났다.
sudo certbot --nginx -d example.com -d www.example.com
SSL 인증서를 받을 수 있는 명령어를 입력해주고,
이메일을 입력해주자.
이제 등록이 완료되었을 것이다.
허나 Let's Encrypt의 인증서는 90일 동안 유효하기 때문데 갱신이 필요한데 이를 자동 갱신하기 위해 다음 명령어를 입력해주자.
sudo certbot renew --dry-run
자 이제, https://를 앞에 붙이고 도메인에 접근해주면?
다음과 같이 https로 접근이 잘 된 것을 볼 수 있다.
HTTP Redirect to HTTPS
그러나 http로 똑같이 다시 접근해보면 아직도 보안이 좋지 않은 http 접근이 되는 것을 알 수 있다.
Nginx설정 파일을 통해 http로 접속해도 https로 접근되게끔 바꾸어 주자
sudo vi /etc/nginx/sites-available/default
설정파일로 우선 가보도록 하자.
보면 원래 쓰던 server block이 http가 아니라 https 접근 server block으로 바뀌어 있는 것을 알 수 있다.
listen이 해당 포트로 접근 시 해당 server block에 접근하게 해주는 것이다.
아래에 서버블록이 하나 더 생긴 것을 알 수 있는데, 여기서 Http 접근을 https접근으로 redirect 시킬 수 있다.
location 박스를 만들어서 여기에 우선 접근하면 https://로 redirect 시켜주자
location 박스는 포트에 해당 하는 서버블록에 접근 시 가장 먼저 불리는 박스이다.
이 후 설정 파일을 건들었으니 nginx를 재실행 해준다.
sudo service nginx restart
이제 http로 도메인에 접근해도 https://로 바뀌어 있는 것을 확인할 수 있다.
'서버 > 환경설정' 카테고리의 다른 글
[서버 개발 환경 구축] 9. AWS RDS DB 인스턴스 생성 및 Datagrip 연결 (0) | 2022.07.24 |
---|---|
[서버 개발 환경 구축] 8. 서브 도메인 및 IP to Domain redirection (0) | 2022.07.24 |
[서버 개발 환경 구축] 6. 원하는 도메인 적용 (가비아) (0) | 2022.07.14 |
[서버 개발 환경 구축] 5. Mysql Datagrip 연결 (0) | 2022.07.13 |
[서버 개발 환경 구축] 4. AWS EC2 탄력적 IP 할당 (0) | 2022.07.13 |