.ovpn 文件导入:它安装了什么,没有安装什么
通过客户端自身的工作流程导入运营商文件。检查内联证书、不受支持的指令以及你实际启动的条目。
你导入了配置文件,客户端报告已连接,而系统的证书列表看起来和之前完全一样。这是预期结果,而不是导入失败。.ovpn 文件是一种文本配置,它告诉兼容的 OpenVPN 客户端如何连接到服务器以及如何完成身份验证,它从不向设备的信任存储写入任何内容。这种混淆导致两个错误:期待出现某种原生 VPN 类型,以及因为没看到证书就断定导入失败。
认为导入会安装证书的误解
配置文件可以把证书材料内联携带,这种想法正是由此而来:尖括号之间的一段文本看起来像一次安装。客户端却把它当作配置来解析,把证书交给自己的 TLS 层,而不是交给操作系统。设备的信任设置中不会增加任何内容,也不应该增加。文件描述的是一个连接,而信任存储描述的是设备愿意相信谁。
配置文件如果没有它所引用的私钥同样毫无用处,这也是它并非证书的另一个原因。请从运营商经过验证的渠道获取该文件,并将其视为敏感资料,因为它可能包含属于你的身份材料。一旦丢失私钥,配置文件就变成了一份你无法建立的连接说明。
按照客户端文档的方式打开文件
使用客户端文档中记录的导入文件选项,而不是更改扩展名或把文本粘贴到无关的 VPN 对话框中。有些产品还接受 URL 或打包归档,那些是各自拥有失败模式的独立受支持方式。如果证书或密钥以独立文件形式提供,先弄清楚客户端期望如何接收它们,再移动任何文件。只把 .ovpn 文本复制到第二台机器,会让每个被引用的路径都指向那里并不存在的文件,而你得到的错误会说文件缺失,而不是导入缺失。
用一句话概括,这就是可移植性的陷阱:文本会移动,引用却不会。把被引用的文件放到客户端文档所述的布局中,或者如果客户端支持,就把配置文件转换为内联形式。
内联材料与被引用的文件
内联配置文件把 CA、证书和密钥都放在文件内部,因此它自足且便于携带,但同时也是一个必须像其中的密钥一样小心保护的对象。引用式配置文件指定磁盘上的路径,这只有在这些路径存在、且客户端拥有读取权限的地方才能工作。只移动一种形式而不移动另一种,是常见的可移植性故障,它表现为 TLS 错误而不是导入错误。两种形式都不改变安全模型,因为客户端仍然验证服务器,仍然需要可用的私钥。
为了导入成功而关闭验证的配置文件,是用进展的假象换掉了检查。在连接任何真实服务之前,把这个设置改回来。
被拒绝的指令意味着客户端不匹配
桌面客户端接受的指令,可能被移动客户端或精简的桌面版本拒绝,脚本钩子、路由命令以及部分传输选项都属于这一类。客户端并不是在为难你,它只是拒绝执行自己无法保证的指令。导入错误通常会指出该指令的名称,这个名字比一句笼统的无法导入有用得多。在编辑配置文件之前,先到客户端自己的文档中搜索这个名称。
不要仅仅为了让导入通过就移除服务器验证或 启用不熟悉的脚本。要么找一个支持该指令的客户端,要么向运营商索取为你实际运行的客户端编写的配置文件。为了压住错误而删掉一行,会改变连接所保证的内容,而这种改变会在导入之后长期存在。
检查你实际启动的条目
没有任何东西保证刚下载的文件替换了上个月导入的副本,所以连接前请确认所选配置文件的名称及其服务器信息。连接之后,测试你真正需要的资源,并检查路由与 DNS 的行为,因为连接完成只是第一阶段。如果配置文件被拒绝,请保留准确的导入信息和客户端版本,因为这和能导入却无法到达服务器是不同的问题。OpenVPN 手册记录了配置文件可以包含的指令,这是编辑前应当核对的参考资料。
当替换项可用后,用客户端自带的删除功能让旧条目退役。从下载文件夹中删除文件,应用内保存的连接仍然原封不动。最后请记录哪个配置文件名称处于启用状态,以免下一个人通过你本想退役的那份副本连接。