Skip to content

发布第一个 HTTPS 服务 ​

本文将一个已有的 HTTP 网站通过 HiHTTPS 发布为 HTTPS 服务。完成后,您应能通过业务域名访问网站,并看到匹配该域名的有效证书。

开始前准备 ​

  • 已完成安装部署,能够登录,并具有访问服务和证书的管理权限。
  • 已有正常运行的后端网站,HiHTTPS 服务器能够访问它。
  • 已准备业务域名、覆盖该域名的有效 TLS 证书及对应私钥。尚无证书时,先按证书管理完成申请和域名验证。
  • 客户端能够访问 HiHTTPS 的 443/tcp,入口端口未被其他程序占用。仅向需要使用服务的网络放行。

本文示例使用以下参数,请全部替换为实际值:

参数示例值含义
业务域名app.example.com用户访问网站时使用的域名
HiHTTPS 地址192.168.8.10客户端可达的 HiHTTPS 服务器地址
后端地址http://192.168.8.223:8080HiHTTPS 转发请求的目标网站
对外访问地址https://app.example.com配置完成后的业务地址

如果业务面向公网,请使用客户端能够访问的公网地址或入口地址,并配置相应 NAT、云安全组及防火墙规则。示例中的内网 IP 不能直接作为公网访问地址。

1. 导入证书 ​

在 证书管理 中导入已有证书,提供 PEM 格式的证书、所需证书链及匹配的私钥。详细字段与商密证书要求见导入已有证书。

导入后检查:

  • 证书域名覆盖 app.example.com,且当前处于有效期内。
  • 证书与私钥匹配,所需材料已完整导入。
  • 证书能够在后续访问服务的证书选择器中找到。

如果已经通过 HiHTTPS 申请并取得符合要求的证书,无需重复导入。

2. 添加访问服务 ​

进入 访问服务 -> 添加访问服务,按下表填写:

配置位置配置项示例值
详细内容域名app.example.com
详细内容入口协议HTTPS
详细内容入口端口443
路由规则路径/
路由规则动作类型转发
路由规则转发目标http://192.168.8.223:8080
证书配置TLS 证书上一步准备的、覆盖 app.example.com 的证书

保存配置,确认页面没有报错,并确认服务处于启用状态。如果页面提示域名或端口冲突,先检查已有服务和服务器上其他程序的监听端口,不要反复提交相同配置。

HTTPS 入口与后端连接是两段连接

本例仅将客户端到 HiHTTPS 的连接加密,后端仍通过 HTTP 访问,应部署在受信网络中。需要端到端加密时,后端也必须提供可用的 HTTPS 地址。

选择 HTTPS 不会自动新增 HTTP 入口,也不会自动将 HTTP 请求跳转到 HTTPS。本例先完成 HTTPS 发布;需要兼容原有 HTTP 地址时,请先查看HTTP 跳转的当前限制。

3. 从客户端验证 ​

在能够访问 HiHTTPS 的客户端执行:

bash
curl -i --resolve app.example.com:443:192.168.8.10 https://app.example.com/

--resolve 只为这次请求指定 HiHTTPS 地址,仍使用 app.example.com 进行 HTTP 请求和 TLS 证书校验,因此可以在 DNS 切换前验证。它不会修改正式 DNS 解析。

检查应符合以下结果:

  • TLS 证书校验通过,没有域名不匹配、过期或不受信任的错误。
  • 返回后端网站的页面或预期业务响应,而不是 HiHTTPS 管理页面。
  • 服务需要登录时,返回业务自身的登录页面或预期跳转也可能是正常结果;不能只凭 HTTP 200 判断业务可用。

私有 CA 签发的证书需要先在客户端安装并信任该 CA,或为验证命令增加 --cacert /path/to/ca.pem。不要跳过证书校验来判断 HTTPS 配置成功。

4. 配置正式域名解析 ​

将业务域名解析到客户端可达的 HiHTTPS 地址。使用上面的内网示例时,仅在能够路由到 192.168.8.10 的网络中使用该解析。

等待解析生效后,在浏览器打开 https://app.example.com,确认网站可用,再查看浏览器展示的证书域名、签发者和有效期。若同时配置了 A 和 AAAA 记录,两条访问路径都应指向能够正确提供该服务的入口。

完成检查 ​

  • 访问服务处于启用状态,保存时没有配置测试或加载错误。
  • 通过正式域名能访问预期后端,而不是管理界面或默认页面。
  • 浏览器信任证书,证书覆盖业务域名且未过期。
  • 如配置了访问控制,允许的客户端能访问,不允许的客户端被拒绝。

遇到证书错误、502 或访问超时,先看常见问题。

下一步 ​