在 Linux PC 上安装 OpenVPN

设置好 VPN 服务器后,下一步是安装和配置 OpenVPN。
38 位读者喜欢这篇文章。
open network

Opensource.com

OpenVPN 在两点之间创建一个加密隧道,防止第三方访问您的网络流量。 通过设置您的虚拟专用网络 (VPN) 服务器,您将成为自己的 VPN 提供商。 许多流行的 VPN 服务已经使用 OpenVPN,所以为什么将您的连接绑定到特定的提供商,而您可以完全控制呢?

本系列文章的第一篇文章演示了如何设置和配置 Linux PC 作为您的 OpenVPN 服务器。 它还讨论了如何配置您的路由器,以便您可以从外部网络访问您的 VPN 服务器。

第二篇文章演示了如何使用来自 OpenVPN wiki 的自定义步骤安装 OpenVPN 服务器软件。

安装 OpenVPN

首先,使用您的包管理器安装 OpenVPN 和 easy-rsa 应用程序(以帮助您在服务器上设置身份验证)。 此示例使用 Fedora Linux; 如果您选择了其他发行版,请使用适合您的发行版的命令

$ sudo dnf install openvpn easy-rsa

这将创建一些空目录

  • /etc/openvpn
  • /etc/openvpn/client
  • /etc/openvpn/server

如果在安装过程中未创建这些目录,请手动创建它们。

设置身份验证

OpenVPN 依赖于 easy-rsa 脚本,并且应该有自己的副本。 复制 easy-rsa 脚本和文件

$ sudo mkdir /etc/openvpn/easy-rsa
$ sudo cp -rai /usr/share/easy-rsa/3/* \
/etc/openvpn/easy-rsa/

身份验证非常重要,OpenVPN 对此非常重视。 理论上,如果 Alice 需要访问 Bob 公司内的私人信息,Bob 必须确保 Alice 确实是 Alice。 同样,Alice 必须确保 Bob 确实是 Bob。 我们称之为相互身份验证。

当今的最佳实践是从以下三个可能的因素中检查两个属性

  • 你拥有的东西
  • 你知道的东西
  • 你是什么

有很多选择。 此 OpenVPN 设置使用

  • 证书:客户端和服务器都拥有的东西
  • 证书密码:人们知道的东西

Alice 和 Bob 需要帮助才能相互验证。 由于他们都信任 Cathy,因此 Cathy 扮演一个名为证书颁发机构 (CA) 的角色。 Cathy 证明 Alice 和 Bob 都是他们声称的人。 因为 Alice 和 Bob 都信任 Cathy,所以他们也相互信任。

但是,是什么说服 Cathy 相信 Alice 和 Bob 确实是 Alice 和 Bob? Cathy 在社区中的声誉取决于能否正确做到这一点,因此,如果她希望 Danielle、Evan、Fiona、Greg 和其他人也信任她,她将严格测试 Alice 和 Bob 的声明。 在 Alice 和 Bob 说服 Cathy 相信他们确实是 Alice 和 Bob 之后,Cathy 会签署证书以供他们相互共享和与世界共享。

Alice 和 Bob 如何知道 Cathy(而不是冒充她的人)签署了证书? 他们使用一种称为 公钥密码术 的技术:

  • 找到一种使用一个密钥加密并使用另一个密钥解密的密码算法。
  • 声明一个密钥为私钥,并与公众共享另一个密钥。
  • Cathy 与世界共享她的公钥和她的签名的明文副本。
  • Cathy 使用她的私钥加密她的签名。 任何人都可以使用她的公钥解密它。
  • 如果 Cathy 解密的签名与明文副本匹配,Alice 和 Bob 可以相信 Cathy 确实签署了它。

每次您在线购买商品和服务时,您都会使用相同的技术。

实施身份验证

OpenVPN 的 文档建议在单独的系统上或至少在 OpenVPN 服务器上的单独目录中设置 CA。 该文档还建议从服务器和客户端生成服务器和客户端证书。 因为这是一个简单的设置,所以您可以将 OpenVPN 服务器用作其自己的 CA,并将证书和密钥放入服务器上的指定目录中。

从服务器生成证书,并在客户端设置过程中将它们复制到每个客户端。

此实现使用自签名证书。 这是可行的,因为服务器信任自身,并且客户端信任服务器。 因此,服务器是签署证书的最佳 CA。

从 OpenVPN 服务器,设置 CA

$ sudo mkdir /etc/openvpn/ca
$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa init-pki
$ sudo /etc/openvpn/easy-rsa/easyrsa build-ca

使用一个容易记住但难以猜测的密码。

设置服务器密钥对和证书请求

$ cd /etc/openvpn/server
$ sudo /etc/openvpn/easy-rsa/easyrsa init-pki
$ sudo /etc/openvpn/easy-rsa/easyrsa gen-req OVPNserver2020 nopass

在本例中,OVPNServer2020 是您在本系列文章的第一篇文章中分配给 OpenVPN 服务器的主机名。

生成和签名证书

现在您必须向 CA 发送服务器请求,并生成和签署服务器证书。

此步骤本质上是将请求文件从 /etc/openvpn/server/pki/reqs/OVPNserver2020.req 复制到 /etc/openvpn/ca/pki/reqs/OVPNserver2020.req,以准备进行审查和签名

$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
import-req /etc/openvpn/server/pki/reqs/OVPNserver2020.req OVPNserver2020

审查和签署请求

您已经生成了一个请求,所以现在您必须审查和签署证书

$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
show-req OVPNserver2020

以服务器身份签名

$ cd /etc/openvpn/ca
$ sudo /etc/openvpn/easy-rsa/easyrsa \
sign-req server OVPNserver2020

将服务器和 CA 证书的副本放在它们所属的位置,以便配置文件可以拾取它们

$ sudo cp /etc/openvpn/ca/pki/issued/OVPNserver2020.crt \
/etc/openvpn/server/pki/
$ sudo cp /etc/openvpn/ca/pki/ca.crt \
/etc/openvpn/server/pki/

接下来,生成 Diffie-Hellman 参数,以便客户端和服务器可以交换会话密钥

$ cd /etc/openvpn/server
$ sudo /etc/openvpn/easy-rsa/easyrsa gen-dh

快完成了

本系列文章的下一篇将演示如何配置和启动您刚刚构建的 OpenVPN 服务器。


本文基于 D. Greg Scott 的 博客 并经许可重复使用。

接下来阅读
Greg Scott head shot
在 Digital Equipment Corporation(当时一家大型计算机公司)经历了几轮裁员后,我于 1994 年创立了 Scott Consulting。 一家更大的公司在 1999 年收购了 Scott Consulting,当时正值互联网泡沫摧毁了 IT 服务行业。

评论已关闭。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议授权。
© . All rights reserved.