원문 링크 : http://www.ianlewis.org/en/testing-https-djangos-development-server
원래 django 개발 서버에서는 HTTPS를 지원하지 않기 때문에 실제 운영되는 서버에서처럼 HTTPS django 응용 프로그램을 테스트하려면 어려움이 따른다. 두 개의 개발 서버 인스턴스를 사용하면(하나는 http, 또 하나는 https를 지원하도록) 이러한 어려움을 피할 수 있다. django 개발 서버가 HTTPS를 지원하도록 하기 위해, stunnel이라는 도구를 사용하여 SSL 터널을 생성할 수 있다.
먼저 openssl과 stunnel을 설치하자. (http://www.stunnel.org/ 사이트 참고)
그런 다음에는 openssl 도구를 사용해 stunnel에 사용할 pem 파일을 생성한다.
원래 django 개발 서버에서는 HTTPS를 지원하지 않기 때문에 실제 운영되는 서버에서처럼 HTTPS django 응용 프로그램을 테스트하려면 어려움이 따른다. 두 개의 개발 서버 인스턴스를 사용하면(하나는 http, 또 하나는 https를 지원하도록) 이러한 어려움을 피할 수 있다. django 개발 서버가 HTTPS를 지원하도록 하기 위해, stunnel이라는 도구를 사용하여 SSL 터널을 생성할 수 있다.
먼저 openssl과 stunnel을 설치하자. (http://www.stunnel.org/ 사이트 참고)
그런 다음에는 openssl 도구를 사용해 stunnel에 사용할 pem 파일을 생성한다.
openssl req -new -days 365 -nodes -out newreq.pem -keyout /etc/stunnel/stunnel.pem
stunnel에 사용할 설정 파일(dev_https라는 이름으로 저장했다고 가정하자)을 만든다. "accept" 항목에는 클라이언트 입장에서 연결되는 HTTPS 포트를 적는다. "connect" 항목에는 HTTPS를 사용할 실제 개발 서버의 포트를 적는다. (첨언하자면, 아래 설정에서 실제 개발 서버는 8003 포트로 구동하는 것이다)
pid =
[https]
accept=8002
connect=8003
stunnel 데몬을 실행한다.
stunnel dev_http
그리고 HTTPS에 사용할 django 개발 서버 인스턴스를 시작한다. HTTPS=on 환경 변수를 주면 request.is_secure() 함수가 True를 올바로 리턴할 것이다.
HTTPS=on python manage.py runserver 8003
그런 다음 HTTP에 사용할 django 개발 서버를 시작한다.
python manage.py runserver 8001
이제 http://localhost:8001, https://localhost:8002 주소를 사용해서 django 어플리케이션을 테스트할 수 있다.
* p.s:
케냘의 경우(맥 환경이다)에는 실제 pem 파일 만으로는 서비스가 불가능했다.
테스트 인증서를 따로 만들고, 설정 파일(dev_https 파일)에 cert/key 항목을 추가하여
해당 항목에 .crt/.key 파일의 경로를 각각 지정해 주면 된다.
* 테스트 인증 생성 방법은 다음 URL 참고(openssl 유틸리티를 사용하므로, linux 환경에서 작업해야 한다) :
http://www.akadia.com/services/ssh_test_certificate.html
'TechLog' 카테고리의 다른 글
Windows Phone 7.5의 UDP 소켓 멀티캐스트 예제 (0) | 2012.03.27 |
---|---|
Nexus S와 호환되는 안드로이드 앱 만들기 (0) | 2012.03.27 |
소규모 개발팀의 업무 환경에 필요한 시스템 (0) | 2012.03.26 |
Snow Leopard의 Xcode 4.2에서 iOS 5.1 디버깅 환경 세팅하기 (5) | 2012.03.22 |
BITNA 개발일기: 2.0 릴리즈를 앞두고 (2) | 2012.03.21 |