文档章节

openvpn配置

twisted3
 twisted3
发布于 2016/07/30 22:01
字数 2281
阅读 24
收藏 2
点赞 0
评论 0

通过与一个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脚本即可。

© 著作权归作者所有

共有 人打赏支持
twisted3
粉丝 18
博文 28
码字总数 30995
作品 0
广州
后端工程师
Linux自学笔记——模拟搭建openvpn

VPN直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,openvpn无疑是linux开源vpn的先锋,提供了良好的性能和友好的用户GUI。 OpenVPN是一个基于OpenSSL库的应用...

claude_liu ⋅ 04/26 ⋅ 0

CentOS6.7安装OpenVPN服务端

本文主要讲述如何在Linux(以CentOS6.7为例)环境中搭建VPN(OpenVPN)服务器。 OpenVPN基本介绍: OpenVPN是开源的VPN守护进程(daemon),easy-RSA提供一些简易的CA证书工具。 VPN原理: ...

技术小胖子 ⋅ 2017/11/08 ⋅ 0

搭建基于证书认证登录的OpenVPN服务器

一、OpenVPN简介 OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用。 OpenVPN允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身...

技术小胖子 ⋅ 2017/11/02 ⋅ 0

RHEL 7.4搭建openvpn

OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用 OpenVPN允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身份验证。它大量使用...

老唐6 ⋅ 05/07 ⋅ 0

OpenVPN学习笔记——客户端安装配置

OpenVPN服务器端部署完成后,就需要配置客户端的使用了,下面分别以Windows和Linux为例进行客户端的安装和配置。 1、Windows客户端 1)安装OpenVPN GUI for Windows客户端 OpenVPN在windows...

技术小阿哥 ⋅ 2017/11/27 ⋅ 0

III(二十一)OpenVPN(2)

案例1: 多个机房利用OpenVPN互联架构方案: 注: vpn client角色相当于宿主机win的拨号端; vpn server和vpn client均执行(1、firewall(避免影响port服务和转发);2、关闭selinux;3、开...

技术小阿哥 ⋅ 2017/11/27 ⋅ 0

大用户量下Openvpn部署方案(一)

前段时间公司有个项目需要数以千计的客户端都连入一个vpn下,并且有一部分需要获得固定的ip地址。 思路:简单的openvpn服务器部署起来并不难,但是大量的用户,如果采用简单的证书方式,批量...

技术小胖子 ⋅ 2017/11/01 ⋅ 0

centos7 搭建属于你自己的openvpn

现在企业大一点都会分布很多办公点,为了更好的访问内部资源,vpn是一个很好的选择,今天分享一下在centos7 下安装openvpn的过程和一些踩的坑,有时间写个脚本,让安装从此简单。 centos7 op...

674591788 ⋅ 05/03 ⋅ 0

linux centos7 openvpn安装及客户端权限控制

一、服务端配置 1、 安装依赖包和openvpn 2、生成服务器、客户端证书 根据以上操作形成以下文件: CA证书与私钥 服务端证书与私钥 客户端证书与私钥 DHM 3、配置openvpn 3.1 将服务端证书与私...

TsingCall ⋅ 05/15 ⋅ 0

Centos7+Openvpn通过证书登陆访问

我们前面文章介绍了Centos7下安装接配置PPTP协议的VPN,今年我们主要介绍Centos7+Openvpn通过证书&&账户及密码登陆配置介绍,我们都知道,OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。...

技术小阿哥 ⋅ 2017/11/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Docker Swarm的前世今生

概述 在我的《Docker Swarm集群初探》一文中,我们实际体验了Docker Swarm容器集群技术的魅力,与《Kubernetes实践录》一文中提到的Kubernetes集群技术相比,Docker Swarm没有Kubernetes显得...

CodeSheep ⋅ 今天 ⋅ 0

骰子游戏代码开源地址

因为阿里云现在服务器已经停用了,所以上面的配置已经失效。 服务端开源地址:https://gitee.com/goalya/chat4.git 客户端开源地址:https://gitee.com/goalya/client4.git 具体运行界面请参考...

算法之名 ⋅ 今天 ⋅ 0

设计模式--装饰者模式

装饰者模式 定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 通用类图 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比...

gaob2001 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部