안녕하세요. 오늘은 Nginx Web Site에서 Let’s Encrypt 로 SSL 인증을 하는방법을 알아보도록 하겠습니다.
WebSite  접속시 http://, https:// 두가지 방법 중 하나로 접속을 하게 됩니다.
https://에 대해서 간단히 설명을 하자면 보안이 강화된 http입니다.
포트도 http:// = (80), https:// = (443) 으로 차이가 있습니다.
쫌더 자세한 내용이 알고 싶은 분들은 Sonim 포스트 중 http란 을 참고 하시기 바랍니다.
최근에는 SEO라던지 많은 부분에서 https://를 사용하기를 권장 하고 있습니다.
ssl 인증서가 잘못되었을 경우 아래와 같은 오류가 나옵니다. (크롬 기준)
lets Encrypt 14

1. Let’s Encrypt : certbot-nginx 설치

let's Encrypt 01-1

yum install certbot-nginx

1) certbot-nginx를 설치 합니다.


lets Encrypt 02

2) 다운 받은 certbot-nginx를 설치 하기 위해서 “y”를 입력 합니다.


lets Encrypt 03

certbot --nginx -d example.com -d www.example.com

3) certbot –nginx -d “인증을 받을 웹 주소” 를 입력 합니다.  다수의 Web일 경우 -d를 추가하여 추가 가능합니다.


lets Encrypt 04-14) 인증에 관한 내용을 받을 “이메일 주소” 입력 합니다.


lets Encrypt 055) 약관에 관한 내용입니다. “A”를 입력하여 동의를 합니다.


lets Encrypt 066) 이메일 공유에 관한 내용이고요 “Y” 를 입력 합니다.


lets Encrypt 07

cd /etc/letsencrypt/live/example.com/
ls

7) cd /etc/letsencrypt/live/”인증받은 Web 주소”를 입력 “ls” 명령어를 이용하여 위에 cert.pem, chain.pem, fullchain.pem privkey.pem 4가지 파일이 있는지 확인 합니다.


lets Encrypt 07-1

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

8) “openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048” 입력 합니다.
DH Param은 일부 암호화 알고리즘에 사용되는 커다란 난수 하나를 미리 생성해 두어서 암호화 성능을 향상 시킵니다.
Web Server 사양에 따라 시간이 오래 거릴수 있습니다.


2. nginx.conf default.conf설정

vim /etc/nginx/nginx.conf

vim /etc/nginx/nginx.conf를 입력하여  nginx.conf 를 수정할 준비를 합니다.

lets Encrypt 09

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

9) 적당한 장소에 “ssl_dhparam /etc/ssl/certs/dhparam.pem;”을 기입 합니다. (사진 예 확인)


vim /etc/nginx/conf.d/default.conf

vim /etc/nginx/conf.d/default.conf를 입력 하여 default.conf를 수정할 준비를 합니다.

lets Encrypt 12-1

listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;

if ($scheme != "https") {
    return 301 https://$host#request_uri;
}

10) default.conf 하단에 위와 같은 내용을 입력합니다. 위에 4줄은 ssl 설정에 관한 내용이고 밑에 3줄은 http로 접속시 https로 리다이렉트 시켜주는 내용입니다.


systemctl restart nginx

11) ssl 설정이 끝났으니 “systemctl restart nginx” 를 입력하여 nginx을 재실행합니다.


Let’s Encrypt 인증서는 90일마다 갱신을 해주어야하는다는 불편함이 있습니다.
물론.. 개인에게는 무료라는 장점으로 인해 선택의 여지가 없이 Let’s Encrypt를 사용 합니다.

갱신 방법은 간단합니다. 갱신을 진행하라는 매일이 날라오면 certbot renew 명령어면 끝입니다.