记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

SSL VPN --- (C-S)OpenVPN搭建过程

2020-04-19 14:42

学习完SSL,我们来看一下如何构建一个基于SSL的OpenVPN。OpenVPN一般提供客户端/服务器模式,也就是客户端连接到服务器端,可以访问服务器端,但服务器端无法主动访问客户端,这是通过隧道(tunnel)来实现的。大致流程是客户端对服务器发起SSL连接,连接建立后,所有流量通过SSL传输,OpenVPN还会加上特定的报头表示这是OpenVPN报文。
有关OpenVPN的下载网站在https://www.techspot.com/downloads/5182-openvpn.html
我这里使用的是OpenVPN2.4.7,下载地址:https://files02.tchspt.com/storage2/temp/openvpn-2.4.7.tar.gz
我使用一台Linux服务器作为服务端,客户端准备了一台Linux和一台Windows。

先决条件

在Linux服务端和Linux客户端先安装一些软件,并配置服务端支持转发功能。

yum install lzo lzo-devel pam pam-devel vim wget -y
yum install openssl-devel openssl gcc gcc-c++ cmake -y

查看tun模块是否支持

modinfo tun # 查看模块信息

开启路由转发功能

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1  
sysctl -p  

服务端安装过程

在服务端安装OpenVPN。

wget https://files02.tchspt.com/storage2/temp/openvpn-2.4.7.tar.gz  
tar -zxvf openvpn-2.4.7.tar.gz  
cd openvpn-2.4.7  
./configure  
make && make install 

有了软件,根据SSL握手的流程,我们还需要证书。如果不了解可以先看一下之前介绍SSL的文章,如何获取一个证书?如果只是为了测试,不值得去买一个,所以我们可以自己生成证书,具体步骤请看如何生成自签名证书

现在我们有证书了,具体要有些什么证书呢?OpenVPN如果要选证书验证的话,还必须要使用双向认证,所以这就需要把很多证书,证书链,私钥分别放到客户端和服务器。以下面这个证书链为例:

      Root.key    Root.crt
               |
    Second.key    Second.crt
               |
    Server.key    Server.crt

Root证书签发了Second证书,Second证书签发了Server证书,我们的Server证书是服务器使用的,为了方便起见,双向认证的客户端也使用Server证书。所以,两边需要放的材料如下:

  • 服务端:证书链(Second.crt+Root.crt) 证书(Server.crt) 私钥(Server.key) Diffie-Hellman参数(dh.pem)
  • 客户端:证书链(Second.crt+Root.crt) 证书(Server.crt) 私钥(Server.key)

这里两边放的内容是一样的,为什么呢,因为不管是签发流程还是证书都是一样的。应该是一种设定,使用OpenVPN的话客户端和服务端证书的签发者必须是一样的,因为没有专门的配置选项来区分客户端和服务端的CA。

知识来源: https://www.mmlnp.com/index.php/archives/121/

阅读:16687 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“SSL VPN --- (C-S)OpenVPN搭建过程”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

九层之台,起于累土;黑客之术,始于阅读

推广

工具

标签云

本页关键词