我正在尝试在 Linux(Ubuntu 12.04)上使用 OpenVPN 2.2.1 连接到同事维护的 VPN 服务器。他成功使用了 TunnelBlick(在 Mac 上)。我正尝试逐字逐句地使用他的客户端配置,唯一的变化是本地对等端的文件不同。但我收到了一条无用的错误消息(编辑了私人信息):
$ openvpn mycorp.conf
… OpenVPN 2.2.1 i686-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] [MH] [PF_INET6] [IPv6 payload 20110424-2 (2.2RC2)] built on Mar 30 2012
… NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
… Cannot load CA certificate file mycorp-ca.crt path (null) (SSL_CTX_load_verify_locations) (OpenSSL)
… Exiting
有问题的文件 ( mycorp-ca.crt
) 位于当前目录中;如果我重命名它,我会收到一条预期的错误消息 ( …:fopen:No such file or directory:…
)。它可由当前用户读取,并且是一个 ASCII 文件:
----BEGIN CERTIFICATE-----
…18 lines of Base-64…
-----END CERTIFICATE-----
这有问题的代码调用 OpenSSL 中的库函数并失败。库函数文档只是有帮助地说,上述函数的返回值为 0 意味着:
由于 CAfile 和 CApath 为 NULL 或指定位置之一的处理失败,操作失败。检查错误堆栈以找出原因。
运行openvpn
确认strace
正在mycorp-ca.crt
读取。那么问题出在哪里?
答案1
-
显然文件开头缺少一个连字符 ( )。当我添加该连字符后,OpenVPN 便启动了。