Let's Encrypt에서 인증서를 발급하는 과정은 다음과 같습니다.

2023. 3. 9. 11:22django

  1. 도메인 소유 확인
    • Let's Encrypt는 인증서 발급 요청을 받았을 때, 해당 도메인의 소유자인지 확인해야 합니다.
    • 이를 위해 도메인 소유 확인에 사용할 파일을 발급합니다.
  2. 도메인 구성 확인
    • 인증서 발급을 요청한 도메인의 구성을 확인합니다.
    • 도메인 구성이 잘못되었거나 DNS 레코드가 정상적으로 등록되어 있지 않으면 인증서 발급에 실패할 수 있습니다.
  3. ACME 프로토콜 사용
    • Let's Encrypt는 인증서 발급을 위해 ACME(Automated Certificate Management Environment) 프로토콜을 사용합니다.
    • ACME 클라이언트는 Let's Encrypt 서버와 통신하여 인증서 발급 요청을 합니다.
  4. 인증서 발급
    • Let's Encrypt 서버는 ACME 클라이언트의 요청을 검증하고, 요청한 도메인의 소유자인지 확인한 후, 인증서를 발급합니다.
    • 발급된 인증서는 인증서의 개인키, 인증서 체인 등 여러 파일로 구성됩니다.
  5. 인증서 갱신
    • Let's Encrypt에서 발급한 인증서는 90일간 유효합니다.
    • 인증서의 유효기간이 만료되기 전에 인증서를 갱신해야 합니다.
    • Let's Encrypt는 인증서 갱신도 ACME 프로토콜을 사용하여 자동으로 처리할 수 있습니다.

Let's Encrypt에서 인증서를 발급하는 과정은 자동화되어 있으며, 대부분의 인증서 발급 요청은 성공적으로 처리됩니다. 인증서 발급 요청이 실패한 경우에는 도메인 구성이나 DNS 레코드 등을 다시 확인해야 합니다.

 

    • certbot 설치
      • Let's Encrypt에서 인증서를 발급 받을 수 있는 certbot 도구를 설치합니다.
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot
  1. 인증서 발급
    • certbot을 사용하여 인증서를 발급합니다.
    • 도메인 이름을 사용하여 인증서를 발급할 수 있습니다.
sudo certbot certonly --webroot -w /path/to/your/webroot -d yourdomain.com

위 명령어에서 /path/to/your/webroot는 웹 서버의 루트 디렉토리입니다. yourdomain.com은 발급받을 도메인 이름입니다. 이 명령어를 실행하면 certbot이 Let's Encrypt 서버에 연결하여 인증서를 발급합니다.

  1. Nginx 설정 변경
    • SSL 기능을 사용하기 위해 Nginx 설정 파일을 변경해야 합니다.
    • 다음과 같이 server 블록에 SSL 구성을 추가합니다.
server {
    listen 80;
    server_name yourdomain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

    ...
    # 나머지 Nginx 설정
    ...
}

위 구성에서 ssl_certificate 및 ssl_certificate_key 설정은 certbot으로 생성된 인증서 경로를 지정합니다.

  1. Nginx 구성 재시작
    • Nginx 구성 파일을 수정한 후, Nginx 서비스를 재시작하여 변경 사항을 적용합니다.
sudo systemctl restart nginx

위 명령어를 실행하면 Nginx 서비스가 재시작되어 HTTPS 인증서가 적용됩니다.

  1. 인증서 갱신
    • 발급된 인증서는 90일간 유효합니다. 따라서 certbot을 사용하여 주기적으로 인증서를 갱신해주어야 합니다.
    • 인증서를 갱신하려면 다음 명령어를 실행합니다.
sudo certbot renew
  1. 인증서 자동 갱신 설정
    • 인증서를 주기적으로 갱신하기 위해 cron 작업을 설정합니다.
    • 다음 명령어를 실행하여 cron 작업을 추가합니다.
sudo crontab -e

위 명령어를 실행하면 cron 편집기가 열리며, 다음과 같은 내용을