博文

Secure by Design:OpenPLC V4 的 TLS / JWT / 8443 与 WebSocket 调试

工业控制最怕两件事:明文暴露和越权操作。V3 的 Web 仪表盘是 HTTP 明文、靠网络隔离”假装安全”。V4 把安全做进了底座,这也是它敢叫”工业级”的底气之一。

图:OpenPLC V4 安全架构(TLS/JWT/安全 WebSocket)

图:V4 默认 TLS 全链路 + JWT 鉴权 + 安全 WebSocket 调试,告别 V3 明文 Web 仪表盘。

一、V3 vs V4 的安全模型

维度V3V4
管理通道HTTP :8080 明文HTTPS :8443 + TLS
认证弱/无强制JWT(JSON Web Token)
调试Modbus TCP 明文路径安全 WebSocket(变量监视 + 强制写入)
前端内置网页仪表盘无 Web 前端,仅 REST API + Editor

一句话:V3 靠”别把 8080 暴露到公网”来保安全;V4 默认就在传输层加密、在应用层鉴权。

二、TLS 全链路

V4 运行时监听 0.0.0.0:8443(HTTPS,自签证书)。笔者的 LuckFox 部署实测:https://192.168.5.2:8443 返回的是 REST 接口,证书为自签——内网用可接受,但若要跨公网管理,应换成可信 CA 签发的证书,否则仍是”加密但不可信”。

三、JWT 认证

所有管理操作走 JWT:Editor 登录后拿 token,后续 API 调用带 token。这意味着:

  • 没有有效 token 不能上传程序、不能改配置、不能强制写变量;
  • 调试通道(WebSocket)同样在鉴权之后才开放强制写入权限——避免”任何人都能强制置位输出”的灾难。

四、密码与 PEPPER

V4 的用户库(/var/lib/openplc-runtime/restapi.db)密码用 pbkdf2:sha256:600000 加盐哈希,盐里还混入来自 .env 的 PEPPER。运维要点:

  • 默认 admin / ADMIN 上线必须改;
  • 忘记密码可停服后直改 SQLite users 表重置(用 generate_password_hash(pw + PEPPER) 规则);
  • PEPPER 在 .env,备份配置时别忘了它,否则重置后的哈希对不上。

五、WebSocket 调试:便利与风险并存

安全 WebSocket 能做实时变量监视和强制写入(force),这对调试极爽,也是双刃剑:

  • 只在该通道、且已鉴权时开放强制写;
  • 生产环境应限制谁能连调试通道,避免误操作或恶意置位导致设备动作。

六、落地建议

  • 内网自签证书够用,跨网务必换可信证书 + 反向代理做 TLS 终止与审计;
  • 改默认口令、保管好 .env 里的 PEPPER;
  • 调试通道权限收口,生产机考虑网络层 ACL 限制来源 IP;
  • 把 V4 的这套”默认加密 + 默认鉴权”当作基线,而不是事后补丁。

→ 下一篇:插件系统实战,看怎么用 Python/C++ 扩出自己的 FB 与协议驱动。


配套代码与参考仓库

系列导航 · 双向链接(OpenPLC V4 系列 · 共 12 篇)

本系列当前均为草稿(draft: true)。建议发布序:① → ③ → ② → ④ → ⑧ 打头,⑩⑪⑫ 作深度延展按读者反馈穿插。

相关阅读

← 返回博文列表