2016년 8월 24일 수요일

Django의 runserver_plus에 올린 Let's Encrypt의 SSL certificate

개발용이지만 https가 필요해서 RunServerPlus를 사용하고 있다. 문제가 생긴 것은 외부의 결제 시스템에서 개발 서버에 접속할 때 아래와 같은 에러가 난다는 것.

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

결제 시스템쪽의 JVM을 업데이트하면 좋겠는데, 우리쪽에서 처리를 하라고 연락이 왔다.

https://www.geocerts.com/ssl_checker에 접속해서 certificate를 확인해보라며. certificate를 확인해보니, certificate chain을 확인할 수 없단다.


runserver_plus에는 Certificate chain file을 지정하는 옵션이 보이지 않는다. --cert만 지정할 수 있다. (그런데, 이 옵션이면 되는 것이었다)

Nginx + Gunicorn 또는 uWSGI로 가면서 chain file을 지정하는 방법이 있겠지 하고, uwsgi 설치하고, nginx 설정하고 nginx의 옵션을 알아보는데, crt 파일에 chain path 정보를 같이 넣은 것도 동작한다는 것을 알게 되었다-_-

Let's Encrypt에서 certificate 갱신하면 만드는 파일들이 있다.

  • cert.pem
  • chain.pem
  • fullchain.pem
  • privkey.pem

위의 파일들 중에서 cert.pem을 crt 파일로 symlink해서 사용하고 있었는데, chain 정보도 들어 있는 fullchain.pem을 crt 파일로 symlink한 후 Django를 올리니..


잘 된다.



2016년 8월 2일 화요일

개발 과정에서 가장 좋아하는 부분

소프트웨어 개발하는 과정에서 내가 가장 좋아하는 부분 또는 단계는 DB 모델링. 이건 오래 전부터 느껴왔던 것인데, 목표로 하는 일을 하기 위해 필요한 데이터들을 구상하고, 그것들을 위해 DB 스키마를 작성하고 있으면 기분이 좋다. 어떻게 보면 아이디어를 짜내서 구체화하는 기획 단계의 일을 좋아하는 것이 아닌가 싶기도 하고.. 실제 개발은 구찮어.. ㅎㅎ