웹사이트를 운영하다 보면 보안이 점점 더 중요해진다. HTTPS는 데이터를 암호화해서 주고받는 방식이라 사용자의 개인정보를 보호하고, 신뢰성을 높여준다. 브라우저에서도 HTTP 사이트에 접속하면 "안전하지 않음" 경고를 띄울 정도다. 검색 엔진 순위에도 영향을 주니, 이제는 선택이 아니라 필수다.
유료로 발급해주는 기관이 많은데, 왜 무료일까? Let's Encrypt는 무료로 SSL/TLS 인증서를 발급해주는 서비스다. 인터넷 보안을 널리 퍼트리자는 목표로 시작된 비영리 프로젝트라 비용이 들지 않는다. 누구나 쉽게 인증서를 발급받아 웹사이트를 보호할 수 있으며, 유료 인증서와 성능 차이도 거의 없어서 개인 프로젝트나 소규모 사이트에 적합하다.
VM에 웹 서버를 띄웠다면, Let's Encrypt로 HTTPS를 적용해보자. 설치부터 설정까지 간단하며, 자동화 도구도 제공된다. 절차를 하나씩 따라가 보자.
VM에 certbot을 설치한다. (우분투 환경 기준)
sudo apt update && sudo apt install certbot python3-certbot-nginx
도메인이 연결된 상태에서 아래 명령어를 실행해 인증서를 발급받는다.
sudo certbot --nginx -d your_domain.com -d www.your_domain.com
이 과정에서 Let's Encrypt가 도메인 소유권을 확인하며, 성공적으로 인증서가 발급되면 자동으로 nginx 설정이 적용된다.
인증서 발급 후, nginx 설정이 올바른지 확인한다. 기본적인 설정 예시는 다음과 같다.
server {
listen 80;
server_name your_domain.com www.your_domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name your_domain.com www.your_domain.com;
ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
root /var/www/html;
index index.html;
}
설정이 끝났다면 다음 명령어로 오류 여부를 확인하고 적용한다.
sudo nginx -t
sudo systemctl reload nginx
443 포트가 열리고, 인증서 경로도 자동으로 설정된다. 필요하면 다시 점검하고 재시작하자.
브라우저에서 https://your_domain.com으로 접속하여 자물쇠 아이콘이 표시되는지 확인한다. 보인다면 성공이다!
Let's Encrypt 인증서는 90일마다 갱신해야 한다. 자동 갱신을 설정하려면 아래 명령어를 크론탭에 추가하면 된다.
sudo certbot renew --dry-run
이 명령어를 실행해 테스트하고, 문제없이 동작한다면 자동 갱신이 설정된 것이다.