무료 SSL 인증서 발급 및 갱신 방법

SSL 인증서 비용이 부담스러워 고민하셨던 적이 있다면, 무료 SSL 인증서를 활용하는 방법이 있습니다. 대표적인 무료 SSL 인증서Let’s Encrypt를 발급받고 갱신하는 방법을 알아 보겠습니다.

1. SSL 인증서란 무엇인가?

1.1 SSL 인증서의 정의

SSL(Secure Sockets Layer) 인증서는 서버와 클라이언트 간의 데이터 통신을 암호화하여 안전하게 보호하는 디지털 인증서입니다. 이를 통해 사용자는 신뢰할 수 있는 사이트에 접속하고 있다는 보증을 받습니다.

1.2 HTTPS 보안의 중요성

HTTPS는 HTTP에 SSL/TLS 암호화가 적용된 프로토콜입니다. 이로 인해 데이터를 도청하거나 변조하는 위험을 방지할 수 있습니다. 특히 브라우저는 HTTPS를 지원하지 않는 사이트에 경고 메시지를 표시하므로, SSL 인증서는 웹사이트 운영자에게 필수적입니다.

2. 무료 SSL 인증서 발급 방법

2.1 Let’s Encrypt 소개

Let’s Encrypt는 무료로 SSL 인증서를 발급해주는 비영리 단체입니다. 이 서비스는 누구나 무료로 SSL/TLS 인증서를 발급받아 사용할 수 있도록 지원하며, 자동화 도구를 통해 관리가 간편합니다.

2.2 발급 준비물 및 환경 설정

Let’s Encrypt 인증서를 발급받으려면 다음이 필요합니다:

  • 도메인 소유권
  • 서버 환경 (Apache, Nginx 등)
  • Certbot 설치

Certbot은 Let’s Encrypt에서 제공하는 자동화 도구로, 명령어 몇 줄만 입력하면 인증서 발급이 가능합니다.

테스트를 수행한 환경은 아래와 같습니다.

  • Ubuntu 24.04
  • Nginx 1.24.0

2.3 발급 절차

  1. SSL 인증을 위한 Certbot tool 설치
    Let’s Encrypt SSL 인증서 발급은 Certbot 을 이용합니다.
sudo apt update
sudo apt-get install letsencrypt -y
  1. SSL 인증서 생성
    Certbot 도구가 설치되었다면 SSL 인증서를 발급받는 과정을 시작해 보겠습니다.
    먼저, 웹 서버를 중단해야 합니다. 이는 인증서 발급 과정에서 80 포트를 사용하지 않도록 하기 위함입니다.
sudo service nginx stop

이제 Certbot 명령어를 사용하여 SSL 인증서를 발급받는 과정을 진행해 보겠습니다.이번 과정에서는 standalone 모드를 사용하며, 도메인 이름만으로 인증이 이루어지도록 -d 옵션을 함께 활용합니다. 아래는 예제 명령어입니다:

sudo certbot certonly --standalone -d trendcube.co.kr -d www.trendcube.co.kr

참고
사용하려는 도메인은 가비아와 같은 도메인 등록기관을 통해 정상적으로 등록된 도메인이어야 합니다.

도메인 소유권이 확인되지 않으면 인증이 진행되지 않습니다.

image 25

인증서가 성공적으로 생성이 완료되면 생성된 인증서를 확인할 수 있습니다.

3. 무료 SSL 인증서 Nginx 연동

3.1 Nginx 연동 설정

위에서 생성된 인증서 파일 경로를 이용하여 nginx 설정 파일을 아래와 같이 설정합니다.

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name trendcube.co.kr www.trendcube.co.kr;

    ssl_certificate /etc/letsencrypt/live/trendcube.co.kr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/trendcube.co.kr/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;

    ...
}

설정 완료 후, 문법 이상 유무 확인 하는 명령어 입력 후 이상 없으면 재시작 합니다.

sudo nginx -t
sudo service nginx restart

3.2 인증 성공 후 HTTPS 적용 여부 확인

SSL 인증서 발급이 완료되었으면, 브라우저에서 도메인 URL을 입력하여 SSL 상태를 확인해 보세요. 예를 들어, https://trendcube.co.kr와 같이 접속하여 웹사이트가 HTTPS로 안전하게 연결되는지 확인할 수 있습니다.

