🔐 starnuri.kr SSL 인증서 갱신 가이드

환경: Windows 미니 PC, Node.js 웹서버, Let's Encrypt 무료 인증서 (90일 유효)

최종 업데이트: 2026-02-24

📑 목차

1. 개요 및 인증서 만료 증상

Let's Encrypt 인증서는 90일(약 3개월)마다 갱신이 필요합니다. 만료 시 브라우저에서 "주의 요함" 경고가 표시됩니다.

2. 실패 원인별 해결 방법

❌ 실패 1: "certbot은(는) 인식되지 않습니다"

원인: Certbot이 설치되지 않았거나, 환경 변수(Path)에 등록되지 않음.

해결:

❌ 실패 2: "No renewals were attempted"

원인: Certbot 재설치 등으로 기존 인증서 설정 파일(renewal config)이 유실됨.

해결: 갱신이 아닌 신규 발급으로 진행해야 함. (아래 DNS 방식 참고)

❌ 실패 3: "Timeout during connect (likely firewall problem)"

원인: Let's Encrypt 서버가 80번 포트로 접속하려 했으나 차단됨.

해결: 80번 포트 개방이 어렵다면 DNS 방식으로 우회 (포트 개방 불필요).

❌ 실패 4: 80번 포트 충돌 (서버를 껐는데도 실패)

원인: Node.js 서버가 HTTP → HTTPS 리다이렉트용 80번 포트를 함께 사용 중. 단순히 콘솔만 멈춘 것이 아니라 프로세스가 완전히 종료되지 않음.

해결:

❌ 실패 5: "Incorrect TXT record found" (DNS 방식 1차 실패)

원인: 예스닉에 TXT 레코드를 등록한 직후 즉시 Enter를 눌러, DNS 정보가 전 세계로 전파되기 전에 인증 시도함.

해결:

❌ 실패 6: 서버 재시작 후에도 "주의 요함"이 계속 뜸

원인: C:\Certbot\live\starnuri.kr\ 폴더의 fullchain.pem, privkey.pem심볼릭 링크(0KB)입니다. 이 파일들을 그대로 복사하면 실제 인증서 데이터가 포함되지 않아 서버가 만료된 인증서를 계속 사용합니다.

해결: C:\Certbot\archive\starnuri.kr\ 폴더의 실제 데이터가 있는 파일을 복사해야 합니다. (아래 5번 섹션 참고)

3. DNS 방식 인증서 발급 (권장)

80번 포트를 열 수 없는 환경에서 가장 확실한 방법입니다. 서버를 끌 필요도 없습니다.

3-1. Certbot DNS 방식 명령어

certbot certonly --manual --preferred-challenges dns -d starnuri.kr

3-2. 이메일 주소 입력

질문: 예스닉에 등록된 메일이어야 하나?

답: 아니요. 실제로 사용 중인 개인 이메일(네이버, Gmail 등)을 입력하면 됩니다. Let's Encrypt에서 인증서 만료 알림을 보내는 용도입니다.

3-3. 예스닉(Yesnic) DNS 설정

  1. 예스닉 로그인 → [도메인 관리][네임서버 고급설정]
  2. [SPF(TXT) 레코드 관리] 옆 [관리화면 열기 ▼] 클릭
  3. 입력 정보:
  4. [다음 단계로] → 고객 확인사항 체크 → [신청하기] 클릭
  5. 등록완료 메시지 확인
⚠️ 중요: Enter 치기 전 대기
예스닉 [신청하기] 완료 후 최소 10분 대기해야 합니다. DNS 전파 시간이 필요합니다. 너무 빨리 Enter를 누르면 "Incorrect TXT record found"로 실패합니다.

3-4. 재시도 시 새로운 값이 나온 경우

명령어를 다시 실행하면 새로운 암호 값이 발행될 수 있습니다. 이 경우:

4. 갱신 시도 히스토리

단계 시도 내용 결과 이유 및 조치 사항
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 → 인증 성공

5. 성공 후 파일 교체 및 서버 재시작

인증 성공 시 "Successfully received certificate" 메시지가 표시됩니다.

⚠️ 심볼릭 링크 주의
C:\Certbot\live\starnuri.kr\ 폴더의 파일은 심볼릭 링크(0KB)이므로 복사하면 안 됩니다. 반드시 아래 archive 폴더의 실제 파일을 사용하세요.
📌 최종 마무리 절차

파일을 복사하고 서버를 재시작했는데도 "주의 요함"이 사라지지 않는다면, 심볼릭 링크(0KB) 파일을 복사했을 가능성이 높습니다.

해결: C:\Certbot\archive\starnuri.kr\ 폴더의 fullchain1.pem, privkey1.pem을 사용하여 위 5번 절차를 다시 수행하세요.

7. 브라우저별 표시 차이 (크롬 캐시)

증상: 엣지(Edge)에서는 자물쇠가 정상 표시되는데, 크롬에서만 "주의 요함"이 계속 뜸.

원인: 크롬이 이전 만료된 인증서 정보를 캐시에 저장해 두고 새로 요청하지 않음.

해결 방법 (순서대로 시도):

엣지에서 정상 표시된다면 서버 설정과 인증서 교체는 성공한 것이므로, 크롬 캐시만 초기화하면 됩니다.

8. 자동/반자동 갱신

DNS 방식(manual)으로 발급받은 경우, 예스닉에 직접 TXT 값을 입력해야 하므로 100% 완전 자동 갱신은 어렵습니다. 하지만 환경에 따라 자동화 수준을 높일 수 있습니다.

8-1. 80번 포트를 열 수 있는 경우 (완전 자동화)

공유기와 방화벽에서 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에 복사 스크립트를 추가하는 것이 좋습니다.

8-2. DNS 방식을 써야 하는 경우 (반자동화)

80번 포트를 열기 어려운 현재 환경에서는 다음 방법을 활용하세요.

renew_ssl.bat 예시:

@echo off certbot certonly --manual --preferred-challenges dns -d starnuri.kr pause

C:\server\nurisoft\renew_ssl.bat 등으로 저장 후, 3개월 뒤 이 파일을 관리자 권한으로 실행하면 예스닉에 넣을 값 확인 단계로 바로 넘어갑니다.

💡 갱신 주기 및 알림
Let's Encrypt 인증서는 90일마다 갱신이 필요합니다. 만료 2주 전(예: 5월 중순)에 구글 캘린더나 미리 알림에 등록해 두면 놓치지 않고 갱신할 수 있습니다. 이 문서를 3개월마다 참고하세요.