본문 바로가기

서버 리뷰/Proxmox

Proxmox VE에서 무료 SSL 인증서 쉽게 설정하기

728x90
반응형

Proxmox VE의 기본 인증서는 브라우저에서 경고를 띄웁니다. 이 가이드는 Let’s Encrypt로 무료 SSL 인증서를 설정하거나, 자체 서명 인증서를 새로 만드는 방법을 초보자도 쉽게 따라 할 수 있도록 설명합니다. 특히, 도메인 및 챌린지 설정을 간단히 풀어 설명했습니다.

준비해야 할 것

  • Proxmox VE가 설치된 서버 (최신 버전, 예: 8.1 권장)
  • Let’s Encrypt를 사용할 경우: 공인 도메인(예: pve.yourdomain.com)과 인터넷 연결
  • Proxmox 웹 UI(https://your-server-ip:8006) 또는 SSH 접근

도메인 없어도 괜찮나요? 공인 도메인이 없으면 Let’s Encrypt 대신 자체 서명 인증서를 사용하면 됩니다. 둘 다 무료입니다!

1. Let’s Encrypt로 무료 인증서 설정

Let’s Encrypt는 무료로 신뢰할 수 있는 SSL 인증서를 제공하며, Proxmox에서 쉽게 설정할 수 있습니다. 공인 도메인이 필요합니다.

1-1. Let’s Encrypt 계정 만들기

먼저, Let’s Encrypt에 계정을 등록해 인증서를 받을 준비를 합니다.

  1. Proxmox 웹 UI에 로그인(https://your-server-ip:8006).
  2. 왼쪽 메뉴에서 Datacenter > ACME > Accounts로 이동.
  3. Add 버튼 클릭:
    • 계정 이름: 예: letsencrypt
    • 이메일: 본인의 이메일 입력 (인증서 갱신 알림용).
    • ACME 서버: Let’s Encrypt V2 Production 선택.
    • 약관에 동의 체크 후 Register 클릭.

: 처음엔 Let’s Encrypt V2 Staging으로 테스트한 후, 문제가 없으면 Production으로 전환하세요.

1-2. 도메인 및 챌린지 설정

Let’s Encrypt가 당신이 도메인의 소유자인지 확인하려면 챌린지라는 인증 방식을 설정해야 합니다. 두 가지 방법이 있습니다: HTTP-01(웹 서버 방식)과 DNS-01(DNS 설정 방식).

  • HTTP-01: 서버의 포트 80이 인터넷에서 열려 있어야 합니다. 간단하지만 방화벽 설정이 필요할 수 있습니다.
  • DNS-01: 도메인의 DNS 설정을 변경해 인증합니다. 포트 80을 열 수 없는 환경에 적합합니다.

HTTP-01 설정

  1. Datacenter > ACME > Challenge Plugins > Add로 이동.
  2. 플러그인 ID: 예: http-challenge
  3. 유형: HTTP-01 선택.
  4. 포트 80이 방화벽에서 열려 있는지 확인:
    • 서버 방화벽에서 포트 80 허용: ufw allow 80 또는 iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  5. Create 클릭.

DNS-01 설정 (예: Cloudflare 사용)

  1. Cloudflare 계정에서 API 토큰 생성:
    • Cloudflare 대시보드 > My Profile > API Tokens > Create Token.
    • ‘Edit Zone DNS’ 권한 선택, 토큰 복사.
  2. Datacenter > ACME > Challenge Plugins > Add로 이동.
  3. 플러그인 ID: 예: dns-challenge
  4. 유형: DNS-01 선택.
  5. DNS API: dns_cloudflare 선택, API 토큰 입력.
  6. Create 클릭.

어떤 챌린지를 선택할까? 서버가 인터넷에 공개되어 있다면 HTTP-01이 간단합니다. 포트 80을 열 수 없거나 내부 네트워크라면 DNS-01을 선택하세요.

1-3. 인증서 주문

도메인과 챌린지를 설정했으니 인증서를 발급받습니다.

  1. Proxmox 웹 UI에서 Node > Certificates > Add로 이동.
  2. 설정 입력:
    • 도메인: 예: pve.yourdomain.com
    • ACME 계정: 1-1에서 만든 계정 선택.
    • 챌린지 플러그인: HTTP-01 또는 DNS-01 선택.
  3. Order Certificates Now 클릭.
  4. 10초 후 웹 UI가 새로고침되며 인증서가 적용됨.

1-4. 자동 갱신 확인

Let’s Encrypt 인증서는 90일마다 만료되지만, Proxmox가 자동으로 갱신합니다.

  1. 갱신 상태 확인: journalctl -u pve-daily-update.service
  2. 문제가 있다면 Datacenter > ACME에서 설정 재확인.

2. 자체 서명 인증서 새로 만들기

공인 도메인이 없거나 내부 네트워크에서 사용할 경우, Proxmox의 자체 서명 인증서를 재생성합니다. 브라우저 경고가 뜨지만 무료로 사용 가능합니다.

단계

  1. 기존 인증서 백업:안전하게 기존 인증서를 저장합니다.
  2. cp /etc/pve/pve-root-ca.pem /etc/pve/pve-root-ca.pem.bak cp /etc/pve/local/pve-ssl.key /etc/pve/local/pve-ssl.key.bak cp /etc/pve/local/pve-ssl.pem /etc/pve/local/pve-ssl.pem.bak
  3. 새 인증서 생성:Proxmox 명령어로 인증서를 새로 만듭니다.
  4. pvecm updatecerts --force systemctl restart pveproxy
  5. 브라우저에서 신뢰 설정:
    • /etc/pve/pve-root-ca.pem 파일을 PC로 복사.
    • Windows: 인터넷 옵션 > 콘텐츠 > 인증서 > 신뢰할 수 있는 루트 인증 기관에 임포트.
    • macOS: 키체인 접근에서 인증서 추가, ‘항상 신뢰’로 설정.
  6. 확인:
    • 브라우저에서 https://your-server-ip:8006 접속, 경고 없이 접속되는지 확인.
    • CLI로 확인: openssl s_client -connect your-server-ip:8006

왜 자체 서명 인증서? 도메인이 없거나 테스트 환경에서 간단히 설정할 때 유용합니다. 브라우저 경고는 신뢰 설정으로 해결 가능!

문제 해결

  • 인증서 적용 안 됨: journalctl -u pveproxy.service로 오류 확인.
  • 포트 80 차단: HTTP-01 대신 DNS-01 챌린지 사용, 또는 방화벽에서 ufw allow 80 실행.
  • 웹 UI 접속 안 됨: systemctl restart pveproxy로 서비스 재시작.
반응형