在 pfSense 中将 OpenVPN 配置文件的“key”条目中的信息放在哪里?

在 pfSense 中将 OpenVPN 配置文件的“key”条目中的信息放在哪里?

我有以下配置文件,它与本机 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 密钥用于识别主持人,而您拥有的密钥可识别用户。

相关内容