我有以下配置文件,它与本机 OpenVPN 客户端配合良好
client
dev tap
proto udp
port 1198
remote myhost.com 1194
persist-key
persist-tun
tls-client
ca my-ca.crt
cert my-client.crt
key my-client.key
verb 3
现在我想使用相同的信息配置 pfSense OpenVPN 客户端。
我不明白,key
文件内容放在哪里?我将crt
文件放入适当的部分System/Certificate Manager
。
在客户端配置页面中,我看到Cryptographic Settings/Key
带有 subnote 的部分Paste the shared key here
。该部分最初不存在,仅在配置保存一次后出现。当它出现时,它包含一些密钥。如果我将文件内容粘贴key
到那里,则会收到错误
The field 'TLS Authentication Key' does not appear to be valid
如何输入该文件信息?
更新
如果我进行自动生成,它会创建
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
... small amount of HEX symbols ...
-----END OpenVPN Static key V1-----
而我自己的钥匙是
-----BEGIN PRIVATE KEY-----
... large amount of random chars...
-----END PRIVATE KEY-----
我检查过我自己的密钥openssl
,它说它是 2048 位。它如何能够比自动生成的密钥(也称为 2048 位)更大?
更新2
如果我留下自动生成的密钥,它会保存,但我有以下消息log
TLS Error: cannot locate HMAC in incoming packet from
如果我禁用TLS authentication - Enable authentication of TLS packets
它也会保存,但我有
Mar 16 22:25:39 openvpn 47325 Exiting due to fatal error
Mar 16 22:25:39 openvpn 47325 FreeBSD ifconfig failed: external program exited with error status: 1
Mar 16 22:25:39 openvpn 47325 /sbin/ifconfig ovpnc5 XX.XX.XX.XX netmask 255.255.255.0 mtu 1500 up
Mar 16 22:25:39 openvpn 47325 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Mar 16 22:25:39 openvpn 47325 TUN/TAP device /dev/tap5 opened
在这两种情况下,key
文件都保持未使用状态。
更新3
如果我在我的密钥前面加上相同的
-----BEGIN OpenVPN Static key V1-----
行(并以相同的结尾),然后 GUI 接受密钥,而在日志中我收到以下错误
Non-Hex character ('M') found at line 2 in key file '/var/etc/openvpn/client5.tls-auth' (0/128/256 bytes found/min/max)
因此,它需要非常具体的密钥,但不会通知它并记录它。
答案1
查看pfSense源代码vpn_openvpn_client 模块,
if ($tls_mode && $pconfig['tlsauth_enable'] && !$pconfig['autotls_enable']) {
if (!strstr($pconfig['tls'], "-----BEGIN OpenVPN Static key V1-----") ||
!strstr($pconfig['tls'], "-----END OpenVPN Static key V1-----")) {
$input_errors[] = gettext("The field 'TLS Key' does not appear to be valid");
基本上,它的作用是检查“TLS 密钥”字段是否包含“-----BEGIN OpenVPN Static key V1-----”或“-----END OpenVPN Static key V1-----” ,它不会验证您粘贴的内容是否是有效的密钥。这就是为什么您能够在保存配置时清除错误,但密钥仍然不起作用(给出“非十六进制字符“M”错误)。
我很确定您必须将“BEGIN PRIVATE KEY”密钥放入证书管理器中(如果使用密钥进行识别)。梳理 OpenVPN 的文档,他们的文章关于硬化表示 TLS 密钥用于验证数据包的来源(意味着适用于所有数据包、控制和数据),而您拥有的密钥用于识别客户端以进行身份验证。 TLS 密钥用于识别主持人,而您拥有的密钥可识别用户。