我刚刚设置了一个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
任何想法或什么可能导致此问题?
答案 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那里得到了这个答案
此错误之前:
个人资料修改修复了此错误。