TLS 인증서 및 HTTPS
HTTPS는 패스키, OIDC 콜백 및 대부분의 인터넷 서비스를 위한 기본 요소입니다. 인증서는 방문자가 실제로 사용하는 인증 Host와 서비스 Host를 포함합니다. 내부 주소나 이전 도메인에만 인증서를 발급하면 게이트웨이에서 여전히 브라우저 경고나 로그인 실패가 발생합니다.
페이지 구성 및 인증서 출처
SSL/HTTPS는 다음 세 개의 탭으로 구성됩니다.
| 탭 | 관리 항목 |
|---|---|
인증서 설정 | 현재 HTTPS 상태, 게이트웨이 배포 모드, 수동 업로드 및 인증서 라이브러리 |
자체 서명된 인증서 | 로컬 루트 CA와 해당 CA에서 발급한 도메인 / IP 서버 인증서 |
ACME 인증서 / DNS-01 인증서 | 여러 발급 신청, 발급, 갱신, 로그 및 인증서 라이브러리 연결 |
| 출처 | 적합한 환경 | 주의 사항 |
|---|---|---|
| 기존 인증서 업로드 | CDN, 관리 패널 또는 다른 도구에서 인증서를 이미 발급함 | 인증서 체인과 개인 키를 함께 보관하고 갱신 담당을 기록 |
| 자체 서명 인증서 | LAN 테스트 또는 임시 확인 | 클라이언트에서 직접 신뢰하도록 설정해야 하므로 일반 인터넷 접근에는 부적합 |
| ACME | 검증 가능한 도메인이 있고 자동 갱신을 원함 | 현재 발급 절차는 DNS-01을 사용하므로 DNS API 자격 증명을 보호해야 함 |
인증서 라이브러리 및 수동 업로드
업로드 영역에는 PEM 인증서와 개인 키를 직접 붙여넣을 수 있습니다. 공유 디렉터리를 지원하는 플랫폼에서는 공유 파일에서도 읽을 수 있습니다. 인증서와 개인 키가 서로 일치해야 하며 인증서 체인에는 서버 인증서와 필요한 중간 인증서가 포함됩니다.
저장할 때는 다음 두 가지 작업을 선택할 수 있습니다.
| 작업 | 결과 |
|---|---|
라이브러리에만 저장 | 검증 후 라이브러리에 저장하며 현재 외부 제공 인증서는 바꾸지 않음 |
저장 및 활성화 | 라이브러리에 저장하고 현재 활성 / 기본 폴백 인증서로 설정한 뒤 즉시 게이트웨이와 동기화 |
인증서 라이브러리에는 출처, 적용 도메인, 유효 기간, 업데이트 시각 및 Host 적용 상태가 표시됩니다. 사용 중인 인증서를 삭제하면 HTTPS도 함께 비활성화됩니다. 인증서 라이브러리 지우기는 모든 인증서와 게이트웨이가 이미 받은 인증서 세트를 지우고 HTTPS를 비활성화합니다. HTTPS만 잠시 끄려면 상태 카드의 HTTPS 비활성화를 사용합니다. 인증서는 라이브러리에 그대로 남습니다.
단일 활성 인증서 및 다중 인증서 SNI
인증서 라이브러리에는 여러 인증서를 보관할 수 있으며 배포 모드 및 게이트웨이 동기화에서 게이트웨이가 실제로 받을 인증서 수를 결정합니다.
| 배포 모드 | 게이트웨이 동작 | 적합한 환경 |
|---|---|---|
단일 활성 인증서 | 현재 활성 인증서만 전송하며 모든 도메인에 같은 인증서를 반환 | 하나의 와일드카드 또는 SAN 인증서로 모든 Host를 포함 |
다중 인증서 SNI | 전체 인증서 세트를 전송하고 TLS SNI에 따라 도메인의 인증서를 선택 | 서로 다른 상위 도메인이나 출처의 인증서를 하나의 게이트웨이에서 함께 사용 |
다중 인증서 SNI에서도 기본 / 폴백 인증서가 하나 필요합니다. 클라이언트가 SNI를 보내지 않거나 알 수 없는 Host에 접근하거나 일치하는 인증서가 없으면 게이트웨이는 기본 인증서를 반환합니다. 인증서 배포 모드를 전환한 뒤에는 페이지의 “현재 게이트웨이에서 받은 인증서”를 확인합니다. 저장된 모드와 실행 모드가 다르거나 동기화 오류가 있다면 인증서 라이브러리 내용만 보고 적용 여부를 판단하면 안 됩니다.
서브도메인 환경에서는 인증 Host와 외부에 공개하는 모든 서비스 Host를 포함합니다. 와일드카드 *.example.com은 한 단계의 서브도메인만 포함하며 루트 도메인 example.com이나 a.b.example.com은 포함하지 않습니다. 페이지의 Host 적용 범위 분석은 현재 매핑을 함께 확인해 누락된 항목을 표시합니다.
자체 서명 루트 CA
자체 서명된 인증서는 다음 순서로 사용합니다.
- 루트 인증서를 초기화하고 루트 CA를 다운로드합니다.
- 접근에 사용할 모든 클라이언트나 관리 대상 기기에 루트 CA를 신뢰할 수 있는 루트 인증서로 설치합니다.
- 도메인 및 IP 목록에 실제 접속 이름을 추가합니다.
배포를 클릭해 서버 인증서를 발급하고 설치하거나 서버 인증서를 다운로드해 직접 사용합니다.
서버 인증서의 유효 기간은 20년입니다. 유효 기간이 길다고 해서 개인 키 보호나 폐기 계획을 무시해도 되는 것은 아닙니다. 루트 CA를 재생성하거나 지우면 기존 루트 CA에서 발급한 서버 인증서를 더 이상 신뢰할 수 없으므로 화면에서 두 번 확인을 요구합니다. 실행 전에 새 루트 인증서 배포와 롤백 방안을 준비합니다.
자체 서명 인증서는 통제된 LAN, 테스트 기기 또는 루트 인증서를 일괄 배포할 수 있는 환경에 적합합니다. 인터넷 방문자, 서드파티 OIDC 및 관리되지 않는 클라이언트에는 일반적으로 공개적으로 신뢰받는 CA를 사용합니다.
ACME 발급 신청
Windows 이외의 플랫폼에서 처음 사용할 때는 먼저 시스템 설정 → ACME에서 acme.sh를 초기화하고 필요에 따라 기본 CA를 선택합니다. CA를 전환해도 이후 발급 신청과 자동 갱신에만 영향을 주며 이미 발급되거나 배포된 인증서를 즉시 교체하지는 않습니다.
각 ACME 발급 신청은 다음 항목을 독립적으로 저장합니다.
- 이름과 하나 이상의 도메인
- DNS 제공자 및 해당 신청에서 사용하는 API 자격 증명
- 자동 갱신 스위치
- 현재 인증서, 인증서 라이브러리 연결 및 최근 작업 상태
저장은 발급 신청 설정만 수정하며 저장 후 발급 신청은 발급 작업을 즉시 제출합니다. 발급에 성공하면 인증서가 인증서 라이브러리에 자동으로 동기화되지만 반드시 현재 인증서가 되는 것은 아닙니다. 단일 활성 모드에서는 현재 인증서로 설정을 추가로 실행할 수 있고, 다중 인증서 SNI 모드에서는 게이트웨이 인증서 세트에 포함되었는지 확인합니다.
같은 발급 신청을 갱신하거나 재발급할 때는 이미 연결된 인증서 라이브러리 레코드를 제자리에서 교체하고 기존 레이블과 활성 / 기본 배포 역할을 유지해 인증서가 중복으로 추가되지 않도록 합니다. 도메인을 수정한 뒤 발급 작업이 실패하거나 중지되면 이전에 사용할 수 있던 발급 결과를 보존합니다. 새 인증서를 게이트웨이에 전송하지 못하면 이전 SSL 설정을 복원해 다시 전송합니다. 그 사이 더 최신 설정이 동시에 저장되었다면 해당 설정을 보존해 전송합니다. 작업 자체는 계속 실패로 종료되므로 로그에서 이전 설정을 복원했는지, 최신 설정을 보존했는지 또는 보안 설정도 복구하지 못했는지 확인합니다.
발급 신청 메뉴에서는 작업 로그 보기, 인증서 다운로드, 인증서 라이브러리 수동 업데이트, 배포, 인증서 삭제 또는 발급 신청 삭제를 실행할 수 있습니다. 두 삭제 작업의 범위는 다음과 같이 다릅니다.
| 작업 | 보존되는 내용 |
|---|---|
| 인증서 삭제 | 발급 신청 설정은 유지하고 현재 저장된 발급 결과와 인증서 라이브러리 연결을 제거 |
| 발급 신청 삭제 | 발급 신청 설정을 삭제하며 기존 인증서와 연결도 함께 정리 |
작업이 실행 중이거나 자동 갱신 중이면 목록 작업이 일시적으로 잠깁니다. 작업 로그에서는 DNS 자격 증명, DNS API 요청 한도 또는 ACME 빈도 제한 등의 원인을 안내합니다. 작업을 중지하면 실행 중인 acme.sh 프로세스를 종료하고 작업을 중지됨으로 표시하므로 나중에 다시 시작합니다.
Windows 네이티브 버전: DNS-01 인증서
Windows x86_64 버전에서는 SSL/HTTPS → DNS-01 인증서에서 인증서를 신청합니다. 설치 패키지에 인증서 클라이언트가 내장되어 있어 ACME.sh를 초기화하거나 다운로드할 필요가 없습니다. 이 경로는 Let's Encrypt만 사용하고 DNS-01 검증만 허용하며 HTTP-01이나 다른 인증 기관으로 전환하는 기능은 제공하지 않습니다.
페이지에서 지원되는 DNS 제공자를 선택하고 최소 권한의 API 자격 증명을 저장합니다. 현재 Alibaba Cloud DNS, Baidu Cloud DNS, Cloudflare, DNSPod, Tencent Cloud DNSPod, DuckDNS, Dynu, dynv6, GoDaddy, Huawei Cloud DNS 및 Porkbun을 지원합니다. Cloudflare는 API 토큰과 Global API Key 방식의 자격 증명을 모두 지원하며 특정 Zone으로 제한한 토큰을 우선 사용합니다.
새 발급 신청은 기본적으로 자동 갱신을 활성화하며 발급에 성공하면 인증서 라이브러리에 추가됩니다. 단일 활성 인증서 모드에서는 처음 발급한 뒤에도 현재 인증서로 직접 설정합니다. Windows 페이지에서는 acme.sh 초기화가 필요하지 않으며 CA 전환도 제공하지 않습니다.
fnOS SSL 인증서 라이브러리 동기화(네이티브 FPK 전용)
fnOS 네이티브 FPK에서는 시스템 설정 → fnOS → fnOS SSL 인증서 동기화를 통해 fn-knock 인증서 라이브러리의 내용을 fnOS 시스템에 있는 기존 인증서 레코드와 동기화할 수 있습니다.
동기화는 도메인과 SAN 집합이 완전히 일치하는 기존 fnOS 인증서만 업데이트하며 fnOS 시스템의 인증서 레코드를 새로 만들거나 삭제하지 않습니다. 따라서 양쪽의 적용 도메인 집합이 일치하는지 먼저 확인한 뒤 개별 또는 전체 동기화를 실행합니다. 일치하는 항목이 없다면 동기화 기능이 대신 만들 것으로 기대하지 말고 인증서 레코드부터 조정합니다.
필요할 때 직접 동기화하거나 자동 동기화를 활성화할 수 있습니다. 자동 모드는 로컬 인증서 라이브러리가 변경된 뒤 잠시 변경 사항을 모아 기다렸다가 일치하는 항목을 한 번에 동기화하고 fnOS 서비스를 한 번 새로 고칩니다. 대상 인증서에서 fnOS 자체 자동 갱신도 활성화했다면 이후 갱신이 동기화 결과를 덮어쓸 수 있으므로 어느 쪽에서 갱신을 담당할지 명확히 정합니다.
권장 설정 순서
- 외부에 최종 공개할 도메인과 포트를 정하고 사설망 주소로 먼저 인증서를 신청하지 않습니다.
- DNS에서 인증 Host와 서비스 Host가 올바르게 조회되는지 확인합니다.
SSL/HTTPS에서 인증서를 업로드, 신청 또는 선택합니다.- 인증서 수에 따라 단일 활성 인증서나 다중 인증서 SNI를 선택하고 게이트웨이가 예상한 인증서 세트를 받았는지 확인합니다.
- 인증서 적용 범위 안내를 확인하고 포함되지 않은 Host를 수정합니다.
- 모바일 네트워크에서 인증 Host와 서비스 Host 하나에 접근해 브라우저 인증서 체인, 도메인, 유효 기간 및 로그인 절차를 확인합니다.
자동 HTTPS의 범위
시스템의 자동 HTTPS는 게이트웨이에서 HTTP를 HTTPS로 리디렉션하고 설정된 인증서를 활성화하는 기능만 담당합니다. 도메인을 대신 신청하거나 라우터 포트를 열거나 CDN 오리진 연결을 설정하지는 않습니다. Docker와 OpenWrt 환경에서는 호스트 관련 스위치를 제공하지 않습니다. 외부 리버스 프록시에서 TLS를 종료한다면 해당 프록시가 HTTPS를 강제합니다. Windows에서 이 스위치가 표시되더라도 실제 인바운드 경로와 사용할 수 있는 80번 포트가 먼저 필요합니다. 7999가 기본적으로 모든 인터페이스에서 수신 대기한다는 사실만으로 Windows 방화벽, 라우터/NAT 또는 통신사가 인터넷 접근을 허용했다는 뜻은 아닙니다.
문제 해결
브라우저에 도메인 불일치가 표시됨: 인증서의 DNS 이름이 현재 Host를 포함하지 않거나 업스트림 CDN이 잘못된 사이트를 오리진으로 사용하고 있습니다.
인증서가 라이브러리에 있지만 인터넷에서 이전 인증서를 반환함: 현재 / 기본 인증서로 설정되었는지, 배포 모드가 올바른지, 게이트웨이가 받은 인증서 세트가 업데이트되었는지 확인합니다.
여러 도메인에서 같은 잘못된 인증서를 반환함: 현재 단일 활성 모드인지, 다중 인증서 SNI에서 일치하는 항목이 없어 기본 인증서로 폴백했는지 확인합니다.
업로드 실패: PEM 내용, 개인 키 일치 여부 및 인증서 체인 순서를 확인하고 PKCS#12 파일 내용을 PEM 입력란에 업로드하지 않습니다.
ACME 실패: DNS 제공자 자격 증명, DNS API 요청 한도 및 TXT 레코드 전파를 확인합니다. 현재 발급 절차에서는 DNS-01만 사용하므로 HTTP-01 방식으로 문제를 해결하려고 하지 않습니다.
ACME 발급에 성공했지만 적용되지 않음: 인증서 라이브러리 연결과 단일 활성 모드에서
현재 인증서로 설정을 실행했는지 확인합니다.cloudflared에서
https://localhost:7999사용 실패: 업스트림 TLS 이름과 인증서가 일치하는지 확인합니다. 일치시킬 수 없다면 검증된 HTTP 오리진 연결 방식을 먼저 사용하거나 터널의 TLS 설정을 조정합니다.서비스 페이지는 정상이나 패스키를 사용할 수 없음: 인증 Host에 유효한 HTTPS와 올바른 RP 도메인으로 접근하는지 확인합니다.
