m1ndy5's coding blog

Let’s Encrypt사용해서 https 설정하기 & redirection(ubuntu 18.04 기준) 본문

settings

Let’s Encrypt사용해서 https 설정하기 & redirection(ubuntu 18.04 기준)

정민됴 2023. 2. 13. 16:48

SSL, TSL, HTTPS 란?

  • SSL : 웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술 -> 해커가 개인 데이터나 금융 데이터 등의 전송되는 정보를 보거나 훔치는 것을 방지
  • TSL : SSL의 향상된, 더욱 안전한 버전. SSL이 더욱 일반적인 용어이기 때문에 DigiCert는 보안 인증서를 여전히 SSL로 언급하지만 DigiCert에서 SSL을 구입하면 가장 신뢰할 수 있는 최신 TLS 인증서를 얻을 수 있음.
  • HTTPS : 웹사이트가 SSL/TLS 인증서로 보호되는 경우 HTTPS가 URL에 표시됨. 사용자는 브라우저 표시줄의 자물쇠 기호를 클릭해 발급 기관 및 웹사이트 소유자의 상호를 포함한 인증서의 세부 정보를 볼 수 있음.

1. Cerbot 설치

업데이트 및 저장소를 만들어 준다.

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update

2. Nginx 설정

$ sudo vi /etc/nginx/sites-available/default


기존 80포트에 연결되어 있는 서버를 내 도메인으로 바꿔준다. ex) server_name m1ndy52.shop
설정이 완료되었다면 esc를 누르고 :wq! 를 입력후 저장하고 나간다.

$ sudo nginx -t
$ sudo service nginx reload

위의 명령어를 통해 nginx를 재시작 해준다.

3. SSL 인증 받기

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

위의 명령어를 통해 ssl 인증을 받고 싶은 도메인을 입력한다.
여러개를 받고 싶은 경우 -d domain1 -d domain2 ... 이런식으로 입력하면 된다.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
  1. http로 들어온 접근을 https로 리다이렉션 해주지 않습니다.
  2. http로 들어온 모든 접근을 https로 리다이렉션 해줍니다.
    나는 http로 들어온 접근들도 모두 https로 바뀌길 바래서 2번을 선택하였다.

Cerbot을 설치할 때 /etc/cron.d에 인증서를 계속 갱신하는 커멘드가 추가 되어있어 자동으로 갱신을 해준다.
갱신이 잘 되는지 확인하려면

$ sudo certbot renew --dry-run

을 통해 확인해보면 된다.

4. EC2에서 인바운드 규칙 443포트 열어주기

https는 기본적으로 443포트를 사용하기 때문에 이를 열어주는 규칙을 추가해야한다.


ec2 -> 인스턴스 -> 보안 -> 보안 그룹 -> 인바운드 규칙 편집을 눌러 위 사진과 같은 규칙을 추가해주고 저장한다.

이제 마지막으로 https가 잘 적용됐는지 확인해보자!

 

https://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

위 사이트에 들어가서 https를 적용한 도메인을 입력하고 확인해보자

이렇게 뜨면 성공이다!!

 

5. IP로 접속했을 때 도메인으로 리다이랙션 하기

/etc/nginx/sites-available/default 파일 밑에

server {
        listen 80;
        server_name xx.xx.xx.xx;
        return 301 https://domain.xxx/$request_uri;
}

을 넣어주면 xx.xx.xx.xx로 접속했을 때 도메인으로 리다이랙션이 이루어진다.