---
status: PC_HTTPS_443_RELAY_SELF_TESTED_DEFAULT_OFF
candidate_version: 1.4.106-https-relay-default-off-locked
production_deployed: false
current_continuity: false
dns_changed: false
database_changed: false
public_api_changed: false
validator_changed: false
---

# PC HTTPS 443 relay staging

## 구현 결과

고포트 UPnP가 차단되는 외부 PC를 위해 기존 Ed25519 outbound overlay와 PC gateway를 HTTPS 443에서 전달하는 계층을 PC Sync 후보에 추가했다.

- node key에 서명 결합된 HTTPS origin만 허용
- 로컬 공인 인증서의 hostname과 private key 공개키 일치 확인
- TLS 1.2~1.3만 사용
- 각 요청마다 짧은 runtime policy가 여전히 유효한지 재확인
- RPC 조회, directory, manifest vote, stateless capsule, service shell, overlay register/poll/response만 allowlist
- 파일·chunk 공개, replica write, transaction, validator, nested overlay control 차단
- Authorization, Cookie, gateway token을 내부 gateway로 전달하지 않음
- request/response 크기와 source별 rate 제한
- loopback proxy 뒤에서도 관측 source failure domain을 보존
- service shell의 CSP `form-action 'none'` 보존

새 relay는 `httpsRelayEnabled`가 false면 listener를 만들지 않는다. true여도 signed runtime origin, 유효 정책, 공인 인증서와 key가 모두 일치하지 않으면 fail-closed 한다.

## Staging plan

`services/httpsRelayStagingPlan.js`는 다음 조건을 통과한 3~6개 relay만 PC/Web/Android 입력으로 변환한다.

- HTTPS 443 origin과 hostname이 모두 고유
- admitted node key, failure-domain commitment, 인증서 SHA-256이 모두 고유
- 인증서 publicly-trusted와 hostname-verified 증거
- plan lease 최대 30분
- production traffic, DNS, DB, validator mutation 모두 false
- private key, token, password, secret 필드 전면 거부

출력 artifact도 PC relay, Web failover, Android failover를 모두 false로 둔다. 실제 origin과 인증서가 준비된 뒤 별도 유한 canary에서만 true 정책을 서명한다.

## 검증

- HTTPS relay 단위/loopback 통합 자체시험 통과
- runtime policy, outbound overlay, directory, capsule 회귀시험 통과
- Web verifier와 service worker 회귀시험 통과
- 3 relay/3 domain staging plan 자체시험 통과
- 합성 3-node directory·capsule·service-shell 연속 교환 통과

후보 파일 SHA-256: `7ae05025d924093a5f710c7684f87613164ee0cf11a56a7a88d6a701ac951639`

`scripts/prepare-https-relay-staging.js`는 실제 plan을 offline 검증하고, 명시적 `--probe`에서만 시스템 CA 신뢰, TLS fingerprint, HSTS, `/gateway/health`의 node identity를 읽기 전용으로 대조한다. 이 실행기는 DNS나 production traffic을 변경하지 않는다.

## 현재 live 상태

읽기 전용 topology preflight에서 fresh PC 4대, runtime-ready PC 3대, failure domain 2개를 확인했다. 후보 `1.4.106` 설치와 실제 HTTPS listener 실행은 0대다. 따라서 현재 메인 서버 단절 생존은 여전히 false다.

다음 live gate는 production DNS를 바꾸지 않은 서로 다른 네트워크의 staging HTTPS 443 origin과 공인 인증서 3개다. 그 뒤 후보를 최대 30분 유한 배포하고 두 NAT PC의 outbound 443 session, 3-source directory, 3 capsule, 3 shell을 검증한다.

증거: `evidence/pc-https-443-relay-staging-redacted.json`