또한, Qualys SSL Labs와 같은 도구를 활용하면 인증서 설정 상태와 보안 점수를 더 철저히 검증할 수 있습니다. 이 사이트를 통해 상세한 테스트를 수행하면 인증서가 제대로 적용되었는지 확인할 수 있어 유용합니다.

image 24

Hostname에 도메인 URL을 입력 후 확인하면 아래와 같은 결과를 확인할 수 있습니다.

image 23

4. 무료 SSL 인증서 갱신 방법

4.1 갱신 주기와 필요성

Let’s Encrypt 인증서는 발급 후 90일간 유효합니다. 3개월 마다 수동으로 이를 업데이트 하려면 많은 신경을 써야하고 바쁘다 보면 그냥 지나칠 경우도 있습니다.
따라서 자동 갱신 설정을 통해 인증서가 만료되지 않도록 해야 합니다.

4.2 자동 갱신 스크립트 설정 방법

Certbot은 기본적으로 자동 갱신을 지원합니다. certbot renew 명령어를 이용하여 쉘 스크립트를 아래와 같이 생성합니다.

sudo vi renew_ssl.sh
#!/bin/bash
LOGFILE="/home/dev/bin/renew_ssl.log"

echo "SSL renewal certificates start on $(date)" >> $LOGFILE

# Nginx 서버 중지
echo "Stopping Nginx..." >> $LOGFILE
sudo systemctl stop nginx

# 인증서 갱신
echo "Renewing certificates..." >> $LOGFILE
sudo certbot renew >> $LOGFILE 2>&1

# 포트 80 점유 프로세스 확인 후 강제 종료
if sudo lsof -i:80; then
    echo "Killing processes using port 80..." >> $LOGFILE
    sudo fuser -k 80/tcp >> $LOGFILE 2>&1
fi

# Nginx 서버 시작
echo "Starting Nginx..." >> $LOGFILE
sudo systemctl start nginx

# 완료 로그
echo "SSL renewal and Nginx restart complete on $(date)" >> $LOGFILE

생성한 쉘 스크립트 파일에 실행 권한을 부여합니다.

sudo chmod +x renew_ssl.sh

크론탭을 이용하여 일정 시간마다 반복 작업을 수행하도록 배치 스케줄러를 등록합니다.
저는 매일 오전 3시에 수행되도록 설정하였습니다.

sudo crontab -e
0 3 * * * /home/dev/bin/renew_ssl.sh

SSL 인증서 갱신 작업은 매일 수행하더라도 SSL 만료 시점이 아니라면 자동으로 건너뛰기(skip) 되므로 걱정할 필요가 없습니다. 이 과정에서 오류가 발생하지 않으므로 안정적으로 갱신 프로세스를 관리할 수 있습니다.

갱신 과정에서 인증서가 건너뛰어진 경우, 아래와 같이 로그를 통해 갱신이 skip되었음을 확인할 수 있습니다.

image

5. 무료 SSL 인증서의 장점과 주의사항

5.1 무료 SSL 인증서의 장점

  • 비용 절감: SSL 인증서를 무료로 제공하여 초기 비용 부담을 줄여줍니다.
  • 신뢰성 확보: HTTPS 지원으로 사용자와 검색엔진 모두에게 신뢰를 줄 수 있습니다.

5.2 주의사항

  • 갱신 실패 문제 : 갱신 주기를 놓치면 HTTPS 연결이 끊길 수 있습니다.
  • 확장성 제한 : EV SSL과 같은 고급 인증서는 제공하지 않으므로, 기업용 환경에서는 유료 인증서를 고려해야 합니다.

무료 SSL 인증서는 비용 부담 없이 웹사이트 보안을 강화할 수 있는 훌륭한 도구입니다. 특히 Let’s Encrypt는 발급부터 갱신까지 간단하고 자동화된 프로세스를 제공하여 많은 웹사이트 운영자에게 사랑받고 있습니다. 오늘 소개한 내용을 활용해 여러분의 웹사이트를 안전한 Https로 전환해 보시길 바랍니다.

관련 글 보기