OpenVPN
--------------时间:2014-7-7 -------------------深圳运维组
如果你想要更多的不仅仅是预共享密钥的OpenVPN可以很容易地设置和使用公共密钥基础设施(PKI)来使用SSL/TLS证书进行身份验证和VPN服务器和客户端之间的密钥交换。OpenVPN可以在路由中使用或桥连的VPN模式,并且可以配置为使用UDP或TCP,端口号可以配置为其他的,但官方默认端口是1194,而且它仅使用了单端口的所有通信。
OpenVPN的客户端可用于几乎所有的系统,包括所有的Linux发行版,Mac OS X,Windows和OpenWRT的基于无线局域网的路由器。
实验网络拓扑图:
目录
OpenVPN .......................................................................................................................... 1
1. 2.
服务器安装 ..................................................................................................... 3 公钥基础设施设置 ........................................................................................... 3 2.1 2.2 2.3 3. 4. 5.
证书颁发机构设置 .................................................................................... 3 服务器证书 .............................................................................................. 4 客户端证书 .............................................................................................. 5
服务器配置 ..................................................................................................... 5 客户端配置 ......................................................................................................... 7 故障排查 ......................................................................................................... 9 5.1 5.2
错误一: .................................................................................................. 9 错误二: ................................................................................................ 10
6. 客户端软件的实现 ......................................................................................... 10 6.1 6.2 6.3
Linux的网络管理器图形用户界面的OpenVPN ............................................ 10 Linux的文本界面的OpenVPN ................................................................... 11 OpenVPN的带有GUI为Win 7或Win XP .................................................... 12
1. 服务器安装
要安装OpenVPN的 ,请在终端输入:
$sudo –s
##输入密码切换到root,后面的操作均是在root用户下进行。
#apt-get install openvpn easy-rsa
2. 公钥基础设施设置
构建的OpenVPN配置的第一步是建立一个公钥基础设施(PKI),公钥基础设施包括:
1. 一个单独的证书(也称为公钥)和私钥的服务器和每个客户端,
2. 这是用来签署每个服务器和客户端证书的大师证书颁发机构(CA)的证书和密钥。
OpenVPN的支持基于证书的双向认证,这意味着客户端必须验证服务器证书在互信建立之前,服务器也必须验证客户端证书。
服务器和客户端将验证对方先核实该提供的证书是由主证书颁发机构(CA)签署,然后通过在现在验证的证书的头,如证书的通用名称或证书类型测试信息(客户端或服务器)。
2.1 证书颁发机构设置
要建立你自己的证书颁发机构(CA)和产生的证书和密钥的OpenVPN服务器多个客户端的easy-rsa目录先复制到/etc/openvpn。这将确保任何更改脚本包时更新也不会丢失。从终端的变化,以root用户:
mkdir /etc/openvpn/easy-rsa/
cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
接下来,编辑的/etc/openvpn/easy-rsa/vars调整到适合您的环境:
root@ubuntu:/etc/openvpn/easy-rsa# cat vars |grep -v \##主要修改红色部分内容,下面是已经改好的例子 export EASY_RSA=\export OPENSSL=\
export PKCS11TOOL=\export GREP=\
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` export KEY_DIR=\
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export PKCS11_MODULE_PATH=\
export PKCS11_PIN=\export KEY_SIZE=2048 export CA_EXPIRE=3650 export KEY_EXPIRE=3650
export KEY_COUNTRY=\CN\国家 export KEY_PROVINCE=\SZ\省份 export KEY_CITY=\ShenZhen\城市 export KEY_ORG=\acttao\组织单位
export KEY_EMAIL=\jiaxxx@126.com\邮箱 export KEY_OU=\acttao\组织单元 export KEY_NAME=\acttao\证书名 export KEY_CN=\acttao\证书别名
输入以下命令以生成主证书颁发机构(CA)的证书和密钥:
cd /etc/openvpn/easy-rsa/
chown -R root.$user . ##$user指的是当前管理系统的用户(非root) chmod g+w . source ./vars ./clean-all
./build-ca (可能会报错,详见下图)
root@ubuntu:/etc/openvpn/easy-rsa# ./build-ca
error on line 198 of /etc/openvpn/easy-rsa/openssl-1.0.0.cnf 140065253045920:error:0E065068:configuration file
routines:STR_COPY:variable has no value:conf_def.c:618:line 198
或者
root@ubuntu:/etc/openvpn/easy-rsa# ./build-ca
error on line 220 of /etc/openvpn/easy-rsa/openssl-1.0.0.cnf 140519323657888:error:0E065068:configuration file
routines:STR_COPY:variable has no value:conf_def.c:618:line 220
经排错得知原因是:/etc/openvpn/easy-rsa/vars 配置文件中并没有涉及到该项,所以会报无效值,我们需要在/etc/openvpn/easy-rsa/openssl-1.0.0.cnf 把这两行给注释掉。
#subjectAltName=$ENV::KEY_ALTNAMES ##198行# #subjectAltName=$ENV::KEY_ALTNAMES ##220行#
再重新执行:./build-ca 就不报错了 ------一直回车
2.2 服务器证书
接下来,我们会为服务器的证书和私钥:
./build-key-server acttao 一直回车,到sign,Y 1out1,Y
正如在上一步中,大部分参数都可以默认。其他两个查询需要积极的回应,“注册证书?[Y / N]”和“1出1证书请求认证,提交?[Y / N]”。
需要为的OpenVPN服务器生成的Diffie Hellman的参数:
./build-dh
所有证书和密钥的子目录键已生成。通常的做法是将它们复制/etc/openvpn/:
cd keys/
cp acttao.crt acttao.key ca.crt dh2048.pem /etc/openvpn/
2.3 客户端证书
VPN客户端还需要一个证书来验证自己到服务器。通常你创建一个不同的证书为每个客户端。创建证书,请输入以下的终端,而作为root用户:
cd /etc/openvpn/easy-rsa/ source ./vars
./build-key client1
##大部分都是回车,最后两步是”y”
使用安全的方法,把下列文件拷贝到客户端:
1. /etc/openvpn/ca.crt
2. /etc/openvpn/easy-rsa/keys/client1.crt 3. /etc/openvpn/easy-rsa/keys/client1.key
由于客户端证书和密钥只需要在客户机上,你应该从服务器上删除它们。
3. 服务器配置
随着你的OpenVPN安装你得到了这些示例配置文件(还有更多,如果你打勾):
root@server:/# ls -l /usr/share/doc/openvpn/examples/sample-config-files/ total 68
-rw-r--r-- 1 root root 3427 2011-07-04 15:09 client.conf -rw-r--r-- 1 root root 4141 2011-07-04 15:09 server.conf.gz
开始复制和拆包server.conf.gz到/etc/openvpn/server.conf中。
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/