Skip to content

천의무봉

천사의 옷에는 기운 자국이 없다.

Primary Menu
  • About
  • Archives
  • List
    • 음악
  • 여행
    • Kungsleden
      • 쿵스레덴 여행기 목차
      • 쿵스레덴 여행기
    • 나홀로 동유럽 17일 배낭여행 (2018년 4월)
    • 제주도
      • 제주 나홀로 렌트 여행 (2018년 3월)
      • 제주 배낭여행 (2017년 7월)
      • 제주 가족여행 (2017년 6월)
    • 오사카 여행기 (2017)
    • 등산
  • 홈서버
    • FAQ
    • 홈서버 구축 및 운영기 목차
    • 구축 및 운영기
  • Daily Life
    • 산책산책을 기록하다.
    • Tea Time
    • Diary
  • Log In
  • Home
  • 2017
  • August
  • 14
  • homeserver_operation

LetsEncrypt Certbot 으로 무료 공인인증서 만들기

Jaesung 6 years ago

Contents

참고

  • SSL, 인증서 개념 정리 링크
  • SSL 인증서 만들기 (연습) 링크

Letsencrypt

Letsencrypt를 통해 무료로 공인인증서를 발급받아 설치해보자.

한번 발급시 최대 90일동안 유효한 공인인증서를 발급받게 되고, 따라서 최대 90일마다 인증서를 갱신해야한다.

Letsencrypt로 부터 공인인증서를 발급받으려면, 해당 domain이 자신의 것이라는 것을 증명해야하는데 여기에서는 shell (ex: ssh)을 이용하는 경우로 진행한다. (참고 링크)

Letsencrypt는 Certbot 이라는 ACME (Automated Certificate Management Environment) 규격을 지원하는 프로그램을 제공하여 인증서 발급과 설치를 자동으로 할 수 있도록 지원하고 있다.

