아무거나

[ubuntu] Let's Encrypt 사용하여 무료 SSL 사이트 구축방법 본문

Infra/Linux & Unix

[ubuntu] Let's Encrypt 사용하여 무료 SSL 사이트 구축방법

전봉근 2019. 4. 23. 10:14
반응형

ubuntu 16.04 기준 

 

1. 인증서 관련 설치

   apt-get install letsencrypt

   - 참고 : Domain Control Validation 의 3가지 방법 (https://support.comodo.com/?/Knowledgebase/Article/View/791)

   - Let’s Encrypt 는 위의 도메인 인증방법 중 3번째인 HTTP(HTTPS)-based DCV 를 사용하여 인증한다.

 

2. example

   예제 1 : # letsencrypt certonly --webroot --webroot-path=/home/ssl-demo-1404/www -d ssl-demo-1404.lael.be

   예제 2 : # letsencrypt certonly --webroot --webroot-path=/home/ssl-demo-1604/www -d ssl-demo-1604.lael.be

   예제 3 : # letsencrypt certonly --webroot --webroot-path=/home/banana/www -d banana.com -d www.banana.com

   예제 4 : # letsencrypt certonly --webroot --webroot-path=/home/laelbe/blog -d lael.be -d www.lael.be -d blog.lael.be -d myhome.lael.be

 

   * 명령어 설명

     -d 는 도메인명을 지정하면 된다. 최대 100개의 도메인 이름을 지정할 수 있다. (한 인증서가 서로다른 100개의 도메인 인증을 할 수 있음) 일반적으로는 기본도메인과 www 도메인 두개를 지정한다.

     -webroot 는 웹인증을 받을 것이라는 것이다. 외부 인증프로그램이 -d 에 지정된 도메인 사이트에 접속한다.

     -webroot-path 는 웹루트의 경로이다. 보통 index 페이지가 위치하는 경로이다. 인증 프로그램이 이 경로에 임시 랜덤 파일을 생성하고, 외부 인증프로그램이 이 파일을 접근할 수 있다면 Domain Validation 이 되는 것이다.

 

  발급 성공

  IMPORTANT NOTES:

  - Congratulations! Your certificate and chain have been saved at

    /etc/letsencrypt/live/bkjeon1614.vps.phps.kr/fullchain.pem. Your

    cert will expire on 2017-07-02. To obtain a new version of the

    certificate in the future, simply run Let's Encrypt again.

  - If you like Let's Encrypt, please consider supporting our work by:

 

    Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate

    Donating to EFF:                    https://eff.org/donate-le

 

3. 인증서 파일들 관련 설명

  - /etc/letsencrypt/live/[인증서명]/ 위치에 발급된다.

    cert.pem - 인증서 파일

    chain.pem - 인증서 발급자 파일

    fullchain.pem - cert.pem 과 chain.pen 을 하나로 합쳐놓은 파일

    privkey.pem - 인증암호를 해독하는 개인키

 

    Apache2 서버에서는 cert.pem, chain.pem, privkey.pem 을 사용합니다.

    Nginx 서버에서는 fullchain.pem, privkey.pem 을 사용합니다.

 

4. 웹서버별 적용방법

    ----- apache2 적용 방법( VirtualHost 영역을 하나 더 추가 ) -----

    SSLEngine on

    SSLProtocol all -SSLv2 -SSLv3

    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: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

 

    SSLHonorCipherOrder on

 

    SSLCertificateFile "/etc/letsencrypt/live/bkjeon1614.vps.phps.kr/cert.pem"

    SSLCertificateKeyFile "/etc/letsencrypt/live/bkjeon1614.vps.phps.kr/privkey.pem"

    SSLCertificateChainFile "/etc/letsencrypt/live/bkjeon1614.vps.phps.kr/chain.pem"

 

    ---- nginx 적용방법 ----

    dhparam.pem 파일은 한번만 생성하면 된다.

    # openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

 

    listen       443 ssl http2;

    server_name  ssl-demo-1604.lael.be;

    root   /home/ssl-demo-1604/www;

    client_max_body_size 10M;

 

    ssl_certificate "/etc/letsencrypt/live/ssl-demo-1604.lael.be/fullchain.pem";

    ssl_certificate_key "/etc/letsencrypt/live/ssl-demo-1604.lael.be/privkey.pem";

    ssl_dhparam "/etc/ssl/certs/dhparam.pem";

 

5. 안될 경우

   - sudo apt-get install apache2 python-letsencrypt-apache

   - sudo letsencrypt --apache -d bkjeon1614.vps.phps.kr

 

6. 크론탭 등록(자동갱신)

   - sudo crontab -e

   - 30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log 추가​

반응형

'Infra > Linux & Unix' 카테고리의 다른 글

[ubuntu] htop 설치 (프로세스 뷰어)  (0) 2019.12.26
열린 포트 확인(LISTEN)  (0) 2019.06.11
file encoding 확인  (0) 2019.04.22
서버 열린 포트 확인  (0) 2019.04.22
파일 라인 수 출력  (0) 2019.04.22
Comments