10. SSL 보안 인증서 적용 및 도메인 연결
웹사이트가 정식으로 대중을 맞이하기 위해서는 복잡한 서버 IP 주소 대신 기억하기 쉬운 도메인을 연결하고, 사용자 데이터 보호와 브라우저 경고(안전하지 않음) 방지를 위한 SSL 보안 인증서(HTTPS)를 반드시 적용해야 합니다.
Let's Encrypt와 Certbot을 활용해 무료로 SSL 인증서를 발급받고 도메인을 연동하는 표준 과정은 다음과 같습니다.
1. 도메인 DNS 레코드 설정 (A 레코드 연결)
도메인 대행사(또는 Cloudflare 등 DNS 관리 서비스)에서 서버의 공인 IP 주소로 도메인을 연결합니다.
레코드 타입: A
호스트/이름: @ (또는 서브도메인 사용 시 예: ssd)
값/IP 주소: 서버의 실제 공인 IP 주소 (예: 123.456.78.90)
참고: DNS 전파 시간(TTL)에 따라 반영되는 데 수 분에서 최대 수 시간이 소요될 수 있습니다. ping 도메인주소 명령어로 서버 IP가 정상 응답하는지 확인 후 다음 단계로 진행합니다.
2. Certbot 및 Nginx 플러그인 설치
Ubuntu/Debian 환경에서 Let's Encrypt 인증서를 손쉽게 발급하고 Nginx와 연동해 주는 Certbot 도구를 설치합니다.
sudo apt update
sudo apt install -y certbot python3-certbot-nginx
3. SSL 인증서 발급 및 자동 Nginx 설정
Certbot의 Nginx 플러그인을 실행하면, 도메인 소유권 확인 후 인증서 발급부터 Nginx 설정 파일의 HTTPS 블록 자동 구성까지 한 번에 처리됩니다.
sudo certbot --nginx -d 도메인주소 (예: ssd.netcity.co.kr)
진행 과정에서의 입력 사항:
Email 주소 입력: 인증서 만료 임박 알림 및 보안 긴급 연락용 이메일을 입력합니다.
약관 동의 (Terms of Service): Y 입력 후 동의합니다.
이메일 정보 공유 여부: 선택사항 (Y 또는 N)
HTTP 트래픽 리다이렉트 설정:
1: No redirect (HTTP와 HTTPS 동시 허용)
2: Redirect (모든 HTTP 접속을 안전한 HTTPS로 자동 강제 전환 권장) -> 2번 선택 권장
4. Nginx 설정 파일 및 HTTPS 적용 상태 확인
Certbot이 자동으로 수정단 Nginx 설정 파일을 점검합니다. /etc/nginx/sites-available/default 파일을 열어보면 아래와 유사한 구문이 추가된 것을 확인할 수 있습니다.
Nginx 설정
server {
listen 443 ssl; # SSL 포트 활성화
server_name ssd.netcity.co.kr;
root /var/www/html/ssd;
index index.php index.html index.htm;
# Let's Encrypt가 생성한 인증서 경로 자동 매핑
ssl_certificate /etc/letsencrypt/live/ssd.netcity.co.kr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ssd.netcity.co.kr/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
}
}
# HTTP 요청을 HTTPS로 리다이렉트하는 블록
server {
listen 80;
server_name ssd.netcity.co.kr;
return 301 https://$host$request_uri;
}
설정 변경 후 문법 테스트를 진행합니다.
sudo nginx -t
syntax is ok 메시지가 확인되면 Nginx를 재시작하여 설정을 최종 반영합니다.
sudo systemctl restart nginx
5. SSL 인증서 자동 갱신(Auto-renewal) 테스트
Let's Encrypt 인증서는 90일 주기로 만료되지만, Certbot이 시스템 타이머를 통해 자동으로 갱신을 처리합니다. 자동 갱신 기능이 정상 작동하는지 사전 테스트를 수행합니다.
sudo certbot renew --dry-run
에러 없이 Congratulations, all simulated renewals succeeded 메시지가 출력되면, 앞으로 인증서 만료 걱정 없이 안전한 HTTPS 웹 서비스를 안정적으로 운영할 수 있습니다.