openvpn配置
博客专区 > twisted3 的博客 > 博客详情
openvpn配置
twisted3 发表于1年前
openvpn配置
  • 发表于 1年前
  • 阅读 22
  • 收藏 2
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

通过与一个OpenVPN服务器建立连接,我们基本上在我们的设备和远端运行OpenVPN的主机之间建立了一个安全的通信通道。尽管在两个端点之 间的通信可能被截获,但是信息是经过高强度加密的所以实际上它对于攻击者没什么用。OpenVPN除了扮演加密通信通道的调解人,我们也可以通过设置使服 务器扮演互联网网关的角色。通过这种方式,我们可以连接任何不安全的Wifi,然后迅速的链接到远程的OpenVPN服务器,然后在不需要考虑偷窥的人或者无聊的管理员的情况下运行需要上网的程序。(注意:OpenVPN服务器旁还是需要信任的管理员的。)

这篇文章将一步一步的教会你如何在Ubuntu Server 14.04 LTS上安装OpenVPN。OpenVPN所在的主机可能是云上的一台VPS,一台在我们家里某台电脑上运行的虚拟机,或者是一个老到你都快忘了的设备。

Ubuntu下OpenVPN客户端配置教程 http://www.linuxidc.com/Linux/2013-06/86562.htm

Ubuntu 10.04搭建OpenVPN http://www.linuxidc.com/Linux/2012-11/74790.htm

Ubuntu 13.04 VPN (OpenVPN) 配置和连接不能同时访问内外网的问题 http://www.linuxidc.com/Linux/2013-07/86899.htm

如何在Linux上用OpenVPN搭建安全的远程网络架构 http://www.linuxidc.com/Linux/2013-11/92646.htm

第一步 准备系统

我们需要Ubuntu Server主机的一个命令行终端,比如通过SSH从远程访问它。首先需要更新它的本地仓库数据:

  1. sub0@delta:~$ sudo apt-get update

进行操作系统和已安装的包的升级,输入:

  1. sub0@delta:~$ sudo apt-get dist-upgrade

如果升级了新内核,那就需要重启。当更新完成后,就该安装OpenVPN了:

  1. sub0@delta:~$ sudo apt-get-y install openvpn easy-rsa dnsmasq

注意,我们用apt-get安装了三个包:

  • openvpn提供了OpenVPN的核心
  • easy-rsa包含了一些有用的密钥管理脚本
  • dnsmasq是当我们的OpenVPN所在的主机将扮演客户端的路由器时会用到的域名服务器

第二步 生成证书和私钥

这是安装OpenVPN中最重要和最关键的一步,目的是建立公钥基础设施(PKI)。包括如下内容:

  • 为OpenVPN服务器创建一个证书(公钥)和一个私钥
  • 为每个OpenVPN客户端创建证书和私钥
  • 建立一个证书颁发机构(CA)并创建证书和私钥。这个私钥用来给OpenVPN服务器和客户端的证书签名

从最后一个做起,我们先建立一个目录:

  1. sub0@delta:~$ sudo mkdir /etc/openvpn/easy-rsa

然后把easy-rsa的文件拷过去:

  1. sub0@delta:~$ sudo cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa

在我们创建CA的私钥之前,我们先编辑/etc/openvpn/easy-rsa/vars(我们喜欢用nano编辑器,不过这只是我们的喜好,你爱用什么用什么):

  1. sub0@delta:~$ sudo nano /etc/openvpn/easy-rsa/vars

在文件的尾部,我们设置主证书和密钥的信息:

  1. export KEY_COUNTRY="GR"
  2. export KEY_PROVINCE="Central Macedonia"
  3. export KEY_CITY="Thessaloniki"
  4. export KEY_ORG="Parabing Creations"
  5. export KEY_EMAIL="nobody@parabing.com"
  6. export KEY_CN="VPNsRUS"
  7. export KEY_NAME="VPNsRUS"
  8. export KEY_OU="Parabing"
  9. export KEY_ALTNAMES="VPNsRUS"

你可以根据自己的情况设置不同的值。特别注意最后KEY_ALTNAMES这一行,尽管这不是原本vars文件中有的但是我们还是把它加到文件的尾部,不然build-ca脚本会运行失败。

