piapia123
zh

WireGuard 配置生成与校验

网络

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

两种模式。生成:粘一个私钥(或用 `crypto.getRandomValues` 随机造一把),工具推导出对应的公钥,并拼出一份可直接使用的客户端配置;填上服务端公钥、端点、DNS、持久保活即可。校验:粘贴一整段 `.conf`,逐行给出结论 —— 密钥是不是 32 字节、端口是否在 1–65535、`AllowedIPs` 是不是合法 CIDR、Peer 公钥有没有重复,以及最常见的「把 `Address` 和 `AllowedIPs` 写反了」。公钥由纯 JavaScript 实现的 X25519(RFC 7748)算出,不用 `crypto.subtle` —— 那个接口只在 https / localhost 下存在,而本站是静态页面,可能被以 http 打开。私钥在结果里以 `<REDACTED>` 遮住、不可复制;所有计算都在浏览器本地完成,不上传任何内容。

功能

  • 两种模式:从私钥生成配置,或校验一份已有的 .conf
  • 从私钥推导公钥(纯 JS 实现 X25519,不依赖 Web Crypto)
  • 一键生成完整的 [Interface] / [Peer] 客户端配置
  • 私钥可随机生成 —— 用 crypto.getRandomValues,绝不用 Math.random
  • 私钥在结果里以 <REDACTED> 遮住,避免截图或误复制泄露
  • 逐行校验:密钥是否 32 字节、端口范围、AllowedIPs 是否为合法 CIDR
  • 识别重复的 Peer 公钥,以及 Address 与 AllowedIPs 写反
  • 全部在浏览器本地完成,不上传任何内容

使用方法

  1. 选择「生成配置」或「校验配置」模式
  2. 生成模式:粘贴私钥(或勾选随机生成),填服务端公钥、端点等选项
  3. 从结果里复制公钥,或整块复制配置
  4. 校验模式:粘贴整段 .conf,逐行看结论

常见问题

私钥会被上传到服务器吗?
不会。所有推导与校验都在浏览器里用 JavaScript 完成,页面不发起任何网络请求,私钥和配置都不会离开你的设备。
为什么结果里看不到我的私钥?
私钥那一行固定显示 <REDACTED> 且不可复制 —— 避免截图或误操作把它带出去。它仍然出现在下面那份可直接使用的配置里(PrivateKey = …);那份配置请当作秘密保管,别转发。
为什么公钥是自己算的,不用浏览器自带的加密接口?
因为 crypto.subtle 只在 https / localhost 这类安全上下文里存在。本站是静态页面,可能被以 http 打开或部署在内网 IP 上,那时它根本拿不到。所以这里用一段纯 JavaScript 实现 X25519(RFC 7748),在任何环境下结果一致。
校验模式能查出什么?
密钥是不是 32 字节 Base64、端点端口是否在 1–65535、AllowedIPs 与 Address 是不是合法 CIDR、Peer 公钥是否重复,以及最常见的「把 Address 和 AllowedIPs 写反」——AllowedIPs 只属于 [Peer],Address 只属于 [Interface]。每一行都给出对应结论。

相关工具