Hysteria2服务端自签证书 搭建节点时未获取证书指纹 v2ray客户端测试查询证书指纹

前言

如果你使用Hysteria2服务端自签证书, 搭建脚本/面板没有提供证书的指纹.
而你担心被中间人攻击, 你希望在客户端指定证书的指纹.

那么, 你可以这么做:

1. 如果你能在服务端找到证书

你可以使用
openssl x509 -in 你的证书.crt -outform DER | sha256sum | awk '{print $1}' 
openssl x509 -noout -fingerprint -sha256 -in your_cert.crt | sed 's/^.*=//'
得到证书指纹的 hex 编码.
可以用于 Hysteria2 的客户端配置文件.

你也可以使用
openssl x509 -in 你的证书.crt -outform DER | sha256sum | awk '{print $1}' | xxd -r -p | base64
openssl x509 -noout -fingerprint -sha256 -in 你的证书.crt | sed 's/^.*=//' | xxd -r -p | base64
得到证书指纹的 base64 编码.
可以用于 V2ray 的客户端配置文件.

2. 如果你不能(或者不懂)在服务端 找到证书

你可以使用 v2ray 客户端 尝试指定证书指纹连接服务端, 命令行报错信息会提示服务端的证书指纹.
我们以 v2rayN-VLESS 客户端为例.
支持hy2指定证书指纹的preview打包 

导入一个不带证书指纹的 Hy2 分享链接, 如
hysteria2://b4349e3a-55be-39ad-9837-3fb9397a888c@74.48.9.95:2053?insecure=1#HY2_74.48.9.95
Ctrl + R 测试, 是通的.

我们设置一个不正确的指纹. 如 
1234
再次 Ctrl + R 测试. 命令行报错.
app/proxyman/outbound: failed to process outbound traffic > proxy/hysteria2: failed to find an available destination > common/retry: [connect error: CRYPTO_ERROR 0x12a (local): transport/internet/tls: peer cert is unrecognized:TeddTPwg0va7l8sJsBuTlrK6us6X+7GdxnssJ+JRuso=] > common/retry: all retry attempts failed


注意到日志里面报告服务端的指纹为
TeddTPwg0va7l8sJsBuTlrK6us6X+7GdxnssJ+JRuso=
那么我们把指纹修改为这个.

Ctrl + R 测试, 正常.



========

后记

用 v2ray 客户端查到的服务端证书指纹是 base64 编码的, 直接放到 hy2 的客户端配置文件是不能用的.



评论

The Hot3 in Last 30 Days

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

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