VPN实战1:构建SSL VPN

日期: 2012-09-26 作者:羽扇纶巾 来源:TechTarget中国

OpenVPN 是一个强大、高度可配置、基于SSL的 VPN (Virtual Private Network)Open Source 软件。它具有多种的验证方式以及许多强大的功能。OpenVPN使用SSL/TLS协议进行网络传输。支持多种客户认证方法,如证书、smart cards,加上用户名密码的证书认证等。

除此以外,还有强大的ACL功能限制客户的信息交换。   OpenVPN可以运行在多种操作系统中,包括:Linux, Windows 2000/XP and higher, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Solaris。通过使用OpenV……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

OpenVPN 是一个强大、高度可配置、基于SSL的 VPN (Virtual Private Network)Open Source 软件。它具有多种的验证方式以及许多强大的功能。OpenVPN使用SSL/TLS协议进行网络传输。支持多种客户认证方法,如证书、smart cards,加上用户名密码的证书认证等。除此以外,还有强大的ACL功能限制客户的信息交换。

  OpenVPN可以运行在多种操作系统中,包括:Linux, Windows 2000/XP and higher, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Solaris。通过使用OpenVpn,可以实现如下一些功能:

  使用特定udp或tcp端口实现两台主机的之间的vpn连接。
  实现C/S结构,实现多台client通过server服务器互连互通。
  通过TLS/SSL加密保证数据传输的安全。
  通过数据的压缩,提高数据传输的速度。

  安装OpenVPN

  企业级Linux版本的的安装光盘中已经自带了OpenVPN的安装程序,在系统安装的时候,用户可以选择进行安装。如果系统安装时没有安装,用户也可以随时使用安装盘进行安装。为了确认系统是否已经安装该软件,可以使用如下命令进行查看:
  #rpm –qa | grep openvpn

  制作证书

  1.制作证书前的准备

  复制openvpn证书工具包,在安装完openvpn后,系统会在/etc下建一个openvpn的目录,这样我们可以把openvpn证书工具包拷贝到/etc/openvpn目录下,需要注意如下几个主要的存放位置:

  证书工具包默认位置:/usr/share/openvpn/easy-rsa
  准备配置证书位置:/etc/openvpn/
  证书生成位置:/etc/openvpn/easy-rsa/2.0/keys

  使用命令如下所示:
  # cp -r /usr/share/openvpn/easy-rsa /etc/openvpn/
  # mkdir /etc/openvpn/easy-rsa/2.0/keys

  2.修改vars变量初始化配置文件

  编辑easy-rsa/2.0/vars文件,需要进行如下几个操作:

  注释掉export CA_EXPIRE=3650,在前面加个#号即可
  注释掉export KEY_EXPIRE=3650,在前面加个#号即可
  修改证书默认值(如图1中白色区域所示)

图1 修改vars文件中的相应区域

  3.初始化证书库

  主要包括初始化变量库和清空变量库两个步骤,如下所示的命令:
  //初始化变量库
  #./vars
  //清空证书库
  #./clean-all

  4.证书验证机制

  执行如下命令,如图2所示,在执行过程中,输入对应的信息,完成后在keys目录下,会生成ca.crt和ca.key这两个文件:

图2  完成证书验证机制

  5.生成服务器证书

  执行./build-key-server server命令,执行完成后在keys目录下,会生成server.crt、server.csr和server.key这三个文件,如图3所示:

图3  生成服务器证书

  6.生成客户端证书

  在openvpn中,这种配置方法是每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接(如果有两个机器安装相同证书,同时拨服务器,都能拨上,但是只有第一个拨上的才能连通网络)。所以需要建立许多份证书。执行./build-key vpn_client1命令将执行完成后在keys目录下,会生成vpn_client1.crt、vpn_client1.csr和vpn_client1.key这三个文件,如图4所示:

图4 为客户端vpn_client1生成客户端证书

  一个服务器端可以配多个客户端证书,但是每个客户端都不能一样,主要体现在Common Name这里,每一个客户端的Common Name都必须不一样,用户可以再继续建出多个客户端证书,如下所示:
  #./build-key vpn_client2
  #./build-key vpn_client3

  7.编译证书

  采用./build-dh命令将刚刚生成出来的证书和钥匙等等进行了一次加密算法,然后证书和钥匙都准备好了,此时在keys目录下,会生成dh1024.pem文件。如图5所示:

图5  编译证书

  配置服务端

  如果上面所述的七步都运行正常的情况下,用户就开始配置服务端了,如果中间过程有出现什么问题,建议清空证书库,重新来过,执行./clean-all来清空库即可。

  配置客户端需要执行如下几个步骤:

  (1)首先把几个证书、钥匙和验证机制都拷贝到/etc/openvpn目录下,如下命令所示:
  # cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn/
  # cp /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem /etc/openvpn/
  # cp /etc/openvpn/easy-rsa/2.0/keys/server.crt /etc/openvpn/
  # cp /etc/openvpn/easy-rsa/2.0/keys/server.key /etc/openvpn/

  (2)然后把服务器的配置文件拷贝到/etc/openvpn目录下,如下所示:
  # cp /usr/share/doc/openvpn-2.1/sample-config-files/server.conf /etc/openvpn/

  (3)编辑/etc/openvpn/server.conf配置文件,去掉下述选项前面的;分号,以使其生效:
  ;user nobody
  ;group nobody

  (4)启动openvpn,查看一下端口1194是否已开放,如果1194已开放那就表明openvpn服务端已经配置成功了,如下所示:
  #/etc/init.d/openvpn start

  (5)设置开机自启动openvpn,使用如下命令,找到openvpn服务(如图6所示),并选中服务确认即可,下次系统启动的时候会自动加载openvpn服务:
  #ntsysv

图6  设置OpenVPN开机启动

  (6)设置防火墙,使得VPN流量能够正常通过。在系统管理中,打开防火墙配置,开启OpenVPN和SSH(前面打沟即可),如图7所示:

图7 设置防火墙

  配置客户端

  配置客户端vpn_client1需要使用源代码包目录sample-config-files里的client.conf 修改即可,如下片段所示:

  client
  dev tun
  proto tcp
  remote IP_address port
  resolv-retry infinite
  nobind
  user nobody
  group nobody
  persist-key
  persist-tun
  ca ca.crt
  cert vpn_client1.crt。
  key vpn_client1.key
  #comp-lzo

  其中,主要考虑如下几个参数的设定:

  proto tcp或proto udp:和server.conf 一致即可
  remote IP_address port:指定vpn server 的IP 地址和端口
  cert vpn_client1.crt和key vpn_client1.key:这2 行填给vpn_client1生成的密钥文件

  通过如上配置后,就可以使用OpenVPN进行安全通信了。

作者

羽扇纶巾
羽扇纶巾

自由撰稿人。

相关推荐