https 적용하기
플랜
- https 인증서를 산다.
- 인증서를 로드 벨런서에 장착한다.
- 확인한다.
https 인증서를 산다.
- 인증서의 종류
- 3개다 보안 정도는 똑같다 다만 추가적인 인증(회사존재 여부 등)을 하느냐 마는냐의 차이이며 실제로 다른 부분은 아래와 같다.EV 가 가장 비싸며 은행사이트 접속했을때 처럼 녹색 바에 회사 이름이 노출된다.
DV, OV 는 상대적으로 저렴하며 https: 부분만 녹색으로 변한다. - DV Domain Validation (DV) SSL Certificates
- OV Organization Validation (OV) SSL Certificates
- EV Extended Validation (EV) SSL Certificates
- 인증 범위
- 1개의 도메인을 보호 할것이냐? 하위 도매인을 보호할것이냐 ? 멀티 도매인을 보호할것이냐 에 따라 다르다.1개의 도매인 1 protect web site 구매
멀티 도메인 n개의 도메인 (단 하위 도매인은 안됨) ex) aa.com aa.co.kr ee.aa.com
하위 도메인 *.aa.com - 본인의 경우 두개의 wild card 도매인을 구입해서 사용했다 .aa.com, .aa.co.kr
가격이 다르며 최초 1개 도매인으로 구입했다가 다른 도메인으로 변경 할 수 없다 - 1개의 도메인을 보호 할것이냐? 하위 도매인을 보호할것이냐 ? 멀티 도매인을 보호할것이냐 에 따라 다르다.
- 사이트
- 많다
- starssl(메일 엄청 빨리 온다 1루도 안걸림)
- starfieldtech (사이트가 이쁘기한대 비추다 이메일 문의가 느리다 3일 걸림)
- 참고
- starssl이 공짜라고 실제로 인증서를 받을 도메인을 테스트한다고 인증 받지 말자..힘들어진다.
- 자기혼자 싸인해서 ssl테스트 할수 있다.
#키만들고 $ openssl genrsa -aes128 -out fd.key 2048 #키에서 공개 키만 뜯어 낼수도 있고 $ openssl rsa -in fd.key -pubout -out fd-public.key #키에서 cert req 를 만들수도있 $ openssl req -new -key fd.key -out fd.csr #확인하기 $ openssl req -text -in fd.csr -noout #혼자 싸인하기 openssl x509 -req -days 365 -in fd.csr -signkey fd.key -out fd.crt
인증서를 로드 벨런서에 장착한다.
- 왜 로드벨런서에 장착하는가?
- 물론 서버에 직접 장착 할수도 있다. 노드 나 스프링 등등 하지만 로컬 개발 등 테스트를 생각하면 로드 밸런서에 설치후
- 포워딩 시키는게 훨씬 편하다. 필자의 경우 nginx 를 사용했다.
- 또한 안드로이드, ios 등 모바일 지원에 버전관리까지 들어가기 시작하면.....
- 정말 그러면 좋겠지만.. 유저가 미친듯이 폭주하면....
- 등등 여러 이유로 로드 벨런서에 꼭 장착하자
- nginx.conf
- 위의 ssl 부분을 집어 넣으면된다.
server { listen 443 ssl; keepalive_timeout 70; server_name *.aa.com; ssl_certificate /etc/nginx/ssl/aa.com crt; ssl_certificate_key /etc/nginx/ssl/aa.com.key; ssl on; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; break; } }
- 위의 ssl 부분을 집어 넣으면된다.
- 인증서의 경우 싼곳일 수록 체인형식으로 인증서를 연결해 줘야 할때가 많다.
- 왜 연결해 줘야 하는가? 예전 브라우저의 경우 신규 인증 업체를 모르기 때문이다.
#cat cert1.crt cert2.crt > chained.crt #openssl x509 -noout -modulus -in cert.crt | openssl md5 #openssl rsa -noout -modulus -in chained.key | openssl md5
- 왜 연결해 줘야 하는가? 예전 브라우저의 경우 신규 인증 업체를 모르기 때문이다.
확인한다.
- 참고로 heartbleed 버그 때문에 nginx 1.6 이상 openssl 1.01 이상에서 ssl 을 사용하자
- 추천도서 : 네트워크 보안관련 도서 중 최근에 발간되었고 설명이 상세하게 잘 나와 있다.