본문 바로가기

프로그래밍

무료 SSL 인증서 발급하기 – Let’s Encrypt / CertBot

Let’s Encrypt 를 사용해서 무료 SSL 인증서를 발급/사용할 수 있습니다.

 


도메인 업체를 통해서 SSL 인증서를 구매하면 대개 1년에 20~40만원 정도의 비용이 듭니다.
개인 홈페이지, 워드프레스를 이용한 블로그에서는 너무 큰 비용이죠.

 

단 개인이 직접 관리할 수 있는 서버가 있어야 하며, 도메인은 당연히 가지고 있어야겠죠.

 

 

certbot github에서 배포하는 let’s encrypt 를 사용해서 무료 SSL 인증서를 발급받아 설정해보겠습니다.

Let’s encrypt 를 통해서 생성한 인증서는 2가지 특징이 있습니다.

  1. 인증서 유효기간이 90일 입니다.
    만료 쯤에 설정 때 기입하는 이메일로 안내도 오고, 갱신도 커맨드 한번이면 됩니다.
    전혀 귀찮지 않습니다.
  2. 멀티도메인이 지원 안됩니다.
    www.buytoday.co.kr
    buytoday.co.kr
    모두 개별로 인증서를 발급 받아야하며, 하나의 웹사이트로 운영하고 싶으면 nginx 301 redirect 기능을 쓰면 됩니다.

server {

    listen 80;

    server_name domain.com www.domain.com;

   

    return 301 https://domain.com$request_uri;

}

 

// /etc/nginx/nginx.conf 에서 위와 같이 http 처리부분에서 301, https uri로 보냅니다.

// 나머지 처리들은 https 서버 블럭에서 처리해주면 됩니다.

 

설정은 CentOS 기준이며 우분투나 다른 곳에서도 다르지 않습니다.

 

# git clone https://github.com/letsencrypt/letsencrypt
# cd letsencrypt
# ./letsencrypt-auto certonly –manual –email 이메일 -d 적용할도메인

 

 

 

Y 한 번 누르시고, 그 다음 단계는 도메인 소유를 확인하기 위해 특정 디렉토리/파일에 해당 내용을 넣어두라는 겁니다.

 

제시하는 URL 주소에 파일을 만들고 내용도 넣어둡니다.

그리고 Enter를 한번 쳐주면 됩니다.

 

/etc/letsencrypt/live/도메인 디렉토리에 fullchain.pem, privkey.pem 파일이 생성 되었습니다.

 

이제 nginx.conf SSL 설정 부분에 아래로 세팅 해 주시면 됩니다.

 

ssl_cetificate /etc/letsencrypt/live/도메인주소/fullcahin.pem;
ssl_cetificate_key /etc/letsencrypt/live/도메인주소/privkey.pem;

 

그리고 nginx 재시작


# systemctl restart nginx

 

마지막으로 웹 브라우저에서 SSL 적용 자물쇠 확인

 

 

 

추가로 위에서 언급했듯이 만료 기간이 다가오면 이메일로 알람이 옵니다.


그때 콘솔에서 갱신을 해주면 됩니다.

 

# ./letsencrypt-auto renew