CentOS에 Let Encrypt 를 이용하여 nginx 에 무료 SSL 을 적용하자.



필요 준비 사항.


Python

EPEL


공식 사이트인 (https://letsencrypt.readthedocs.org/en/latest/using.html#letsencrypt-auto) 가보니 CentOS의 경우에는 EPEL 을 먼저 인스톨 하라고 함.


> yum install epel-release


설치


소스 다운 로드 

> git clone https://github.com/letsencrypt/letsencrypt

의존성 설치 

>./letsencrypt-auto —help

설치 

>./letsencrypt-auto certonly --rsa-key-size 4096  --email example@example.com -d $DOMAIN —debug

인증서 경로 

설치된 경로가 /etc/letsencrypt/live/$DOMAIN/ 되어 있음

dhparam 만들어 주어야 함. 

> openssl dhparam -out dhparam.pem 2048 

만들어진 dhparam.pem 파일을 인증서가 설치된 경로인 /etc/letsencrypt/live/$DOMAIN/  으로 옮겨준다.

nginx ssl 설정 

페이지 참조 : https://mozilla.github.io/server-side-tls/ssl-config-generator/


======== 샘플 설정 ========

server {

    listen 80;
    server_name $DOMAIN;
    return 301 https://$host$request_uri;
}

server {

    listen 443 ssl;
    server_name  $DOMAIN;

    ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    ssl_dhparam /etc/letsencrypt/live/$DOMAIN/dhparam.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    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:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-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_prefer_server_ciphers on;

    add_header Strict-Transport-Security max-age=15768000;

    ssl_stapling on;
    ssl_stapling_verify on;

    ssl_trusted_certificate /etc/letsencrypt/live/$DOMAIN/chain.pem;

    ....
}

==============

nginx 를 다시 시작하면 끝~!!


3개월까지 밖에 인증 효력이 없기 때문에 3개월에 한 번씩 재인증 해줘야 한다.

재인증

>./letsencrypt-auto certonly --renew-by-default --rsa-key-size 4096  --email example@example.com -d $DOMAIN --debug

크론탭으로 하길 권장한다.


참고 사이트

https://blog.outsider.ne.kr/1178

+ Recent posts