首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

OpenVPN的配置和使用

OpenVPN的配置和使用

 OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,允许创建的VPN使用公开密钥、数字证书、或者用户名/密码来进行身份验证。OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows 2000/XP/Vista/7以及Android和iOS上运行,并包含了许多安全性的功能。
  配置OpenVPN 2.0的第一步是建立一个PKI(public key infrastructure 公钥基础设施)。PKI包括:
  • 服务端和每个客户端都有一个证书(也称做公钥)和私钥
  • 一个认证机构(CA)的证书和私钥,用来为每一个服务端和客户端颁发证书(sign each of the server and client certificates)。
  OpenVPN 支持基于证书的双向认证,也就是说客户端需认证服务端,服务端也要认证客户端,
  服务端和客户端验证对方的第一步是验证对方提供的证书是由认证机构(CA)颁发的。然后测试第一步认证通过的证书的头部信息,如:证书的common name,证书的类型(客户端还是服务端)。
  从VPN的观点来看,这一安全模式满足一系列要求:
  • 服务端仅仅需要它自己的证书/私钥对 -- 它不需要知道客户端的证书。
  • 服务端仅仅接受拥有CA颁发的证书的客户端。因为服务端检查证书是否由CA颁发时并不需要访问 CA的私钥,这样就可以将CA的私钥(整个PKI中最重要的私钥)放在另一台机子上。
  • 如果一个私钥(is compromised),通过将它的证书加入CRL(证书吊销列表)可以禁止这一私钥。 CRL允许有选择地拒绝compromised 证书而不需要重建整个PKI。
  • 基于嵌入的证书域比如Vommon Name,服务端能够加强客户端待定(client-specific)访问权限 (access fights)。
生成认证机构(master Certificate Authority(CA))证书 & 私钥  在这一节我们生成一个认证机构(master CA)证书/私钥,一个服务端证书/私钥,两个客户端的证书/私钥。
  我们使用OpenVPN捆绑的一组脚本。
  在Linux下打开一个Sehll,进入OpenVPN下的easy-rsa目录。如果OpenVPN是从RPM包安装的,easy-rsa目录通常在/usr/share/doc/packages/openvpn或/usr/share/doc/openvpn-2.0目录下(最好在改动之前将这一目录拷到别的地方,比如/etc/openvpn,以免以后OpenVPN的升级覆盖所做的改动)。
  在Windows下,打开一个命令行窗口进入\Program Files\OpenVPN\easy-rsa目录,运行下面的批处理文件将配置文件拷到正确的位置(这一命令会覆盖先前存在的vars.bat和openssl.cnf文件)。
init-config
  编辑vars文件(在Windows下是vars.bat)设置KEY_COUNTRY、KEY_PROVINCE、 KEY_CITY, KEY_ORG和KEY_EMAIL参数,这些参数不能有一个是空白。
  下一步,初始化PKI,Linux下:
. ./vars
./clean-all
./build-ca
  Windows下:
vars
clean-all
build-ca
  最后命令(build-ca)通过调用交互地openssl命令生成认证机构(CA)的证书和私钥。
ai:easy-rsa # ./build-ca
Generating a 1024 bit RSA private key
............++++++
...........++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [KG]:
State or Province Name (full name) [NA]:
Locality Name (eg, city) [BISHKEK]:
Organization Name (eg, company) [OpenVPN-TEST]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:OpenVPN-CA
Email Address [me@myhost.mydomain]:
  上面的序列中,大多数询问参数的默认值是在vars或vars.bat文件中设定的值。唯一一个需要明确输入的参数是Common Name,上面的例子中输入的是"OpenVPN-CA"。
为服务端生成证书&私钥  为服务端生成证书和私钥。Linux/BSD/Unix:
./build-key-server server
  Windows:
build-key-server server
  和前面的一步类似,大多数参数可以保持默认值。当询问Common Name时,输入"server" 。另外两个回答"y"的问题,"Sign the certificate? [y/n]"和"1 out of 1 certificate requests certified, commit? [y/n]"。
Two other queries require positive responses, "Sign the certificate? [y/n]" and "1 out of 1 certificate requests certified, commit? [y/n]".
为3个客户端生成证书&私钥  生成客户端证书和前一步类似。Linux/BSD/Unix:
./build-key client1
./build-key client2
./build-key client3
  Windows:
build-key client1
build-key client2
build-key client3
  如果你想使用口令保护你的客户端私钥,则使用build-key-pass脚本而不是build-key。
  为每个客户端输入适合的Common Name,也就是"client1", "client2", "client3"。总是为每个客户端指定一个独一无二的名字。
生成 Diffie Hellman 参数  必须为OpenVPN服务端生成 Diffie Hellman 参数。Linux/BSD/Unix:
./build-dh
  Windows:
build-dh
  输出:
ai:easy-rsa # ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.................+...........................................
...................+.............+.................+.........
......................................
继承事业,薪火相传
返回列表