Ubuntu 환경에서 HTTPS 적용 A to Z
2022. 06. 10.
#클라우드
#프로젝트
NHN Cloud(Ubuntu 18.4) + nginx 환경에서 SSL(HTTPS) 적용하는 방법에 대하여 알아보자
우선 전체적인 Flow
- 도메인 구매
- DNS 설정 (도메인을 IP 주소에 설정)
- SSL 관련 패키지 설치 (certbot?) ← LetsEncrypt 가 포함되어 있는거 같다!
- NGINX 설정 (server 에 도메인 등록하기)
- 방화벽 허용 및 확인
- SSL 인증서 가져오기
- SSL 인증서 자동으로 갱신
- 도메인 구매
- 나는 가비아에서 구입함
- DNS 설정 (도메인을 IP 주소에 연결)
- 1 ~ 2 단계는 해당 정보 참고하기 (아래 url)
- 적용 후 테스트하기
- 현재 백엔드와 연동했기 때문에 접속이 되는 것을 확인할 수 있다.
nslookup www.seunggyu.shop ns.gabia.co.kr # Server: ns.gabia.co.kr # Address: 211.234.118.50#53 # Name: www.seunggyu.shop # Address: 133.186.244.169
nslookup seunggyu.shop ns.gabia.co.kr # Server: ns.gabia.co.kr # Address: 211.234.118.50#53 # Name: seunggyu.shop # Address: 133.186.244.169
- 관련 패키지 설치 ← 여러 글들을 참고해서 정확하지 않을 수 있다.! (나중에 다시 설정해보기)
# sudo apt update # sudo apt install software-properties-common # sudo add-apt-repository universe # sudo add-apt-repository ppa:certbot/certbot # sudo apt update # sudo apt install certbot python3-certbot-nginx ## 또는 # sudo add-apt-repository ppa:certbot/certbot # sudo apt install python-certbot-nginx
- NGINX 설정 (server 에 도메인 등록하기)
sudo vim /etc/nginx/sites-available/default # name server 에 suenggyu.shop, www.seunggyu.shop 등록 ## nginx 설정 부분 # ... # server_name seunggyu.shop; ## 해당 구문 추가
## nginx 설정 확인 sudo nginx -t sudo system reload nginx
- 방화벽 허용 및 확인
필자의 경우 NHN Cloud 에서 보안 그룹으로 설정하기 때문에 방화벽 허용 명령어는 수행하지 않음.
방화벽 상태만 확인함.
sudo ufw status # Status: active # To Action From # -- ------ ---- # 80/tcp ALLOW Anywhere # 443/tcp ALLOW Anywhere # 22/tcp ALLOW Anywhere # 80/tcp (v6) ALLOW Anywhere (v6) # 443/tcp (v6) ALLOW Anywhere (v6) # 22/tcp (v6) ALLOW Anywhere (v6)
- SSL 인증서 가져오기
- https://www.ssllabs.com/ssltest/ 해당 사이트에서 도메인을 서버를 테스트할 수 있다.
sudo certbot --nginx -d seunggyu.shop -d www.seunggyu.shop sudo certbot --nginx -d seunggyu.kr -d www.seunggyu.kr # 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): # ---- 내가 적용한 것 (multi domain) # sudo certbot --nginx -d seunggyu.kr -d www.seunggyu.kr -d seunggyu.shop -d www.seunggyu.shop
1, 2 중에 입력 → 2 선택 → 그러면 자동으로 nginx 에 적용됨!
1의 경우: 리다이렉트 없음 - 웹서버 설정에 아무런 변화도 없습니다.
2의 경우: 리다이렉트 - 모든 http 연결을 https로 리다이렉트 합니다. 웹서버 설정을 변화시킬수 있습니다. 변화된 설정은 다시 복구가 가능합니다.
## 2 선택 # IMPORTANT NOTES: # - Congratulations! Your certificate and chain have been saved at: # /etc/letsencrypt/live/seunggyu.shop/fullchain.pem # Your key file has been saved at: # /etc/letsencrypt/live/seunggyu.shop/privkey.pem # Your cert will expire on 2021-08-18. To obtain a new or tweaked # version of this certificate in the future, simply run certbot again # with the "certonly" option. To non-interactively renew *all* of # your certificates, run "certbot renew" # - If you like Certbot, please consider supporting our work by: # # Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate # Donating to EFF: https://eff.org/donate-le
선택을 하고 엔터를 누르게 된다면, 구성이 업데이트되고, Nginx가 자동으로 재시작 됩니다.
certbot은 프로세스가 성공되었으며, 인증서가 저장된 위치를 알려주며 종료되게 됩니다.
- 확인
https://seunggyu.shop/
으로 접속
- SSL 자동으로 갱신시키기 ← 아직 해보지 않음, 적용해보고 수정하겠음.
- 나는 에러 없이 잘 동작했음. (좀 더 알아보고 정리해보기)
cron-tab 적용해야함
sudo certbot renew --dry-run
reference
- 도메인과 IP 연결하는 방법
- Ubuntu 환경에서 SSL 적용하는 방법
- 처음에 도입 (패키지 설치 부분?)