Hysteria2 服务端自签证书 V2rayN客户端指定证书指纹

前言

现在我们在v2rayN的客户端中实现.

* 啊, 上一次改动 v2rayN-3.29-VLESS 还是 去年...

Hy2 节点的窗体

添加 label 和 textBox (txtPinSHA256)

保存按钮的方法, 添加对 txtPinSHA256 的处理.
相应的 NodeItem 类要添加数据成员.

现在可以测试一下添加节点保存到 guiNConfig.json 文件了.
OK.

接下来修改加载 Hy2 节点窗体 AddHy2ServerForm.cs  BindingServer()
OK


粘贴生成节点 

AddHy2ServerForm.cs ImportConfig()
public static NodeItem ImportFromClipboardConfig(string clipboardData, out string msg)
OK

生成v2ray配置文件参数

private static int outbound(V2rayNappConfig appConfig, ref V2rayClientConfig v2rayConfig)
   private static int boundStreamSettings(V2rayNappConfig appConfig, string iobound, ref StreamSettings streamSettings)
分析得到
public class TlsSettings 定义增加 pinSHA256
这时要参考 v2ray 的文档, 定义成 List<string> 数据成员名也与文档一致 pinnedPeerCertificateChainSha256

再修改 boundStreamSettings() 函数的实现


public class V2rayNappConfig  增加一个函数 public string pinSHA256() 照着上面的 allowInsecure() 的样子写

测试 生成 客户端配置文件, OK 字段原样写入了.

接下来处理 hex 编码是不能直接写入v2ray配置文件的问题.
让GPT帮我们写代码. 得到

* 这里我利用了 v2ray 支持设置多个指纹的特性. 万一某个脚本或面板导出的是base64, 或者用户填写了base64, 程序也能工作.
毕竟, base64与hex之间的转换太麻烦了, 特别是, 原始字节码不是可打印字符. 普通小白没办法做转换.

测试 Ctrl + R 正常工作.
 

导出节点分享链接

public static string GetVmessQRCode(V2rayNappConfig appConfig, int index)
* 不要怀疑, v3.29 年代的 v2rayN 的代码就是比较粗糙,  函数命名不太讲究

各种测试

发现, 不带 pinSHA256 的分享链接导入进来, 测速不成功.
检查配置文件, 生成了空字符串的 pinnedPeerCertificateChainSha256
修改BUG

初步搞定!


上传Github

你可以自己下载代码编译, 也可以来我的Telegram群获取preview打包.

评论

The Hot3 in Last 30 Days

酒馆SillyTavern 玩英文角色卡 也能以中文输出 设置世界书Lorebooks

搭 Docker版 Sub-Store订阅转换专家 带 http-meta 实现 集合订阅 测延迟 排序 筛选 生成新订阅 定时任务上传Gist