이전에 디지털오션에서 제공한 튜토리얼을 한 번 따라해서인지 개념도 적당히 있고 코드에도 익숙해서 금방 끝낼 수 있었다.
디지털오션의 튜토리얼은 사용자가 직접 키와 사인 리퀘스트를 만들어 이른바 사제 SSL 인증서를 만드는 것으로 구성되어 있다. COMODO 보안서버 SSL 인증서 서비스를 신청하면(나는 카페24의 것을 활용했다.) 사용자 키와 코모도의 SSL 인증서를 바로 받을 수 있다. 이 두 파일을 서버의 적당한 공간에 옮겨두고 nginx 설정에서 경로만 바꿔주면 끝나는 것이다.
그 다음으로 http 리퀘스트를 https 리퀘스트로 바꿔주는 규칙을 명세하는 것이 좋다. 서버폴트의 "In Nginx, how can I rewrite all http requests to https while maintaining sub-domain?"을 참고했다.
마지막으로 기존 http 리퀘스트가 위에 적용한 규칙과 꼬이지 않도록 해당 설정 파일을 어디론가 백업두면 깔끔하게 해결된다. https, 참 쉬운 녀석이었다.
하지만 코딩의 만사가 그렇듯 일은 생각대로 풀리지 않았다.
2014년 11월 10일에 포스트 업데이트를 한다. 웬만하면 포스트 수정은 하지 말자는 주의지만 아무래도 해야 할 것 같은 느낌을 받았다. 카페24의 서비스를 이용해서 짠짠 SSL 설정을 완료한 것 같았지만 안드로이드 기본 브라우저와 크롬에서는 자꾸 인증서 오류가 뜨는 것이 아닌가. 다른 브라우저는 전혀 문제가 없는 것 같았다. 처음에는 크롬을 기반으로 검색을 해봤다. 코모도 웹사이트의 FAQ를 찾기는 했지만 마땅한 해결책이 나와 있지 않았다. 검색을 좀 더 해봤다. 구글에서 인정하는 SSL의 암호화 방식이 올해 9월을 기준으로 바뀌었고 그에 따른 코모도의 대응책에 대한 문서를 찾았다. 아무래도 문제는 여기에 있는 것 같았다. 카페24에서 구매대행해준 인증서는 어떤 암호화 체계를 사용하는 것일까?
위에 링크해둔 카페24 웹페이지를 다시 방문했다. 암호화 수준에는 구글이 지원하는 256bit 사양이 적혀 있지만 놀라운 것은 지원 브라우저에 크롬 또는 안드로이드라는 문구가 보이지 않는다는 것이었다. 직접 통화를 하진 못했지만 전해들은 바로는 현재 카페24에서 구매한 코모도 인증서로는 크롬과 안드로이드가 지원되지 않는다고 한다. 무슨 영문인지는 모르겠지만 환불 신청을 해두고 대안을 찾았다. 얼마 전 안정적으로 SSL 서버에 서비스를 올려둔 지인에게 물어봤더니 코모도 사이트에서 직접 인증서 신청을 했다고 한다. 대행사 느낌이 강하긴 했지만 어쨌든 공식 사이트라는 곳에서 신청을 하고 인증서를 받아 깔끔하게 설치를 했다.
그런데 문제는 해결되지 않았다. 크롬과 안드로이드에서 발생하는 인증 관련 오류는 계속해서 개발자를 괴롭히고 있었다.
이런저런 검색 끝에 체인인증서라는 개념을 알게 되었다. 상위 인증 기관과 현재 웹사이트의 인증서를 연결해주는 일종의 중간단계 인증서라고 이해를 했다. 하지만 서비스에서 중요한 것은 개념보단 구현이다. nginx 사이트에서 본 방법으로 cat 명령어를 통해 체인인증서를 사이트 인증서에 붙여 설정을 바꿔봤더니 드디어 이제서야 크롬과 안드로이드에서도 인증 오류 없이 웹사이트에 잘 접속할 수 있게 되었다.
SSL은 비교적 간단히 해결할 수 있는 친구였지만 그렇게까지 만만한 녀석은 아니었던 것 같다.
'CODE' 카테고리의 다른 글
이클립스(Eclipse) 안드로이드 프로젝트를 그레이들(Gradle) 안드로이드 프로젝트로 바꾸는 이야기 (1) | 2015.03.11 |
---|---|
비동기 방식에서는 절대 플래그(flag)로 문제를 해결하려 들지 말라 (0) | 2015.03.06 |
Rails로 다중 언어 지원 애플리케이션 만들기 (0) | 2015.01.18 |
프로그래밍 숙제에서 발리지 않는 법 (0) | 2014.12.13 |
Ssign.net 서버 개발기 (0) | 2014.11.15 |
워드프레스를 재설치할 때는 꼭 기존의 데이터베이스를 날려주자 (0) | 2014.10.31 |
nginx 프록시 사용시 URI 파라미터 그대로 넘기기 (0) | 2014.10.30 |
PHP file_get_contents에서 올바르지 못한 HTTP response 무시하고 response 받기 (0) | 2014.10.29 |
모바일 앱 서버에서 페이스북 그래프 API를 사용해 사용자 인증하기 (0) | 2014.10.13 |
Laravel과 Intervention을 연동할 때 Intervention 설치하는 방법 (0) | 2014.09.21 |