작업실

HTTPS 적용 후 SSL Labs A+ 평가 받았습니다.

우성군 1 3233 0

 

▲ A+ 받았어요!!!  ( 링크 )

 

HTTPS로 적용 후 HPKP 적용, HTST preload 신청, 홈페이지 Http 관련 에러 잡기 등등 겨우 끝났네요 ㅠㅠ

 

일단 제 글이 링크가 걸려있는 경우가 많아서 (링크) 글에 따라 기존 링크에서 넘어와도 바로 https로 붙게 설정해뒀습니다.

 

 

1. HPKP(HTTP Public Key Pinning) 적용

 

HPKP가 뭔지 몰랐는데 찾아보니 좋은 기능이더라구요.

 

공격자들이 인증서를 훔치거나 위조해 사용자가 자기도 모르게 악성 사이트에 접속하고도 그 사실을 인지 못하게 하는 공격을 자주 했는데 퍼블릭 키 피닝을 사용하면 공인 인증서 발급 기관과 특정 도메인을 하나로 엮어주기 때문에 인증서를 위조하는 것만으로는 중간자 공격이 어려워집니다 

출처 : http://www.boannews.com/media/view.asp?idx=44103&kind=4

 

참조 사이트

 

https://scotthelme.co.uk/hpkp-http-public-key-pinning/ 

https://developer.mozilla.org/en-US/docs/Web/Security/Public_Key_Pinning 

https://raymii.org/s/articles/HTTP_Public_Key_Pinning_Extension_HPKP.html 

https://imququ.com/post/http-public-key-pinning.html 

 

그래서 위 사이트들을 참고하니 생각보다 쉽더라구요?

 

제 홈페이지의 지문 + 인증서 발급처의 지문을 넣기만 하면 되더라구요.

 

제 설정은 

 

add_header Public-Key-Pins 'pin-sha256="YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg="; pin-sha256="FL2+rMzx/NDYdxwELk1264vTrm1E/XWSnBtgNK/0+Sw="; max-age=2592000; includeSubDomains'; 

위와 같습니다. Nginx의 경우 위 형식으로 넣으시면 되고, 다른 서버는 거기에 맞게 넣어주시면 됩니다.

 

 

2. HTST preload

 

HTST (HTTP Strict Transport Security)는 중요한 보안의미가 있는데요.

 

간단하게 해당 사이트를 무조건 Https로 연결함으로써 HTTPS 암호화를 깨거나 트래픽을 가로채는 시도를 예방해준다고 합니다.

 

https가 적용된 사이트는 무조건 해두는게 낫겠죠. 다만 우리나라의 대부분 사이트처럼 평상시엔 http로 접속하다가,

 

로그인이나 기타 보안정보를 수정할 때만 https를 이용하는 현실에선 적용하기 힘들겠네요.

 

제 홈페이지처럼 https가 전 영역에 쓰여야 적용 가능합니다.

 

적용 방법은 매우 쉬운데요. 일단 https로만 접속이 가능하게 서버 설정이 필요하구요.

 

그 다음엔 서버에 HTST 관련 문구를 입력해주기만 하면 됩니다.

 

제 서버의 경우

 

add_header               Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"; 

위와 같이 입력되어 있습니다.

 

그리고 preload라고 웹브라우저마다 HTST 설정을 기억해두게 하는 것인데.. 이건 잘 안되더라구요.

 

크롬에서는 

 

chrome://net-internals/#hsts 

 

위 링크에 들어가서 사이트 주소와 사이트 지문을 넣어주면 적용이 된다고 하는데 아직 안되네요.

 

https://hstspreload.appspot.com/ 

 

또한 위 사이트를 통해서 직접 제출도 가능하다고 합니다. 일단 제출은 해놨는데 적용하는데 수주가 걸린다고 합니다.

 

 

3. http 연결 전부 https로 수정하기

 

제 홈페이지는 처음부터 http만을 고려해서 만들었기 때문에 https를 적용하는데 쉽진 않았습니다.

 

그래도 그누보드5와 아미나빌더를 사용하는데 https로 옮기는데 거의 힘이 들지 않았습니다.

 

아미나의 경우 캐시를 많이 쓰는데, 기존 경로를 다시 바꾸는데는 관리자 모드에서 게시물 업데이트하기 버튼 하나면 끝나더라구요. ㅎㅎ

 

개인적으로 글을 쓸 때 http의 자료를 끌어오는 것들이 있는데, 이건 사실 바꾸기가 어려워보입니다. ㅠㅠ

 

특히 한지민 관련 사진들 링크가 전부 http 라서.. 몇백장 수정하기가 힘들어요 ㅠㅠ (https 적용 완료!!)

 

그래도 웹브라우저에서 자물쇠가 느낌표로 변하긴해도 출력은 되니 그럭저럭 쓰려구요. ㅎㅎ

 

암튼 우리나라에선 아직 주목 받지 못하는 인터넷 보안에 조금이나마 기여를 한 것이 뿌듯합니다.

 

 

결론은 HTTPS 적용 끝!!!

 

 

마지막으로 Nginx 설정을 모아서 보여드리겠습니다.

 

listen 443 ssl http2 default_server;

listen [::]:443 ssl http2 default_server;

 

server_tokens off;

 

ssl_certificate /.../fullchain.pem;

ssl_certificate_key /.../privkey.pem;

ssl_trusted_certificate /.../chain.pem; 

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;

ssl_ciphers EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

ssl_session_timeout 1d;

ssl_session_cache shared:SSL:50m;

ssl_stapling on;

ssl_stapling_verify on;

ssl_dhparam /.../dhparams.pem;

ssl_session_tickets        on;

ssl_session_ticket_key /.../session_ticket.key;

add_header               Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";

add_header Public-Key-Pins 'pin-sha256="YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg="; pin-sha256="FL2+rMzx/NDYdxwELk1264vTrm1E/XWSnBtgNK/0+Sw="; max-age=2592000; includeSubDomains';

resolver 8.8.8.8 8.8.4.4 valid=300s;

resolver_timeout 10s;

add_header X-Frame-Options SAMEORIGIN;

add_header X-Content-Type-Options nosniff;

add_header X-XSS-Protection "1; mode=block";

 

, , , , , , , ,

1 Comments
우성군 2016.10.10 00:06  
HTST preload 대략 2-3주 정도 후에 추가되었습니다!