일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파이썬
- C++
- DP
- 스타벅스
- 모두를 위한 딥러닝
- 라인
- jvm
- 스프링 프레임워크
- BFS
- STL
- C/C++
- 딥러닝
- leetcode
- Java
- 다이나믹프로그래밍
- 프로그래밍언어론
- 프로그래머스
- binary search
- dfs
- Python
- 벤쿠버
- 백준
- 알고리즘
- 백트래킹
- 릿코드
- spring
- 라인플러스
- 머신러닝
- 시애틀
- Spring Framework
- Today
- Total
케이스윔의 개발 블로그
[Django] https 설정(openssl, stunnel) 본문
django로 웹서버를 구축하고 프로젝트를 진행하던 와중 https 설정을 해야 할 일이 생겼다. 사실 http, https 차이점만 공부해봤었지 이렇게 적용을 해본 적은 없었다. 그래서 구글링을 통해서 이것저것 찾아보았는데, 2가지의 방법이 있었다.
1. PythonAnywhere에서 Lets' Encrypt 보안인증서를 적용하는 방법
2. openSSL 을 이용하여 인증기관을 만들고 Self signed certificate(SSC) 인증서 발급받아 적용하기
1번은 어느 사이트에 한글로 쉽게 설명이 되어있었는데 생각보다 절차가 번거로워 보였고, 무료 인증서를 발급 후 인증기관에 적용요청까지 해야 해서 시간이 좀 걸린다고 했다! 그래서 나는 2번을 택했고 최대한 한글로 된 문서를 찾으려 했지만 잘 정리되어있는 글들은 없어서 이 글을 적어서 남기려고 한다.
우선 openSSL과 stunnel 을 설치해야 한다. 설치 파일은 Mac OS에서 성공했던 내 경험기준이다!
1. openSSL 설치 (https://www.openssl.org)
$ wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
$ tar xvfz openssl-1.1.0e
$ cd openssl-1.1.0e
$ ./config
$ make
$ make test
$ make install
2. stunnel 설치 (https://www.stunnel.org/)
$ wget https://www.stunnel.org/downloads/stunnel-5.48.tar.gz
$ tar xvfz stunnel-5.48
$ cd stunnel-5.48
$ ./configure
$ make
$ make test
$ make install
3. Django 프로젝트를 만들 디렉토리로 이동해서 stunnel을 위한 데이터들을 저장한 디렉토리를 만든다.
$ mkdir stunnel
$ cd stunnel
4. openSSL을 이용하여 SSL 통신을 위해 사용할 로컬 인증서와 키를 만든다.
$ openssl genrsa 1024 > stunnel.key
$ openssl req -new -x509 -nodes -sha1 -days 365 -key stunnel.key > stunnel.cert
$ cat stunnel.key stunnel.cert > stunnel.pem
5. 해당 인증서와 키를 사용하기 위해 config 파일을 만든다.
$ vim dev_https.conf
파일 내용은 아래와 같다.
[https]
accept=8443
connect=8001
TIMEOUTclose=1
cert = stunnel/stunnel.pem -> 본인환경에서 아까 생성한 stunnel.pem 의 절대경로를 입력한다.
이렇게 작성을 하면 stunnel은 포트 8443에서 수신을 대기하도록 하고, SSL에서 수신 한 모든 연결을 8001로 전달한다.
6. Django 프로젝트가 있는 디렉토리로 돌아가서 https를 실행시킬 수 있는 스크립트를 만든다.
$ cd ..
$ vim runserver
파일 내용은 아래와 같다.
stunnel stunnel/dev_https &
python 장고프로젝트명/manage.py runserver &
HTTPS=1 python 장고프로젝트명/manage.py runserver 8001
저장 후 실행을 가능하게 만들어준다.
$ chmod a+x runserver
7. 실행을 해본다.
$ ./runserver
https://localhost:8443 으로 접속을 하면 https 접속이 가능한 걸 확인할 수 있다! 겨우 성공했는데 내가 필요한 방법은 이 방법이 아니었고, 더 쉬운 방법도 있었다. 그 쉬운 방법을 해보고는 너무 허무했었는데 잘 기억이 안 나서 기억날 때 다시 추가해서 쓰도록 해야겠다.
'Study' 카테고리의 다른 글
[DB] transaction의 Level of isolation (0) | 2018.10.05 |
---|---|
[Jupyter] ipynb 파일 html 로 변환하기 (0) | 2018.08.08 |
[Django] Elasticsearch, Kibana와 연동하기 (2) | 2018.07.29 |
[암호화] 비공개키 암호화 & 공개키 암호화 (0) | 2018.05.28 |
[네트워크] http와 https 알아보기 (0) | 2018.05.28 |