Openvpn:连接错误:缺少外部PKI别名

时间:2019-12-10 05:33:39

标签: macos openvpn

我刚刚设置了一个Openvpn服务器版本2.4.4,它在Windows和Android中与Openvpn客户端兼容,但在Mac OS中却出错。

Tue Dec 10 10:50:31 2019 OMI Connecting to /Library/Application Support/OpenVPN/sock/ovpn-KTMpKfLsCR5a.sock [unix]
Tue Dec 10 10:50:35 2019 CLIENT_EXCEPTION : connect error: Missing External PKI alias [FATAL-ERR]
Tue Dec 10 10:50:35 2019 >FATAL:CLIENT_EXCEPTION: connect error: Missing External PKI alias

我正在MacOS版本10.4.4和Openvpn客户端2.7.1.100中进行测试。 下面是client.ovpn

client
dev tun
proto tcp-client
remote vpn01 9443
resolv-retry infinite
cipher AES-256-CBC
redirect-gateway

# Keys
# Identity
key-direction 1
remote-cert-tls server
auth-user-pass
auth-nocache

# Security
nobind
persist-key
persist-tun
comp-lzo
verb 3

# Proxy ?
# http-proxy cache.univ.fr 3128
<ca>
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIUdu/viXgfwhA+wu0K49vvnXaCyFkwDQYJKoZIhvcNAQEL
BQAwHDEaMBgGA1UEAwwRdnBuMDEuaG9tZWNjYS5jb20wHhcNMTkxMjA5MTA1NTQ5

任何想法或什么可能导致此问题?

3 个答案:

答案 0 :(得分:1)

我在MacOS上使用OpenVPN Connect客户端时遇到了同样的问题-我切换到TunnelBlick客户端软件,并使用相同的.ovpn文件运行正常。尚未找到有关为何OpenVPN Connect无法正常工作的任何线索。

答案 1 :(得分:0)

外部PKI意味着OpenVPN Connect客户端与其配置文件“配置文件”(.ovpn文件)相比使用“外部证书”,该文件也可以具有嵌入式PEM证书。 以我的理解,此外部PKI可以是Windows crtmgr或macOS钥匙串证书存储(或移动设备中的证书)内部的证书。如果使用Windows,这很容易且有效。 macOS是另一个故事。

当前(截至2020-04年),Catalina是最新的macOS版本,并且仅具有CryptoTokenKit(CTK)框架,而Tokend已不复存在。当使用硬件安全模块(HSM),智能卡和USB令牌时,它们不再像在Tokend中那样出现在钥匙串中。不明白为什么。而且,如果这个“外部PKI”确实在寻找钥匙串中的证书,那就是一个问题。

https://openvpn.net/vpn-server-resources/external-public-key-infrastructure-pki/

On the client, the server-locked profile can only be used to make a VPN 
tunnel connection if a suitable client certificate/key pair has already
been installed into the host OS Keychain or certificate/key store. Some 
hardware devices or tokens contain a certificate inside that is registered 
with the certificate store with additional software when the token 
device/card is plugged in.

以及从页面的其余部分以及我在其他地方阅读的内容,我想这是缺少的Alias的名称,可以将钥匙串内的证书映射到给定的连接尝试。你不确定。

据我了解,真正的问题是Connect客户端正在查看来自Keychain的证书,而Apple切换到CTK则破坏了它。即使那些硬件令牌在系统中运行,它们也不会出现在钥匙串中。我当时在寻找解决方案以撤消此更改,但偶然发现keychain-pkcs11上说:

https://github.com/kenh/keychain-pkcs11/blob/master/man/keychain-pkcs11.man

will provide two virtual PKCS#11 slots. The first slot will provide all
identities that are available from connected SmartCards.  The second slot
will provide an interface to certificates stored in the operating system
Keychain.

这并不是我一直在寻找的。它会在pkcs#11插件之外提供那些钥匙串证书,但不会将HSM证书填充到钥匙串中。

一旦您确定我正确地理解了实际​​的问题图片,就很难解决问题,更不用说解决问题了。 :)

答案 2 :(得分:0)

您应该尝试编辑* .ovpn个人资料:

在openvpn客户端中删除个人资料,然后编辑从服务器导出的.ovpn文件,并在

前添加以下行

"Serilog": { "Using": [], "MinimumLevel": { "Default": "Information", "Override": { "Microsoft": "Warning", "System": "Warning" } }, "Enrich": [], "WriteTo": [ { "Name": "Console" }, { "Name": "File", "Args": { "path": "Logs\\log.cshtml", "outputTemplate": "{Timestamp:dd/MM/yyyy HH:mm:ss} [{Level:u3}] {Message}{NewLine:1}{Exception:1}", "fileSizeLimitBytes": 10485760, "rollOnFileSizeLimit": true, "retainedFileCountLimit": 3, "shared": true } } ] }

我从https://forum.opnsense.org/index.php?topic=14687.0那里得到了这个答案

此错误之前:

Open VPN error

个人资料修改修复了此错误。