HTTPS出站网关部署教学手册(CC Switch) 基于 GOST 的 HTTPS 出站网关部署指南1. 使用范围本文介绍如何在获得授权的服务器环境中部署一个带 TLS 加密和身份认证的 HTTP 出站网关用于为企业内部应用提供统一、可审计的网络出口。对出站访问实施身份认证和来源限制。集中记录连接状态便于运维排查。为支持 HTTP CONNECT 的研发工具提供受控网络通道。本文不适用于匿名公共服务不建议将服务无条件开放给互联网。部署人员应遵守所在地区法律、云服务商规则以及目标服务的使用条款。2. 技术结构授权客户端 → TLS 加密连接 → HTTP 出站网关 → 经过批准的目标服务网关采用两层协议客户端与网关之间使用 TLS保护认证信息和连接请求。对 HTTPS 目标客户端通过 HTTP CONNECT 建立隧道并继续与目标服务完成端到端 TLS 握手。标准 CONNECT 模式只转发加密数据不解析目标服务的业务正文也不需要在客户端安装自定义根证书。3. 部署前准备需要准备一台经过授权的 Linux 服务器。服务器管理权限。云安全组和主机防火墙配置权限。一个客户端可验证的 TLS 证书。一个随机生成的网关认证账号和强密码。一台用于验收的客户端设备。明确的授权来源地址范围和目标访问范围。本文使用以下占位符占位符含义GATEWAY_HOST网关的域名或地址GATEWAY_PORT网关监听端口GATEWAY_USER认证用户名CERT_FILETLS 证书绝对路径KEY_FILETLS 私钥绝对路径AUTHORIZED_CIDR获得授权的客户端来源网段4. 安全组设计只允许授权来源访问网关端口方向入站 协议TCP 端口GATEWAY_PORT 来源AUTHORIZED_CIDRHTTP-01 证书验证需要 80 端口时只在证书验证方案确实需要的情况下开放并确保该端口仅提供验证文件或必要的静态内容。不应采用以下配置无身份认证的外部服务。不受限制的来源范围。与服务器管理密码相同的网关密码。在文档、仓库或日志中保存明文凭据。5. 安装 GOST从 GOST 官方发布页选择与服务器架构匹配的稳定版本https://github.com/go-gost/gost/releases下载后应使用发布页提供的校验文件验证安装包再将可执行文件安装到/usr/local/bin/gost检查版本/usr/local/bin/gost-V生产环境建议固定版本并在升级前备份旧程序和配置。6. 准备 TLS 证书证书必须包含客户端实际使用的GATEWAY_HOST。检查证书信息openssl x509\-inCERT_FILE\-noout-subject-issuer-dates检查证书与私钥是否匹配openssl x509-inCERT_FILE-pubkey-noout|sha256sum openssl pkey-inKEY_FILE-pubout|sha256sum两个结果应相同。保护私钥chownroot:rootKEY_FILEchmod600KEY_FILE可以使用企业证书系统或受信任的 ACME 客户端管理证书。证书申请和续期方式应按照证书服务商的正式文档配置。7. 配置网关创建/etc/gost/config.yamlservices:-name:controlled-egress-gatewayaddr::GATEWAY_PORThandler:type:httpauth:username:GATEWAY_USERpassword:使用密码管理器保存的强密码listener:type:tlstls:certFile:CERT_FILEkeyFile:KEY_FILE设置配置权限chownroot:root /etc/gost/config.yamlchmod600/etc/gost/config.yaml配置说明handler.type: http使用标准 HTTP 和 CONNECT 代理协议。listener.type: tls客户端与网关之间使用 TLS。auth只有通过认证的客户端才能创建连接。certFile/keyFile网关外层 TLS 使用的证书与私钥。8. 配置系统服务创建/etc/systemd/system/controlled-egress-gateway.service[Unit] DescriptionControlled HTTPS Egress Gateway Afternetwork-online.target Wantsnetwork-online.target [Service] Typesimple ExecStart/usr/local/bin/gost -C /etc/gost/config.yaml Restartalways RestartSec3 Userroot LimitNOFILE1048576 [Install] WantedBymulti-user.target加载并启动systemctl daemon-reload systemctlenable--nowcontrolled-egress-gateway systemctl status controlled-egress-gateway --no-pager预期状态Active: active (running)9. 服务端验收检查监听状态ss-lntp|grep:GATEWAY_PORT检查日志journalctl-ucontrolled-egress-gateway-n100--no-pager检查 TLSopenssl s_client\-connectGATEWAY_HOST:GATEWAY_PORT\-servernameGATEWAY_HOST\/dev/null需要确认返回预期证书。证书未过期。证书名称与客户端连接地址匹配。服务端不存在配置解析或私钥读取错误。10. 客户端验收先检查 TCP 可达性Test-NetConnectionGATEWAY_HOST-Port GATEWAY_PORTTCP 成功只代表端口可达还需要继续验证 TLS、认证和 CONNECT。使用支持 HTTPS Proxy 的客户端测试curl.exe --proxyhttps://GATEWAY_HOST:GATEWAY_PORT--proxy-userGATEWAY_USER:实际密码https://经过批准的测试地址至少执行两组认证测试正确凭据能够访问批准的测试地址。错误凭据必须被拒绝。如果错误凭据仍能使用网关说明认证没有生效应立即停止服务并修复。11. 日志和故障定位实时日志journalctl-ucontrolled-egress-gateway-f最近 200 行journalctl-ucontrolled-egress-gateway-n200--no-pager常见判断现象检查方向TCP 不可达云安全组、主机防火墙、监听地址、客户端网络TLS 握手失败协议类型、证书、私钥、客户端兼容性身份认证失败用户名、密码、客户端是否支持代理认证CONNECT 失败服务端 DNS、出站网络、目标地址是否获准CONNECT 成功但业务失败客户端配置、目标服务账号或目标服务响应网关只负责网络传输。目标服务的身份认证、访问权限、配额和业务状态仍由目标服务控制。12. 配置变更与回滚修改配置前备份cp-a/etc/gost/config.yaml\/etc/gost/config.yaml.backup-$(date%Y%m%d-%H%M%S)修改后执行systemctl restart controlled-egress-gateway systemctl status controlled-egress-gateway --no-pager journalctl-ucontrolled-egress-gateway-n100--no-pager验证失败时恢复一个已经确认的备份再重新执行完整验收。不要使用未检查的通配符自动覆盖生产配置。13. 运维安全清单[ ] 仅授权来源可以访问网关端口 [ ] 服务始终启用身份认证 [ ] 认证密码由密码管理器保存 [ ] TLS 证书有效且名称匹配 [ ] 私钥和配置文件权限符合要求 [ ] 错误凭据会被拒绝 [ ] 日志没有持续的异常认证请求 [ ] 已配置证书续期和到期告警 [ ] 已记录程序版本和配置备份位置 [ ] 已完成配置回滚演练14. 总结受控出站网关的核心并不是简单开放一个网络端口而是同时落实TLS 加密客户端身份认证来源范围限制最小化目标访问范围日志审计证书自动维护配置备份与回滚只有这些措施都通过验收后服务才适合长期运行。