本页由 AI 工具参考代码编写,尚未经过人工审核,内容仅供参考。如果无法解决问题或需要协助部署,可邮箱联系:kuohu233@qq.com
HTTPS 配置
HTTPS 加密传输是保护数据传输安全的基础措施。AstraSchedule 的配置数据(课表、作息、科目等)和认证凭据(BasicAuth 密码)在传输过程中必须加密,防止被中间人窃取或篡改。
为什么需要 HTTPS
即便是在内网环境中,也建议启用 HTTPS。原因如下:
- BasicAuth 认证明文传输:AstraSchedule 管理端使用 HTTP Basic Authentication,密码以 Base64 编码传输。Base64 不是加密,HTTP 明文传输意味着密码可被网络中的任何节点截获。HTTPS 的 TLS 加密可以保护凭据安全。
- 配置数据完整性:课表和作息数据在传输过程中如果被篡改,会导致客户端显示错误信息。HTTPS 的 TLS 层提供完整性校验。
- 浏览器信任:现代浏览器对 HTTP 页面标记为「不安全」,使用 HTTPS 可以避免浏览器警告。
- API 兼容性:部分 Serverless 平台(如阿里云函数计算)和 CDN 服务需要 HTTPS 才能正常工作。
🔰 极低成本方案(Cloudflare 自动 HTTPS)
极低成本方案使用 Cloudflare CDN,HTTPS 证书完全自动管理,无需手动操作。
工作原理
- 域名接入 Cloudflare 并开启代理(橙色云朵)
- Cloudflare 自动为你的域名签发 SSL 证书(泛域名证书)
- 证书到期前自动续期,无需人工干预
- 浏览器访问
https://api.你的域名.com即完成加密连接
配置检查清单
进入 Cloudflare 控制台 → 选择你的域名 → SSL/TLS:
加密模式说明:
⚠️ 请勿使用 Flexible 模式。该模式下 Cloudflare 到源站的连接不加密,你的 API 数据在 Cloudflare 和函数计算之间是明文传输的。
验证 HTTPS 是否正常
正常情况下应返回 HTTP 200,且证书信息显示由 Cloudflare 签发。
🚀 高并发方案(ESA 自动 HTTPS)
阿里云 ESA 与 Cloudflare 类似,提供全自动 HTTPS 证书管理。
配置步骤
- 登录 ESA 控制台 → 选择你的站点
- 进入 站点管理 → HTTPS 配置
- 开启以下选项:
- HTTPS 安全加速:开启
- 强制 HTTPS 跳转:开启
- HTTP/2:开启(提升性能)
- ESA 自动为你的域名签发和管理 SSL 证书
证书更新
ESA 管理的证书会在到期前自动续期。你可以在 ESA 控制台 → 证书管理 中查看证书状态和到期时间。
🏫 内网方案(自签名证书或内网 CA)
内网方案的服务器不暴露到公网,无法使用 Cloudflare 或 ESA 的自动证书服务。建议使用以下两种方式之一配置 HTTPS:
方案一:自签名证书(简单)
适合小规模部署,浏览器会显示证书警告,但不影响使用。
使用 OpenSSL 生成自签名证书:
配置 Nginx:
方案二:内网 CA(推荐)
如果学校有统一的内网 CA(证书颁发机构),建议使用内网 CA 签发证书。这样可以避免浏览器的证书警告,客户端也能正常验证。
申请步骤:
- 联系学校网络管理员,为服务器申请内网 CA 签发的证书
- 获取证书文件(
.crt)和私钥文件(.key) - 按上述 Nginx 配置方式部署
客户端信任自签名证书
使用自签名证书时,Electron 客户端默认不信任该证书,需要在客户端配置中关闭证书验证。
⚠️ 关闭证书验证会降低安全性,仅在确认网络环境安全的内网中使用。
在客户端配置文件中,将 APISRV 改为以 https:// 开头,并确认你能接受自签名证书带来的安全风险。Electron 客户端默认启用了 ignoreCertificateErrors,通常不需要额外配置。
仅管理端使用 HTTPS
如果希望简化配置,也可以仅在 Nginx 层启用 HTTPS(加密管理端访问),而后端 API 继续使用 HTTP。但不建议这样做,因为客户端从后端拉取课表时的认证凭据仍然是明文传输。
常见问题
Q: 浏览器提示「您的连接不是私密连接」怎么办?
如果是内网自签名证书,这是正常现象。点击「高级」→「继续访问」即可。
Q: 客户端连接 HTTPS 后端报错?
检查客户端的后端地址是否以 https:// 开头,以及证书是否被客户端信任。内网自签名证书默认会被信任。
Q: Cloudflare Full (strict) 模式下访问失败?
说明源站(函数计算)的证书无效。检查函数计算的自定义域名是否正确配置。阿里云函数计算配置自定义域名后会提供有效的 HTTPS 端点。