HTTPS 설정하기

예전보다 인터넷 환경도 위험(?)해지기도 하고, 법률문제도 있다고 하여, 인증서 발급 설치를 진행해 보았습니다. 기존의 선구자들께서 남겨두신 족적을 따라서 아래의 키워드로 검색을 하고, 유료로 인증서를 구매하고 발급받고 설치하고, 몇가지 보안설정까지 마친 상태입니다. https://onecoinsoft.co.kr 로 들어오시면 좀더 안전하게 사이트 이용이 가능합니다.

인증서 구매는 GogetSSL를 이용했습니다. 가격적인 메리트로 3년짜리로 샀고, Comodo Positive SSL을 구매했습니다. GGSSL인가도 가격은 비슷하고, 제공하는 서비스도 비슷해 보였는데, 다른 사이트에서는 속도가 느리고 몇가지 이유로 Comodo를 추천하지 않았으나, 저는 그냥 느낌으로 오래되어 좀더 신뢰할 수 있다고 생각하여, 그냥 구매했습니다. … 왜냐고 물으시면, 전 펜탁스 유저입니다. –;

인증서 구매시, 결제후 도메인 인증방법은 이미 HTTP를 운용하고 있어서, HTTP로 했고, EMAIL은 다른 도메인으로 이미 설정을 해둔터라, 현재(onecoinsoft.co.kr)로 다시 하기도 힘들어서, HTTP로 했습니다. 인증진행시 시간의 문제인지는 몰라도 한번에 잘 안되는것 같긴한데, 인증용 파일 받아서 web root에 깔아두면 한번정도 Revalidation하거나 사이트를 refresh하면 인증되어 있습니다.

이후 인증서 발급을 위해서, CSR Online Generator를 이용해서 CSR, KEY, CA-bundle등을 차례로 발급 받으면 되었습니다. 생성 방법과 설치 방법은 GogetSSL의 가이드 페이지를 참고 했으나, 국내 몇몇 블로거분들이 요약 설명해두신게 있으므로 한글로 번역은 하지 않겠습니다. 아파치를 운용하고 있는데, IIS만 아니면 전부 OTHER로 되는 것 같고, IIS의 경우에는 해당 서버에서 발급받아야 하는 제약이 있는 듯 했습니다. 아파치에 SSL설정과 HTTPS설정도 여러 다른 참고 글들이 인터넷에 있기 때문에 굳이 따로 설명하지 않겠습니다.

이후 남은 문제가 HTTP를 HTTPS로 Redirection하는 것과, 기타 보안 설정을 높이는 일이었습니다. 앞쪽은 아직 설정이 안되었고, 뒤쪽은 아래의 사이트를 참고하면, 참 편합니다. SSL관련된 상당한 안내들이 있습니다. 대개는 보안수준을 높이기 위한 활동, 설명등이 친절하게 게시되어 있습니다.
https://blog.qualys.com
가장 유용한것은 자동 평가 사이트입니다.
https://www.ssllabs.com/ssltest/analyze.html

위에 자신의 도메인을 넣으면 여러가지 테스트를 거쳐서 점수를 매겨주는데, A받아야 됩니다 –;;; 우분투 14.04+아파치2 초기설정으로는 C받았습니다. 주로 해주어야 하는게 SSLv3 끄기, 보안 이슈로 권고하는 듯 합니다. 그리고 RC4 Cipher끄기 두가지가 컸습니다. 둘다 Apache2의 mod_ssl의 설정파일인 ssl.conf에서

SSLProtocol all -SSLv3   # -SSLv2의 경우, 문제가 더 심각해서 최근에 모두 빠진것으로 알고 있어서, 굳이 옵션으로 넣어주지 않아도 됩니다.

Cipher옵션은 아래처럼 SSL LAB에서 권고하는 대로 넣어줬습니다. 뭔가 많이 빼는것 같은데, 정상 동작은 합니다. –;. 생각보다 약한 Cipher가 많구나라는 생각도 들고, 괜찮은것 같은 것도 들어가 있어서 나중에 각각을 따로 공부해보고, 분석글을 올려볼까도 생각합니다. 아니면 남들의 링크를 걸어두던가 –;

SSLCipherSuite HIGH:!aNULL:!eNULL:!kECDH:!aDH:!RC4:!3DES:!CAMELLIA:!MD5:!PSK:!SRP:!KRB5:@STRENGTH

위 두가지 설정만 바꾸면 A-점수를 주는데 Forward Secrecy를 완료해야 A가 나오고 HSTS를 설정완료해야 A+이 나올것 같습니다.

Forward Secrecy관련해서도 Cipher의 우선순위 조정을 하면 된다고 합니다. 관련하여 SSLLAB의 글을 읽고, 한글 사이트를 검색해보니 아래의 사이트가 유용합니다. 감사합니다.

http://firstboos.tistory.com/entry/SSL-cipher-suite-order-%EC%A1%B0%EC%A0%95

친절하게 아파치 설정도 설명해주셔서 그냥 넙죽 받아먹습니다.

위의 기존 SSLCipherSuite설정 앞에 아래를 추가해봅니다. 왠지 더 달면 사족으로 또 점수 낮아질 것 같아서 아래만 써봅니다.

ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256

출처: http://firstboos.tistory.com/entry/SSL-cipher-suite-order-조정 [散策 의 정리공간]

그리고 SSLHonorCipherOrder 도 on으로 바꿔줍니다. 보다보니, SSLStrictSNIVHostCheck On 도 유용한 것 같아서 주석 해제해 줍니다. 배우는 것이 목적이므로 하나 켜고, Validator굴리고, 반복하여 점수 높아질때까지 해봅니다. Revalidation은 SSL LAB의 평가 페이지에서 “clear cache”를 누르면 다시 시작합니다.

일단 ECDHE-RSA-AES128-GCM-SHA256 요거 하나만 맨앞에 추가해도 A입니다. 턱걸이 성공입니다. StrictSNIVHostCheck도 켜봅니다. 여전히 A입니다. 찾아보니 아래 사이트에서 아파치에 SSL사이트 Configuration에 ServerName이 제대고 고지 안되어 그렇다고 합니다. 설마, 했는데. 진짜입니다. HTTP만 해주고 HTTPS쪽은 안해줬네요.

Qualys Labs SSL Test – Incorrect SNI alerts

여기까지 하고, 레포트를 보면 아직도 빨간생에 주황색이 보이지만 점수는 그래도 A이니 일단 하루를 또 넘겨 봅니다.


하루가 지나서, 다시 HTTPS Redirection설정을 마치고, 드디어 A+을 받았습니다. 역시 검색하면 다 나오네요.

SSL쪽 VirtualHost 설정에 아래 한줄 추가로 점수가 올라갑니다.

Header always set Strict-Transport-Security “max-age=63072000; includeSubdomains;”

아울러 HTTP->HTTPS Redirection도 처리해봅니다. mod_rewrite를 썼었는데 잘 안되서, 그냥 Reidrect를 씁니다.

HTTP포트로 되어 있는 VirtualHost에

Redirect permanent / https://onecoinsoft.co.kr/

로 끝냅니다.