HAProxy는 정상입니다 — 443이 SNI 패스스루로 relay.ap1.mihosrc.com 을 miho_relay_back (relay)으로 제대로 넘기고 있습니다(82~94, 202줄). 구조는 맞아요. 그러면 X509_V_ERR=62 (hostname mismatch)의 원인은 relay 서버 인증서(relay.crt)의 CN/SAN에 relay.ap1.mihosrc.com 이 없는 것 으로 좁혀집니다. relay가 패스스루로 자기 인증서를 그대로 내미는데, 그 인증서의 도메인이 에이전트가 접속한 이름과 안 맞는 겁니다. 확인 (서버 7490fb에서) — relay.crt에 그 도메인이 있나 sh openssl x509 -in /etc/miho/relay.crt -noout -subject -ext subjectAltName 거의 확실히 CN/SAN에 relay.ap1.mihosrc.com 이 없을 겁니다 (예전에 relay.mihosrc.com 이나 다른 이름, 혹은 테스트용 CN으로 발급됐을 것). 해결 — relay.crt를 올바른 도메인으로 재발급 gen_certs.sh 에 RELAY_DNS 로 실제 접속 도메인을 주고 다시 발급합니다. CA는 그대로 두고 relay.crt/key만 새로 만들면 됩니다: sh cd ~/work/server/mihosrc_release/mihosrc_p1 # relay.ap1.mihosrc.com 이름으로 relay 인증서 재발급 (CA 유지) OUT=/etc/miho RELAY_DNS=relay.ap1.mihosrc.com sh ./gen_certs.sh # 확인 — SAN 에 relay.ap1.mihosrc.com 들어갔는지 openssl x509 -in /etc/miho/relay.crt -noout -subject -ext subjectAltName ⚠️ gen_certs.sh 가 CA도 다시 만들면 기존 발급 인증서(방금 x1a가 받은 것)가 무효화됩니다. CA(ca.crt/ca.key)는 건드리면 안 됩니다. 스크립트가 기존 CA가 있으면 재사용하는지 확인하고, 혹시 CA를 덮어쓰려 하면 relay.crt/key만 수동 발급해야 합니다. 실행 전에: sh ls -l /etc/miho/ca.crt /etc/miho/ca.key # 타임스탬프 기억 # gen_certs.sh 실행 후 ca.crt 타임스탬프가 안 바뀌었는지 확인 (바뀌면 CA 재생성된 것 = 문제) 만약 스크립트가 CA를 덮어쓰는 구조면, relay.crt/key만 이렇게 수동 발급: sh # 서버 키/CSR (SAN 포함) openssl ecparam -name prime256v1 -genkey -noout -out /etc/miho/relay.key openssl req -new -key /etc/miho/relay.key -out /tmp/relay.csr \ -subj "/CN=relay.ap1.mihosrc.com" \ -addext "subjectAltName=DNS:relay.ap1.mihosrc.com,DNS:relay.mihosrc.com" # 기존 CA 로 서명 openssl x509 -req -in /tmp/relay.csr -CA /etc/miho/ca.crt -CAkey /etc/miho/ca.key \ -CAcreateserial -days 825 -sha256 \ -extfile <(printf "subjectAltName=DNS:relay.ap1.mihosrc.com,DNS:relay.mihosrc.com\nkeyUsage=digitalSignature,keyEncipherment\nextendedKeyUsage=serverAuth") \ -out /etc/miho/relay.crt chown sysadmin:sysadmin /etc/miho/relay.key /etc/miho/relay.crt chmod 0400 /etc/miho/relay.key 재발급 후 재기동 + 확인 sh # 서버 재기동 (새 relay.crt 반영) pkill -x mihosrc; sleep 2 set -a; . /etc/miho/mihosrc.env; set +a mihosrc all 2>&1 | tee /tmp/mihosrc_debug.log sh # x1a 재시도 sudo systemctl restart mihosrcd sleep 3 grep "\[cmd\]" /var/log/mihosrcd.log | tail -6 이제: [cmd] WSS connected to relay [cmd] HELLO_ACK received ← 완전 접속 ✅ 지금 당장 확인만 하려면 (임시) relay.crt 재발급 전에 원인만 못 박고 싶으면: sh echo "MIHO_INSECURE=1" | sudo tee -a /etc/mihosrcd/enroll.env sudo systemctl restart mihosrcd grep "\[cmd\]" /var/log/mihosrcd.log | tail -5