작업실

COMODO SSL 인증서로 OCSP stapling 인증받기

 

SSLlabs에서 SSL 보안 점수 높이려고 노력하다가 겨우 OSCP stapling을 받았네요.

 

완전히 처음보는 개념들이 많아서 거의 하루 밤샜네요 ㅠㅠ

 

스샷에 보다시피 

 

 

OCSP staplingYes

 

를 받기위해 부단히 노력했습니다.

 

 

간단하게 OCSP 적용이 되는지 확인하려면

 

1. 서버에 하나의 HTTPS 사이트가 있을 때

 

openssl s_client -connect wsgvet.com:443 -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"

 

 

2. 서버에 여러개의 HTTPS 사이트가 있을 때

 

openssl s_client -connect wsgvet.com:443 -servername wsgvet.com -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"

 

위의 명령어를 넣었을 때

 

OCSP response:

OCSP Response Data:

    OCSP Response Status: successful (0x0)

    Response Type: Basic OCSP Response


위와 같은 반응이 나와야 정확하게 적용된 것입니다.


그렇다면 Nginx 기준으로 어떻게 적용하는지 적어보겠습니다.

 

 

Nginx 서버 설정에서

 

ssl_certificate /.../chain.crt;
ssl_certificate_key /.../myserver.key;
 
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers '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:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
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;
ssl_trusted_certificate /.../comodo.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

 

위와 같이 설정했습니다.

 

Strict-Transport-Security 설정이 빠졌는데, 제 홈페이지가 기본적으로 Http 만 이용하고 있어서 HSTS를 적용하니 Https에서 Http로 못돌아가더라구요. 

 

그래서 그것만 빼고 나머지는 거의 다 적용했습니다.

 

특이점이 있다면 세션 티켓 키가 있다는 것인데요.

 

이건 쉽게 서버에서 생성할 수 있습니다.

 

openssl rand 48 > session_ticket.key 

 

위와 같이 생성 후 파일 위치만 잡아주면 됩니다.

 

 

그리고 OCSP Stapling에 2가지 방법?이 있는 것 같은데요.

 

서버에서 인증받은 파일을 넣는 것과, 접속할 때마다 인증 받는 것입니다. (이건 확실치 않아요... 영어실력이 딸려요 ㅠㅠ)

 

그래서 일단 두가지 다 작업을 했었는데요.

 

인증받은 파일은 2번째 링크에 보시면 COMODO 전용 pem 파일이 있습니다. 이것을 받아서 서버에 업로드 후 

 

sl_trusted_certificate /.../comodo.pem; 

 

위와 같이 위치 지정해주시면 되고요.

 

저는 예전에 코모도 제일 저렴한 인증서를 샀는데 적용이 잘 됩니다. (http://www.wsgvet.com/bbs/board.php?bo_table=blog&wr_id=329)

 

 

그리고 인증받는 방법은

 

첫번째 링크에서 보고 따라해봤는데요.

 

COMODO의 경우

 

openssl ocsp -CAfile 3.crt -issuer 2.crt -cert 1.crt -no_nonce -text -url http://ocsp.comodoca.com 

 

위 명령어를 넣으니 인증 받아지더라구요. 인증서 순서는 루트 - 중간 - 사이트 인증서 순서라고 보시면 됩니다. 이건 위에 인증서 구입 링크 보시면 어떤 파일인지 아실 듯 합니다.

 

그리고 위와 같이 인증 받을 때 유효기간이 3~5일 정도 밖에 안됩니다. 그래서 crontab에 매일 한번씩 실행하라고 넣어뒀습니다.

 

10 5 * * * /usr/bin/openssl ocsp -CAfile /...l/3.crt -issuer /.../2.crt -cert /.../1.crt -no_nonce -text -url http://ocsp.comodoca.com >> /var/log/nginx/ocsp.log 

 

 

그리고 테스트 서버에서 letsencrypt 인증서 받아서 OCSP 인증 받으려고 하는데 잘 안되네요 ㅠㅠ 이건 해보고 다시 올려보도록 하겠습니다.

 

 

현재 제 서버 점수고요. ( 링크 ) A+ 가 아닌 것은 HSTS를 적용하지 않아서 그런 듯 합니다.

 

현재 사이트 전체 Https 적용 테스트 중인데... 만약에 Https로 넘어간다면 A+ 나올 듯 합니다.

 

 

참고 사이트

 

https://imququ.com/post/my-nginx-conf-for-wpo.html 

https://imququ.com/post/my-nginx-conf.html 

https://imququ.com/post/why-can-not-turn-on-ocsp-stapling.html 

https://blog.hakase.kr/nginx-ssl-set 

https://letsecure.me/secure-web-deployment-with-lets-encrypt-and-nginx/ 

, , , ,

1 Comments
우성군 2016.09.18 09:58  
음.. 그런데 이거 적용하고 좀 있으니 바로 No 되어 버리네요 ㅠㅠ

왜 그런지는 모르겠네요...

HPKP 적용 중에 서버키를 날려버려서 그냥 letsencrypt로 넘어갔습니다.

OCSP 신경 안써도 바로 ON 뜨네요.