본문 바로가기

웹 프로그래밍/Back-End

Let's Encrypt를 사용하여 Nginx에 SSL 적용하고 Django 실행

반응형

Ubuntu 에서 Let's Encrypt를 사용하여 Nginx에 SSL 적용하고 Django 실행

Let's Encrypt

  • 무료 SSL/TLS 인증서를 얻고 설치할 수 있는 인증 기관. 웹 서버에서 암호화 된 HTTPS를 사용할 수 있게 해줍니다.
  • Cerbot 이라는 자동화 클라이언트를 제공하여 Nginx에서 인증서를 획득하고 설치하는 전체 프로세스가 자동화 되어 있습니다.

환경

1. Certbot 설치

  • 레포지토리 추가
$ sudo add-apt-repository ppa:certbot/certbot
  • Cerbot의 Nginx 패키지 설치
$ sudo apt install python-certbot-nginx

2. Nginx 설정 확인

  • site-available 로 경로 이동
$ cd /etc/nginx/sites-available
  • default 파일을 수정하기 위해 편집기로 이동합니다.
$ sudo vi default
  • server_name 추가
server_name 서버명(DNS)
  • 구문 정상 동작 확인
$ sudo nginx -t
$ sudo systemctl reload nginx

3. SSL 인증서 가져오기

  • Nginx 플러그인 사용
$ sudo certbot --nginx -d 서버명(DNS)
  • https 설정 선택 (저는 2번을 선택하여 http 연결을 https로 리다이렉트 했습니다.)
Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
// http 트래픽을 https로 리다이렉트 하실건가요, 아니면 http 접근을 막으실 건가요?
-------------------------------------------------------------------------------
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.
// 리다이렉트 - 모든 http 연결을 https로 리다이렉트 합니다. 웹서버 설정을 변화시킬수 있습니다. 변화된 설정은 다시 복구가 가능합니다.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
  • 엔터를 누르게 되면 cerbot 프로젝트가 성공되고, 인증서가 저장된 위치를 알려줍니다.
// 공개 키가 저장된 장소
/etc/letsencrypt/live/서버명(DNS)/fullchain.pem

// 비밀 키가 저장 된 장소
/etc/letsencrypt/live/서버명(DNS)/privkey.pem

4. SSL 자동으로 갱신

  • Let's Encrpyt 인증서는 90일 동안만 유효하기 때문에 cerbot 패키지를 설치하여 자동화 시킬 수 있습니다.
$ sudo certbot renew --dry-run

5. SSL이 적용된 Django 프로젝트 구동

  • https가 적용된 페이지에서 기존에 있었던 backend 프로젝트를 runserver 구동하면 제대로된 통신이되지 않습니다.
  • django-sslserver 를 설치합니다.
$ pip install django-sslserver
  • settings.pyINSTALLED_APPS 에 다음 구문을 추가합니다.
INSTALLED_APPS = [
    ...
    'sslserver',
]
  • 적용한 Let's Encrypt 인증키를 이용하여 다음과 같은 구문으로 django 프로젝트를 구동합니다.
  • 3번의 인증서 가져오기에서 공개키와 비밀키가 저장된 장소를 넣어 실행시킵니다.
python manage.py runsslserver ip주소:8080 --certificate /etc/letsencrypt/live/서버명(DNS)/fullchain.pem --key /etc/letsencrypt/live/서버명(DNS)/privkey.pem
반응형

'웹 프로그래밍 > Back-End' 카테고리의 다른 글

AWS EC2 / Ubuntu / Nginx 에서 Django 배포하기  (0) 2020.10.21
Django - SQL  (0) 2020.09.10
Django - CRUD  (0) 2020.09.03
Django 기초  (0) 2020.08.28
Servlet Parameter 와 한글처리  (0) 2020.03.11