首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尽管配置了OpenVPN HMAC身份验证,但还是失败了。

尽管配置了OpenVPN HMAC身份验证,但还是失败了。
EN

Unix & Linux用户
提问于 2022-03-03 19:58:05
回答 1查看 1.1K关注 0票数 0

我正在尝试设置一个新设备来连接到我的OpenVPN服务器。新设备是一个没有GUI的Linux系统。我从桌面Linux系统导出配置文件,并进行了必要的更改。

桌面系统可以连接到VPN。但是,新系统无法连接。日志报告TLS握手超时。在服务器上,我看到以下条目:

代码语言:javascript
复制
TLS Error: cannot locate HMAC in incoming packet from ...

这表示客户端尚未配置为HMAC身份验证,但服务器需要它。但是,此配置是从一个客户端导出的,该客户端运行并配置了HMAC密钥。这是客户端配置:

代码语言:javascript
复制
client
remote 'vpn.example.org'
ca 'ca.pem'
cert 'cert.pem'
key 'key.pem'
cipher AES-128-CBC
dev tun
proto udp
verify-x509-name 'vpn.example.org'
tls-auth 'hmackey.pem' 1
nobind
auth-nocache
script-security 2
persist-key
persist-tun

在所有系统中,HMAC密钥是相同的。怎么啦?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-03-03 19:58:05

一些背景: HMAC身份验证是一个额外的安全特性。即使在握手之前,客户端必须使用预共享密钥对请求进行签名。如果请求没有有效的HMAC签名,服务器将忽略该请求。对于UDP,这相当于防火墙阻塞来自该客户端的通信量。

在我的例子中,在与另一个客户端进行比较后,新系统上的配置文件似乎遗漏了行。

代码语言:javascript
复制
auth SHA256

从Linux桌面盒导出的文件中缺少这一点,但是Android客户端的配置显示了这一点。添加此选项后,握手起作用(直到我遇到另一个与此无关的错误)。

结论:如果没有auth,OpenVPN要么不使用HMAC身份验证,要么回到默认的哈希算法(我还没有弄清楚情况)。无论哪种方式,这都很可能导致HMAC不匹配,从而导致服务器放弃客户端请求。

我向项目提交了一个特征请求,以便在指定tls-auth时抛出警告,但auth没有。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/692845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档