保存更改,我们得按[CTRL+O]然后按[Enter]。想退出nano,请按[CTRL+X]。现在,我们要获得root访问权限,继续生成主证书和私钥(LCTT译注:请注意命令行账户发生了改变):

  1. sub0@delta:~$ sudo su
  2. root@delta:/home/sub0# cd /etc/openvpn/easy-rsa
  3. root@delta:/etc/openvpn/easy-rsa# source vars
  4. NOTE:If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
  5. root@delta:/etc/openvpn/easy-rsa# sh clean-all
  6. root@delta:/etc/openvpn/easy-rsa# sh build-ca
  7. Generating a 1024 bit RSA private key
  8. ...++++++
  9. ................++++++
  10. writing newprivate key to 'ca.key'
  11. -----
  12. You are about to be asked to enter information that will be incorporated
  13. into your certificate request.
  14. What you are about to enter is what is called a DistinguishedNameor a DN.
  15. There are quite a few fields but you can leave some blank
  16. For some fields there will be a default value,
  17. If you enter '.', the field will be left blank.
  18. -----
  19. CountryName(2 letter code)[GR]:
  20. StateorProvinceName(full name)[CentralMacedonia]:
  21. LocalityName(eg, city)[Thessaloniki]:
  22. OrganizationName(eg, company)[ParabingCreations]:
  23. OrganizationalUnitName(eg, section)[Parabing]:
  24. CommonName(eg, your name or your server's hostname) [VPNsRUS]:
  25. Name [VPNsRUS]:
  26. Email Address [nobody@parabing.com]:
  27. root@delta:/etc/openvpn/easy-rsa#

在我们的例子中,所有问题的答案都选择了默认的。在运行了build-ca脚本后,我们就获得了主证书文件(keys/ca.crt)和对应的私钥(keys/ca.key)。私钥必须不计代价的保密。

第三步 生成OpenVPN服务器的证书和私钥

在我们为OpenVPN服务器生成证书和密钥之前,我们得给他起个名。我决定把它叫"delta",然后运行build-key-server脚本来获取证书和密钥:

  1. root@delta:/etc/openvpn/easy-rsa# sh build-key-server delta
  2. Generating a 1024 bit RSA private key
  3. ....++++++
  4. ...++++++
  5. writing newprivate key to 'delta.key'
  6. -----
  7. You are about to be asked to enter information that will be incorporated
  8. into your certificate request.
  9. What you are about to enter is what is called a DistinguishedNameor a DN.
  10. There are quite a few fields but you can leave some blank
  11. For some fields there will be a default value,
  12. If you enter '.', the field will be left blank.
  13. -----
  14. CountryName(2 letter code)[GR]:
  15. StateorProvinceName(full name)[CentralMacedonia]:
  16. LocalityName(eg, city)[Thessaloniki]:
  17. OrganizationName(eg, company)[ParabingCreations]:
  18. OrganizationalUnitName(eg, section)[Parabing]:
  19. CommonName(eg, your name or your server's hostname) [delta]:
  20. Name [VPNsRUS]:deltaVPN
  21. Email Address [nobody@parabing.com]:
  22. Please enter the following 'extra' attributes
  23. to be sent with your certificate request
  24. A challenge password []:
  25. An optional company name []:
  26. Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
  27. Check that the request matches the signature
  28. Signature ok
  29. The Subject's DistinguishedNameisas follows
  30. countryName :PRINTABLE:'GR'
  31. stateOrProvinceName :PRINTABLE:'Central Macedonia'
  32. localityName :PRINTABLE:'Thessaloniki'
  33. organizationName :PRINTABLE:'Parabing Creations'
  34. organizationalUnitName:PRINTABLE:'Parabing'
  35. commonName :PRINTABLE:'delta'
  36. name :PRINTABLE:'deltaVPN'
  37. emailAddress :IA5STRING:'nobody@parabing.com'
  38. Certificateis to be certified untilApr708:06:022024 GMT (3650 days)
  39. Sign the certificate?[y/n]:y
  40. 1out of 1 certificate requests certified, commit?[y/n]y
  41. Writeout database with1new entries
  42. DataBaseUpdated
  43. root@delta:/etc/openvpn/easy-rsa#

当脚本成功运行完的时候,我们就得到了服务器的证书(keys/delta.crt)和私钥(keys/delta.key)。注意服务器证书被CA的私钥签名了。

第四步 生成Diffie-Hellman参数

幸亏有了Diffie-Hellman参数,我们才能在不安全的通信通道里安全的交换密钥。为了生成它我们需要键入:

  1. root@delta:/etc/openvpn/easy-rsa# sh build-dh
  2. Generating DH parameters,2048 bit long safe prime, generator 2
  3. Thisis going to take a long time
  4. .......................+.....................................+..
  5. ...........................+..+.....................+...........
  6. ..............................................+.................
  7. .......................+........................................
  8. ................................................+...............
  9. .......................................++*++*++*
  10. root@delta:/etc/openvpn/easy-rsa#

证书,私钥和包含Diffie-Hellman参数的文件已生成,它们都储存在/etc/openvpn/easy-rsa/keys,所以我们到现在为止已经有如下五个文件了:

  1. ca.crt – 证书颁发机构(CA)的证书
  2. ca.key – CA的私钥
  3. delta.crt – OpenVPN服务器的证书
  4. delta.key – OpenVPN服务器的私钥
  5. dh2048.pem – Diffie-Hellman参数文件

你自己的OpenVPN服务器命名可能和我们的不同。现在我们需要拷贝除了ca.key的文件到/etc/openvpn:

  1. root@delta:/etc/openvpn/easy-rsa# cd keys
  2. root@delta:/etc/openvpn/easy-rsa/keys# cp ca.crt delta.crt delta.key dh2048.pem /etc/openvpn
  3. root@delta:/etc/openvpn/easy-rsa/keys# cd ..
  4. root@delta:/etc/openvpn/easy-rsa#

第五步 为OpenVPN客户端生成证书和私钥

试想我们的笔记本要连接OpenVPN服务器。为了实现这个很常见的情况,我们首先需要为客户端(比如:我们的笔记本)生成证书和私钥,在/etc/openvpn/easy-rsa有一个脚本帮我们完成这项工作:

  1. root@delta:/etc/openvpn/easy-rsa# source vars
  2. NOTE:If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
  3. root@delta:/etc/openvpn/easy-rsa# ./build-key laptop
  4. Generating a 1024 bit RSA private key
  5. .......................................++++++
  6. ...................................................................................................++++++
  7. writing newprivate key to 'laptop.key'
  8. -----
  9. You are about to be asked to enter information that will be incorporated
  10. into your certificate request.
  11. What you are about to enter is what is called a DistinguishedNameor a DN.
  12. There are quite a few fields but you can leave some blank
  13. For some fields there will be a default value,
  14. If you enter '.', the field will be left blank.
  15. -----
  16. CountryName(2 letter code)[GR]:
  17. StateorProvinceName(full name)[CentralMacedonia]:
  18. LocalityName(eg, city)[Thessaloniki]:
  19. OrganizationName(eg, company)[ParabingCreations]:
  20. OrganizationalUnitName(eg, section)[Parabing]:
  21. CommonName(eg, your name or your server's hostname) [laptop]:
  22. Name [VPNsRUS]:
  23. Email Address [nobody@parabing.com]:
  24. Please enter the following 'extra' attributes
  25. to be sent with your certificate request
  26. A challenge password []:
  27. An optional company name []:
  28. Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
  29. Check that the request matches the signature
  30. Signature ok
  31. The Subject's DistinguishedNameisas follows
  32. countryName :PRINTABLE:'GR'
  33. stateOrProvinceName :PRINTABLE:'Central Macedonia'
  34. localityName :PRINTABLE:'Thessaloniki'
  35. organizationName :PRINTABLE:'Parabing Creations'
  36. organizationalUnitName:PRINTABLE:'Parabing'
  37. commonName :PRINTABLE:'laptop'
  38. name :PRINTABLE:'VPNsRUS'
  39. emailAddress :IA5STRING:'nobody@parabing.com'
  40. Certificateis to be certified untilApr718:00:512024 GMT (3650 days)
  41. Sign the certificate?[y/n]:y
  42. 1out of 1 certificate requests certified, commit?[y/n]y
  43. Writeout database with1new entries
  44. DataBaseUpdated
  45. root@delta:/etc/openvpn/easy-rsa#

我们为密钥选取的名字是"laptop",当build-key脚本运行完之后,我们就得到了在keys/laptop.crt的证书和在keys /laptop.key的私钥。有了这两个文件和CA的证书,我们得把这三个文件拷贝到用户有(比如用户sub0)权访问的地方。比如我们可以在用户的 home目录中新建一个目录并把三个文件拷贝过去:

  1. root@delta:/etc/openvpn/easy-rsa# mkdir /home/sub0/ovpn-client
  2. root@delta:/etc/openvpn/easy-rsa# cd keys
  3. root@delta:/etc/openvpn/easy-rsa/keys# cp ca.crt laptop.crt laptop.key /home/sub0/ovpn-client
  4. root@delta:/etc/openvpn/easy-rsa/keys# chown -R sub0:sub0 /home/sub0/ovpn-client
  5. root@delta:/etc/openvpn/easy-rsa/keys# cd ..
  6. root@delta:/etc/openvpn/easy-rsa#

ovpn-client文件夹必须安全的拷贝到我们的笔记本电脑上。我们可以给多个客户端分发这三个文件。当然了,等我们需要一个不一样的证书-私钥对的时候只要再次运行build-key脚本即可。

共有 人打赏支持
粉丝 19
博文 27
码字总数 26261
×
twisted3
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: