환경: Windows 미니 PC, Node.js 웹서버, Let's Encrypt 무료 인증서 (90일 유효)
최종 업데이트: 2026-02-24
Let's Encrypt 인증서는 90일(약 3개월)마다 갱신이 필요합니다. 만료 시 브라우저에서 "주의 요함" 경고가 표시됩니다.
원인: Certbot이 설치되지 않았거나, 환경 변수(Path)에 등록되지 않음.
해결:
& "C:\Program Files\Certbot\bin\certbot.exe" certificates원인: Certbot 재설치 등으로 기존 인증서 설정 파일(renewal config)이 유실됨.
해결: 갱신이 아닌 신규 발급으로 진행해야 함. (아래 DNS 방식 참고)
원인: Let's Encrypt 서버가 80번 포트로 접속하려 했으나 차단됨.
해결: 80번 포트 개방이 어렵다면 DNS 방식으로 우회 (포트 개방 불필요).
원인: Node.js 서버가 HTTP → HTTPS 리다이렉트용 80번 포트를 함께 사용 중. 단순히 콘솔만 멈춘 것이 아니라 프로세스가 완전히 종료되지 않음.
해결:
netstat -ano | findstr :80원인: 예스닉에 TXT 레코드를 등록한 직후 즉시 Enter를 눌러, DNS 정보가 전 세계로 전파되기 전에 인증 시도함.
해결:
원인: C:\Certbot\live\starnuri.kr\ 폴더의 fullchain.pem, privkey.pem은 심볼릭 링크(0KB)입니다. 이 파일들을 그대로 복사하면 실제 인증서 데이터가 포함되지 않아 서버가 만료된 인증서를 계속 사용합니다.
해결: C:\Certbot\archive\starnuri.kr\ 폴더의 실제 데이터가 있는 파일을 복사해야 합니다. (아래 5번 섹션 참고)
80번 포트를 열 수 없는 환경에서 가장 확실한 방법입니다. 서버를 끌 필요도 없습니다.
certbot certonly --manual --preferred-challenges dns -d starnuri.kr질문: 예스닉에 등록된 메일이어야 하나?
답: 아니요. 실제로 사용 중인 개인 이메일(네이버, Gmail 등)을 입력하면 됩니다. Let's Encrypt에서 인증서 만료 알림을 보내는 용도입니다.
_acme-challenge (도메인명은 항상 동일)명령어를 다시 실행하면 새로운 암호 값이 발행될 수 있습니다. 이 경우:
| 단계 | 시도 내용 | 결과 | 이유 및 조치 사항 |
|---|---|---|---|
| 1단계 | Certbot 기본 갱신 (certbot renew) |
실패 | 프로그램 미설치/환경변수 미등록, 기존 설정 유실 → Certbot 재설치 및 신규 발급 필요 |
| 2단계 | Standalone 방식 (certbot certonly --standalone -d starnuri.kr) |
실패 | Timeout: 80번 포트를 외부에서 접근 불가(공유기/방화벽). Node.js HTTP 리다이렉트 서버가 80번 포트 점유 중이었음 → 완전 종료 후에도 80번 포트 외부 차단으로 실패 |
| 3단계 | DNS 인증 방식 (1차) | 실패 | TXT 레코드(BpSbN3Il...) 등록 후 즉시 Enter → DNS 전파 시간 부족 → "Incorrect TXT record found" |
| 4단계 | DNS 인증 방식 (2차) | 성공 | 새로운 값(5BwgpXrX...) 예스닉 등록 완료 → 10분 대기 → Enter → 인증 성공 |
인증 성공 시 "Successfully received certificate" 메시지가 표시됩니다.
C:\Certbot\live\starnuri.kr\ 폴더의 파일은 심볼릭 링크(0KB)이므로 복사하면 안 됩니다. 반드시 아래 archive 폴더의 실제 파일을 사용하세요.
C:\Certbot\archive\starnuri.kr\ (실제 데이터가 있는 파일)fullchain1.pem → starnuri.kr-chain.pem 및 starnuri.kr-crt.pem (두 개로 복사)privkey1.pem → starnuri.kr-key.pemC:\server\nurisoft\ssl\파일을 복사하고 서버를 재시작했는데도 "주의 요함"이 사라지지 않는다면, 심볼릭 링크(0KB) 파일을 복사했을 가능성이 높습니다.
해결: C:\Certbot\archive\starnuri.kr\ 폴더의 fullchain1.pem, privkey1.pem을 사용하여 위 5번 절차를 다시 수행하세요.
증상: 엣지(Edge)에서는 자물쇠가 정상 표시되는데, 크롬에서만 "주의 요함"이 계속 뜸.
원인: 크롬이 이전 만료된 인증서 정보를 캐시에 저장해 두고 새로 요청하지 않음.
해결 방법 (순서대로 시도):
Ctrl + Shift + R 또는 Ctrl + F5Ctrl + Shift + N으로 시크릿 창을 띄운 뒤 접속 (캐시 미사용)엣지에서 정상 표시된다면 서버 설정과 인증서 교체는 성공한 것이므로, 크롬 캐시만 초기화하면 됩니다.
DNS 방식(manual)으로 발급받은 경우, 예스닉에 직접 TXT 값을 입력해야 하므로 100% 완전 자동 갱신은 어렵습니다. 하지만 환경에 따라 자동화 수준을 높일 수 있습니다.
공유기와 방화벽에서 80번 포트를 개방할 수 있다면, Windows 작업 스케줄러에 등록하여 3개월마다 자동 갱신할 수 있습니다.
certbot renew --pre-hook "taskkill /f /im node.exe" --post-hook "cd C:\server\nurisoft && node app.js"작업 스케줄러에서 매월 1일 새벽 등으로 실행 주기를 설정하면, 3개월마다 자동으로 인증서를 갱신합니다. 단, 갱신 후 파일 복사(5번 절차)가 필요할 수 있으므로 post-hook에 복사 스크립트를 추가하는 것이 좋습니다.
80번 포트를 열기 어려운 현재 환경에서는 다음 방법을 활용하세요.
renew_ssl.bat 예시:
@echo off
certbot certonly --manual --preferred-challenges dns -d starnuri.kr
pauseC:\server\nurisoft\renew_ssl.bat 등으로 저장 후, 3개월 뒤 이 파일을 관리자 권한으로 실행하면 예스닉에 넣을 값 확인 단계로 바로 넘어갑니다.