반응형
Ubuntu 에서 Let's Encrypt를 사용하여 Nginx에 SSL 적용하고 Django 실행
- 김피노님 블로그 : Ubuntu 18.04에서 Let's Encrypt를 사용하여 Nginx에 SSL을 적용하는 방법 를 참고하여 글을 작성했습니다.
Let's Encrypt
- 무료 SSL/TLS 인증서를 얻고 설치할 수 있는 인증 기관. 웹 서버에서 암호화 된 HTTPS를 사용할 수 있게 해줍니다.
- Cerbot 이라는 자동화 클라이언트를 제공하여 Nginx에서 인증서를 획득하고 설치하는 전체 프로세스가 자동화 되어 있습니다.
환경
- 서버 : Ubuntu
- WAS : Nginx
- Front : Vue.js (https://daily-life-of-bsh.tistory.com/224)
- Back : Django (https://daily-life-of-bsh.tistory.com/223)
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.py
의INSTALLED_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 |