FreeBSD는 python버전 certbot을 제공(https://certbot.eff.org/docs/install.html#operating-system-packages)하고 있고, ‘발급’만 자동으로 되고, ‘설치’ 자동은 지원하지 않고 있다.

FreeBSD certbot 설치

  • Ports: $ cd /usr/ports/security/py-certbot && make install clean
  • Package: $ pkg install py27-certbot

Certbot이 지원하는 모드

plugin에 따라 여러가지가 있다. (참고 링크)

Standalone: Certbot이 자체적으로 web-server가 되어 해당 domain 의 주인임을 입증하고 인증서를 발급한다. 80, 443 port를 이용하므로 기존 운영중인 web server가 있다면 잠시 중단시켜야한다.

Webroot: 운영중인 web server root directory에 쓰기 확인으로 domain 주인임을 입증하고, 인증서를 발급한다. 기존 운영중인 web server를 중단할 필요가 없다.

Apache: Apache Web server인 경우 자동으로 발급 & 설치까지 해준다.

Nginx: Nginx Web server인 경우 자동으로 발급 & 설치까지 해준다.

Manual: Certbot을 구동하는 서버와 운영중인 web server가 다를 경우 활용

  • 현재 FreeBSD 용으로는 ‘standalone‘ 만 지원함 (standalone은 해당 프로그램이 80, 443 port를 listen하는 자체 서버로 동작, 즉 기존에 운영중인 웹서버가 있으면 임시 정지를 시켜야함)
  • This port installs the "standalone" Python client only, which does not use and
    is not the certbot-auto bootstrap/wrapper script.To obtain certificates, use the 'certonly' command as follows:# sudo certbot certonly --standalone -d [server FQDN]Note: The client currently requires the ability to bind on TCP port 80. If
    you have a server running on this port, it will need to be temporarily stopped
    so that the standalone server can listen on that port to complete
    authentication.The certbot plugins to support apache and nginx certificate installation
    will be made available soon in the following ports:* Apache plugin: security/py-certbot-apache
    * Nginx plugin: security/py-certbot-nginx
  • FreeBSD용으로 아직 py-certbot-apache, py-certbot-nginx는 제공되지 않고 있다. (2017년 7월 28일 현재)

Certbot help 보기

  1. Help 보기: $ certbot --help 혹은 $ certbot -h
  2. 자세히 Help 보기: $certbot --help <command>
    ex: $certbot --help certonly

Web Server (Nginx) 중단하기

$sudo service nginx stop

Standalone 모드로 인증서 발급하기

$sudo certbot  certonly --standalone  -d <domain_name1> -d <domain_name2> ...

/usr/local/etc/letsencrypt
                     |- archive
                     |         |- hangadac.com
                     |                        |- cert1.pem : 해당 도메인만의(여기에서는 hangadac.com) 인증서
                     |                        |- chain1.pem: CA들의 인증서 체인
                     |                        |- fullchain1.pem: 해당 도메인과 CA들의 인증서 체인
                     |                        |- privatekey1.pem : 개인키. 보안에 유의 (ex: chmod 600 privatekey1.pem)
                     |- live
                     |         |- hangadac.com
                     |                        |- cert.pem:  archive/hangadac.com/cert1.pem 의 link 이다.
                     |                        |- chain.pem
                     |                        |- fullchain.pem
                     |                        |- privatekey.pem

인증서 확인하기

$sudo certbot certificates

인증서 설정하기 (Nginx)

$ ln -s /usr/local/etc/letsencrypt/live/hangadac.com/fullchain.pem   /etc/ssl/hangadac.com.pem

$ ln -s /usr/local/etc/letsencrypt/live/hangadac.com/privkey.pem   /etc/ssl/hangadac.com.key

$ chmod 600 /etc/ssl/hangadac.com.key

$ vim   /usr/local/etc/nginx/conf.d/sites-available/hangadac.com.443.conf

server {
     listen    443   ssl;
     server_name   hangadac.com;
     ssl     on;
     ssl_certificate        /etc/ssl/hangadac.com.pem;
     ssl_certificate_key    /etc/ssl/hangadac.com.key;
     ssl_protocols          TLSv1.2 TLSv1.3;
     ...
     ...

}

Web Server에서 80 port를 443으로 redirect 하기

$ vim   /usr/local/etc/nginx/conf.d/sites-available/hangadac.com.80.conf

server {
       listen       80      default_server;
       server_name       hangadac.com;
       return    301    https://$host$request_uri;
}

Web Server (Nginx) 구동하기

$ sudo service nginx start

인증서 동작 확인하기

인증서 갱신하기

인증서 갱신 명령 ($certbot renew)은 자동으로 만료일을 확인하여 만료일 30일 이전에만 실제 갱신이 이뤄지고 그렇지 않으면 변경이 이루어지지 않는다.

만료일 이전에 갱신요청을 한다고해도 아무 문제나 불이익이 있는 것은 아니니 1달에 한번 정도로 cron 등록을 해서 갱신요청을 하면 된다. (cron에서 매 89일마다… 라는 주기작업 설정이 가능하면 되겠지만 그런 기능은 없다.)

인증서 갱신 테스트하기
$ certbot renew   --dry-run

인증서 갱신 cron으로 등록하기

$ sudo crontab -e

# 매월 1일과 15일, 3시와 6시에 cron 작업
0    3,6    1,15   *   *   /usr/local/bin/certbot   renew   --pre-hook  "service nginx stop"    --post-hook  "service nginx start"

참고: $ man 5 crontab

안전도 확인하기

https://www.ssllabs.com/ssltest/ 에서 보안 안전도를 점검해볼 수 있다.

이곳 http://blog.hangadac.com 을 테스트 해보면…

🙂

이로써 Letencrypt를 통한 공인 인증서 발급으로 당당히(?) 서버 인증으로 안전한 https 통신을 할 수 있게 되었다.

천의무봉 - 천사의 옷에는 기운 자국이 없다.

Jaesung

See author's posts

Tags: letsencrypt 인증서

Continue Reading

Previous: [홈서버 구축기] SSL 인증서 만들기 (연습)
Next: [홈서버] CMS 선택하기 (WordPress, Joomla, Drupal)

Related Stories

홈서버 SSD 교체 완료 (2019년 9월 24일)
  • homeserver_operation
  • Memories

홈서버 SSD 교체 완료 (2019년 9월 24일)

Jaesung 4 years ago
[홈서버] FreeBSD Upgrade (11.0 -> 11.1)
  • homeserver_operation

[홈서버] FreeBSD Upgrade (11.0 -> 11.1)

Jaesung 6 years ago
[홈서버] FreeBSD를 광출력 무선 Audio Renderer로 만들기
  • homeserver_operation

[홈서버] FreeBSD를 광출력 무선 Audio Renderer로 만들기

Jaesung 6 years ago
[홈서버] Netflix가 부럽지 않다. Emby 혹은 Plex
  • homeserver_operation

[홈서버] Netflix가 부럽지 않다. Emby 혹은 Plex

Jaesung 6 years ago
[홈서버] 써보니 편하다, AirPlay
  • homeserver_operation

[홈서버] 써보니 편하다, AirPlay

Jaesung 6 years ago
[홈서버] FreeBSD SPDIF Sound out
  • homeserver_operation

[홈서버] FreeBSD SPDIF Sound out

Jaesung 6 years ago

Follow on Instagram
August 2017
S M T W T F S
 12345
6789101112
13141516171819
20212223242526
2728293031  
« Jul   Sep »
  • About
  • Archives
  • List
    • 음악
  • 여행
    • Kungsleden
      • 쿵스레덴 여행기 목차
      • 쿵스레덴 여행기
    • 나홀로 동유럽 17일 배낭여행 (2018년 4월)
    • 제주도
      • 제주 나홀로 렌트 여행 (2018년 3월)
      • 제주 배낭여행 (2017년 7월)
      • 제주 가족여행 (2017년 6월)
    • 오사카 여행기 (2017)
    • 등산
  • 홈서버
    • FAQ
    • 홈서버 구축 및 운영기 목차
    • 구축 및 운영기
  • Daily Life
    • 산책
    • Tea Time
    • Diary
  • Log In

Posts Slider

스웨덴 쿵스레덴 (KUNGSLEDEN) – 15일차 (귀국)
  • Kungsleden

스웨덴 쿵스레덴 (KUNGSLEDEN) – 15일차 (귀국)

Jaesung 7 years ago
스웨덴 쿵스레덴 (KUNGSLEDEN) – 14일차
  • Kungsleden

스웨덴 쿵스레덴 (KUNGSLEDEN) – 14일차

Jaesung 7 years ago
스웨덴 쿵스레덴 (KUNGSLEDEN) – 13일차
  • Kungsleden

스웨덴 쿵스레덴 (KUNGSLEDEN) – 13일차

Jaesung 7 years ago
Distant North Kungsleden 동영상 (Youtube)
  • Kungsleden

Distant North Kungsleden 동영상 (Youtube)

Jaesung 7 years ago
스웨덴 쿵스레덴 (KUNGSLEDEN) – 12일차
  • Kungsleden

스웨덴 쿵스레덴 (KUNGSLEDEN) – 12일차

Jaesung 7 years ago
동유럽 배낭여행 5일차 (호엔 잘츠부르크 성)
  • 나홀로 동유럽 17일 배낭여행 (2018년 4월)

동유럽 배낭여행 5일차 (호엔 잘츠부르크 성)

Jaesung 1 year ago
동유럽 배낭여행 5일차 (모차르트 박물관과 생가)
  • 나홀로 동유럽 17일 배낭여행 (2018년 4월)

동유럽 배낭여행 5일차 (모차르트 박물관과 생가)

Jaesung 1 year ago
동유럽 배낭여행 5일차 (잘쯔부르크 카드 소개)
  • 나홀로 동유럽 17일 배낭여행 (2018년 4월)

동유럽 배낭여행 5일차 (잘쯔부르크 카드 소개)

Jaesung 1 year ago
동유럽 배낭여행 4일차 (3. 잘쯔부르크 시내관광 – 모차르트 소나타 감상)
  • 나홀로 동유럽 17일 배낭여행 (2018년 4월)

동유럽 배낭여행 4일차 (3. 잘쯔부르크 시내관광 – 모차르트 소나타 감상)

Jaesung 1 year ago
동유럽 배낭여행 4일차 (2. 잘쯔부르크 시내관광 – 대성당)
  • 나홀로 동유럽 17일 배낭여행 (2018년 4월)

동유럽 배낭여행 4일차 (2. 잘쯔부르크 시내관광 – 대성당)

Jaesung 4 years ago
Follow on Instagram
August 2017
S M T W T F S
 12345
6789101112
13141516171819
20212223242526
2728293031  
« Jul   Sep »

You may have missed

동유럽 배낭여행 5일차 (호엔 잘츠부르크 성)
  • 나홀로 동유럽 17일 배낭여행 (2018년 4월)

동유럽 배낭여행 5일차 (호엔 잘츠부르크 성)

Jaesung 1 year ago
동유럽 배낭여행 5일차 (모차르트 박물관과 생가)
  • 나홀로 동유럽 17일 배낭여행 (2018년 4월)

동유럽 배낭여행 5일차 (모차르트 박물관과 생가)

Jaesung 1 year ago
[일보우일보] 2022년 8월 6일 (걷기 53일차) – 중앙공원
  • 주절주절

[일보우일보] 2022년 8월 6일 (걷기 53일차) – 중앙공원

Jaesung 1 year ago
[일보우일보] 2022년 8월 5일 (걷기 52일차) – 율동공원
  • 산책

[일보우일보] 2022년 8월 5일 (걷기 52일차) – 율동공원

Jaesung 1 year ago
Copyright © All rights reserved. | Magnitude by AF themes.