환경: Windows 미니 PC, Node.js + PM2, Let's Encrypt (90일)
최종 업데이트: 2026-10-25
만료 5일 전에 이 PC가 인증서를 바꾸고 서버를 다시 띄웁니다. 예스닉 TXT 입력이나 파일 복사는 하지 않습니다.
starnuri.kr, nurionsoft.kr, www.nurionsoft.krNurisoft-SSL-RenewC:\server\nurisoft\scripts\renew-ssl.ps1C:\server\nurisoft\logs\ssl-renew.log갱신 중 약 1분 동안 사이트가 멈췄다가 자동으로 다시 켜집니다. 검증은 443번 포트로 합니다. 80번은 인터넷에서 들어오지 않아 자동 갱신에 쓰지 않습니다.
그 시각에 필요한 상태
관리자 화면에 SSL 인증서 만료일과 자동 업데이트 예정 시각이 표시됩니다. 실패로 나올 때만 아래 수동 절차를 사용합니다.
2026-10-25에 자동 갱신 테스트를 실행했고, 세 도메인 인증서가 발급된 뒤 위 예정 시각으로 예약되었습니다.
서버는 끄지 않습니다. 1~5단계는 사이트 켠 채로 진행하고, 6번(재시작)에서만 잠깐 멈춥니다. 관리자 PowerShell 사용.
& "C:\Program Files\Certbot\bin\certbot.exe" certonly --manual --preferred-challenges dns -d starnuri.kr_acme-challenge → Certbot에 나온 value 전체 복사·붙여넣기 → 저장data가 Certbot value와 완전히 같을 때만 PowerShell에서 EnterSuccessfully received certificate
live 폴더는 쓰지 말 것)C:\Certbot\archive\starnuri.kr\ 의 가장 큰 번호 확인
(예: fullchain3.pem · privkey3.pem) 후, 번호를 바꿔 실행:
Copy-Item -Force "C:\Certbot\archive\starnuri.kr\fullchain3.pem" "C:\server\nurisoft\ssl\starnuri.kr-chain.pem"
Copy-Item -Force "C:\Certbot\archive\starnuri.kr\fullchain3.pem" "C:\server\nurisoft\ssl\starnuri.kr-crt.pem"
Copy-Item -Force "C:\Certbot\archive\starnuri.kr\privkey3.pem" "C:\server\nurisoft\ssl\starnuri.kr-key.pem"pm2 restart nurisoft-weblive의 0KB 심볼릭 링크 복사 → 서버가 옛 인증서 유지pm2 restart 안 함 → 관리자 화면/브라우저에 옛 만료일Let's Encrypt 인증서는 90일(약 3개월)마다 갱신이 필요합니다. 만료 시 브라우저에서 "주의 요함" 경고가 표시됩니다.
사이트가 이미 HTTPS로 잘 떠 있는 상태에서 만료일만 다가온 경우, 서비스를 멈추지 않고 갱신하려면 아래 순서를 따르면 됩니다.
한 줄 요약: 상단 요약 목록 기준으로 4. Node 서버 재시작 이전의 1~3단계까지는 서버를 중지할 필요가 없습니다. (DNS 방식 기준)
C:\Certbot\archive\starnuri.kr\의 가장 최근 번호 fullchainN.pem · privkeyN.pem을 C:\server\nurisoft\ssl\ 규칙에 맞게 복사합니다. (live의 심볼릭 링크는 사용하지 않음 — 아래 5번 섹션 참고.)원인: 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번 포트를 열 수 없는 환경에서 가장 확실한 방법입니다. Node 웹서버를 끌 필요도 없습니다. (이미 사이트가 떠 있는 상태에서 갱신하는 절차는 서비스 정상 가동 중 갱신하기 참고.)
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으로 시크릿 창을 띄운 뒤 접속 (캐시 미사용)엣지에서 정상 표시된다면 서버 설정과 인증서 교체는 성공한 것이므로, 크롬 캐시만 초기화하면 됩니다.
관리자 화면의 자동 업데이트 예정 줄에 실패가 보이거나, 만료일이 다가오는데 날짜가 늘지 않으면 C:\server\nurisoft\logs\ssl-renew.log를 확인합니다.
Nurisoft-SSL-Renew를 한 번 실행합니다.