openvpn --genkey tls-auth ta.key(这是错误的!)

openvpn --genkey tls-auth ta.key(这是错误的!)

我正在尝试将我的 Raspberry Pi 配置为站点 B 上的 OpenVPN 服务器。对于此设置,我要求客户端配置存储在一个单独的文件中,因为它将部署在我的 Android 手机上。我不想弄乱路径,因此:我将通过蓝牙发送文件并 zap!

该配置基于 PKI。该配置灵感来自现有的 VPN(注释掉),其中 Raspy 是客户端(站点 B 到站点 A)。“其他”VPN 可以随时启用,但同样,它目前已被注释掉。我先在 Windows 上尝试,然后再尝试在 Android 上部署,特别是因为我可以随时编辑和重新运行配置,用键盘快速输入并从服务器复制和粘贴内容,因为我始终可以通过 ssh 远程访问它。在移动设备上,我需要花费大量时间来测试。

服务器配置文件

port 1194
proto udp
dev tun

ca /etc/ssl/vpn/ca.crt
cert /etc/ssl/vpn/raspy.crt
key /etc/ssl/vpn/raspy.key
dh /etc/ssl/vpn/dh2048.pem
key-direction 1
tls-auth /etc/ssl/vpn/ta.key 0 # This file is secret
cipher AES-256-CBC   # AES

client-config-dir ccd
ifconfig-pool-persist ipp.txt
client-to-client
push "route 192.168.192.0 255.255.255.0 vpn_gateway"
keepalive 10 120
comp-lzo

user nobody
group nogroup
persist-key
persist-tun

status openvpn-status.log
log  /var/log
verb 6 #helps me troubleshoot

客户端配置文件

dev tun
proto udp
remote raspy.example.me 1194

resolv-retry infinite

nobind

user nobody
group nogroup

persist-key
persist-tun

<ca>
-----BEGIN CERTIFICATE-----
Matches the CA certificate deployed on server
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
This is the client certificate that I have signed with common CA
I assume this part of the setup is fine
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN RSA PRIVATE KEY-----
Client private key
-----END RSA PRIVATE KEY-----
</key>

<dh>
-----BEGIN DH PARAMETERS-----
Matches the content of /etc/ssl/vpn/dh2048.pem
-----END DH PARAMETERS-----
</dh>
cipher AES-256-CBC
remote-cert-tls server

<tls-auth>
-----BEGIN OpenVPN Static key V1-----
matches /etc/ssl/vpn/ta.key
-----END OpenVPN Static key V1-----
</tls-auth>

cipher AES-256-CBC

comp-lzo


log         /var/log/openvpn.log
verb 6

我是自信的证书设置正确,但与此同时,我将使用 OpenSSL 重新测试它们,以确保链正常。

连接后,我发现以下日志

服务器

Tue Jul 28 11:02:25 2020 us=457781 Authenticate/Decrypt packet error: packet HMAC authentication failed
Tue Jul 28 11:02:25 2020 us=458025 TLS Error: incoming packet authentication failed from [AF_INET]xxx:46976
Tue Jul 28 11:02:27 2020 us=732637 Authenticate/Decrypt packet error: packet HMAC authentication failed
Tue Jul 28 11:02:27 2020 us=732832 TLS Error: incoming packet authentication failed from [AF_INET]xxx:46976

客户

Tue Jul 28 11:02:25 2020 UDP WRITE [42] to [AF_INET]xxx:1194: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 pid=[ #2 ] [ ] pid=0 DATA len=0
Tue Jul 28 11:02:29 2020 UDP WRITE [42] to [AF_INET]xxx:1194: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 pid=[ #3 ] [ ] pid=0 DATA len=0
Tue Jul 28 11:02:37 2020 UDP WRITE [42] to [AF_INET]xxx:1194: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 pid=[ #4 ] [ ] pid=0 DATA len=0
Tue Jul 28 11:02:53 2020 UDP WRITE [42] to [AF_INET]xxx:1194: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 pid=[ #5 ] [ ] pid=0 DATA len=0

这个设置可能有什么问题?我该如何修复它?

研究


我已经发现这个话题声称已经解决

bznelson wrote: ↑
Mon Apr 09, 2018 10:52 pm
tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0 

bznelson wrote: ↑
Mon Apr 09, 2018 10:52 pm
<tls-crypt>

啊,是的,tls-auth/tls-crypt,就是它!非常感谢!我之前运行的是 2.3 服务器,但我最初安装的是 2.4,我想这两者之间存在一些交叉影响。

我在两台主机上运行的是 OpenVPN 2.4.0。我不知道该链接线程对我有何帮助

在同一个主题中,有人谈到了这个错误

这通常意味着您在某处安装了错误的 ta.key。

但我已经检查了三次。键是相同的,但最大的区别在于一个在文件上,一个在内联


我尝试从客户端和服务器完全删除 tls-auth。错误已修复,我还有下一个要关注的错误。因此,上面链接的论坛是正确的,两个相同的密钥之间存在一些混乱

答案1

客户端和服务器配置都需要共享相同的cipher配置。以下行:

cipher AES-256-CBC

必须同时存在。

答案2

在我的情况下,它是身份验证摘要算法。Pfsense 具有比服务器更安全的默认值,因此必须进行调整。SHA-1 是不安全的默认值,SHA256 似乎是更好的选择。

答案3

也许你的ta.key生成是错误的。

openvpn --genkey tls-auth ta.key(这是错误的!)

请参考官方网站 https://openvpn.net/community-resources/how-to/#hardening-openvpn-security

屏幕截图:tls-auth 有什么用

就我而言,openvpn 2.5.4

警告:使用 --genkey --secret filename 已弃用。请改用 --genkey secret filename。EasyRSA Shell

openvpn --genkey secret ta.key

添加以下配置后,它可以工作。

屏幕截图:tls-auth 配置

相关内容