证书、CA 与凭据存储机制
三类入口,三种证书策略
移动访问的 HTTPS 证书按入口类型分成三套,理解它们,证书警告该不该理会就清楚了:
| 入口 | 证书 | 浏览器/系统表现 |
|---|---|---|
| 局域网 | 插件自签的私有 CA | 首次访问提示「不受信任」,属预期;确认地址后按指引继续 |
| 公开远程通道(cpolar/cloudflared/Tailscale/命名域名等) | 系统信任的公开证书 | 不应出现警告;出现即通道或证书异常,先查再连 |
| 自签 FRP 入口 | 由较新版 App 在配对时固定远程 CA | 配对时绑定,此后正常验证 |
凭据怎么存、怎么传
- 设备令牌与固定的 CA 由 Android Keystore 加密存储——这是系统级硬件-backed 的加密区,App 自己都取不出明文。
- 配对二维码只含短期配对信息:不含长期设备令牌,也不含 CA 私钥。截图泄露二维码的后果有限,但过期前的窗口内仍能被配对,二维码不要乱晒。
- 旧令牌不发新地址:远程地址变化后重新扫码验证,App 不会把旧设备令牌发往新的来源地址。
网关层面的防线
- 移动网关以 dsh 本机操作者身份代理请求,支持常规的增删改查方法;写请求仍要过配对会话、精确 Origin 与 CSRF 三道校验。
- 安卓 App 与插件间的原生桥接使用带来源校验的 WebMessage:每条消息都验证精确的顶层 Origin 与主 Frame,并限制消息大小;不使用
addJavascriptInterface这类宽松接口。 - 第三方插件的 WebSocket 路径默认拦截,按确切路径放行(见第三方插件 WebSocket 路径怎么放行)。
- 网关关闭(局域网/远程开关都关)时不再监听;dsh 本体照常在本机运行。
给普通用户的三句话安全观
- 局域网入口只在可信网络开(家庭、办公室),不自行做端口转发。
- 远程入口未配对请求进不来,但不用就关掉开关。
- 配对设备等于你自己——丢了手机先撤销(撤销设备与手机丢失处理)。