2008年2月13日星期三

Zt:Windows 下使用 CA 验证的 OpenVPN Server 的配置方法

Windows 下使用 CA 验证的 OpenVPN Server 的配置方法

 
 

应N多网友的要求,决定开始写Windows下OpenVPN的安装手册了,其实Windows下比linux简单,

因为使用网站提供的安装包,很容易就把OpenVPN安装上了,只需配置就OK了。

 
 

本文描述如何在Windows下使用CA的OpenVPN Server的配置方法。

 
 

有疑问大家关注:

http://elm.freetcp.com

http://wenzk.cublog.cn

 
 

不废话了,下面开始吧:)

 
 

下载安装OpenVPN:

 
 

用Flashget或者其它任何方式下载OpenVPN的安装包,然后安装,记得选上easy-rsa这部分脚本,

用于管理CA的bat脚本。

http://openvpn.se/files/install_packages/openvpn-2.0.5-gui-1.0.3-install.exe

 
 

安装完毕后,easy-rsa在C:\Program Files\OpenVPN\目录下。

 
 

下面开始配置:

把easy-rsa目录下的vars.bat.sample改名为vars.bat,并且修改其内容:

==================================

set KEY_COUNTRY=CN

set KEY_PROVINCE=Liaoning

set KEY_CITY=Shenyang

set KEY_ORG=OpenVPN

set KEY_EMAIL=elm@elm.freetcp.com

==================================

其它部分就不用修改了,上面部分修改成你自己的配置。

 
 

把easy-rsa下的openssl.cnf.sample改成openssl.cnf。

 
 

然后进入cmd.exe

=============================================

Microsoft Windows XP [版本 5.1.2600]

(C) 版权所有 1985-2001 Microsoft Corp.

 
 

C:\Documents and Settings\Administrator>cd "\Program Files\OpenVPN\easy-rsa"

 
 

C:\Program Files\OpenVPN\easy-rsa>vars

 
 

C:\Program Files\OpenVPN\easy-rsa>clean-all.bat

系统找不到指定的文件。

已复制         1 个文件。

已复制         1 个文件。

 
 

C:\Program Files\OpenVPN\easy-rsa>

 
 

生成Root CA

格式: build-ca.bat

输出: keys/ca.crt keys/ca.key

======================================================================

C:\Program Files\OpenVPN\easy-rsa>build-ca.bat

Using configuration from openssl.cnf

Generating a 1024 bit RSA private key

......++++++

.........++++++

writing new private key to 'keys\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) [CN]:

State or Province Name (full name) [Liaoning]:

Locality Name (eg, city) [Shenyang]:

Organization Name (eg, company) [OpenVPN]:

Organizational Unit Name (eg, section) []:OpenVPN ORG

Common Name (eg, your name or your server's hostname) []:OpenVPN RootCA

Email Address [[email]elm@elm.freetcp.com[/email]]:

 
 

C:\Program Files\OpenVPN\easy-rsa>

 
 

生成dh1024.pem文件,Server使用TLS必须使用的一个文件。

格式: build-dh.bat

输出: keys/dh1024.pem

============================================================================

C:\Program Files\OpenVPN\easy-rsa>build-dh.bat

warning, not much extra random data, consider using the -rand option

Generating DH parameters, 1024 bit long safe prime, generator 2

This is going to take a long time

.....................+...............+........+.................................

....................................+...........................+...............

........................................+.......................................

.........................................+...............+......................

................................................................................

.......................+..................................+.....................

..........................+.........................+...........+...............

.......+.........................+..............................................

........+....+..................................................................

................................................................................

...+....+.+...........................................+.........................

....................................................................+...........

.................+.....................................................+........

..............................................................+...+.............

.....+.........................+...........+....................................

................+......................+.....................................+..

....................................................................+.........+.

......+........................................................+................

...............................+..+.............................+...............

..............................................+.......................+.........

................................................................................

............................................................................+...

...................................+.............+..............................

.............................................................+.+........+.......

..............................................+.................................

...+............................................................................

............+..................................................+................

...........................+..........................................+........+

.........+.........+..........................................+................+

..+..........................................................................+..

.....+..+....................+.....................+............................

................................................................................

...........+.........+....+.........................+...........+.......+.+.....

.....................................................+................+.........

..........+.....................................................................

................+...............................................+..........+....

................................................................................

.................+.........................................+....................

..............................................................................+.

.......+.......................................................+..+.............

+................................+...+..........................+...............

..........................................................+..................+..

................................................................................

......................................................+.........................

....+.......................+.......................+...........................

..............+.................................................................

.......................................................+........................

..........................................................................+.....

......+..................................+......................................

...................................................+..................+.........

..............+.......................+.........................................

................................................................................

.....+....................+...........................+.........................

................................................................................

........................................................................++*++*++

*

 
 

C:\Program Files\OpenVPN\easy-rsa>

 
 

下面开始生成Server使用的证书了:

格式: build-key-server.bat <filename>

输出: keys/<filename>.crt <filename>.csr <filename>.key

================================================================================

C:\Program Files\OpenVPN\easy-rsa>build-key-server.bat server01

Using configuration from openssl.cnf

Generating a 1024 bit RSA private key

................++++++

.....++++++

writing new private key to 'keys\server01.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) [CN]:

State or Province Name (full name) [Liaoning]:

Locality Name (eg, city) [Shenyang]:

Organization Name (eg, company) [OpenVPN]:

Organizational Unit Name (eg, section) []:OpenVPN ORG

Common Name (eg, your name or your server's hostname) []:Server01

Email Address [[email]elm@elm.freetcp.com[/email]]:

 
 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Using configuration from openssl.cnf

Check that the request matches the signature

Signature ok

The Subjects Distinguished Name is as follows

countryName           :PRINTABLE:'CN'

stateOrProvinceName   :PRINTABLE:'Liaoning'

localityName          :PRINTABLE:'Shenyang'

organizationName      :PRINTABLE:'OpenVPN'

organizationalUnitName:PRINTABLE:'OpenVPN ORG'

commonName            :PRINTABLE:'Server01'

emailAddress          :IA5STRING:'[email]elm@elm.freetcp.com[/email]'

Certificate is to be certified until Feb  9 10:01:34 2016 GMT (3650 days)

Sign the certificate? [y/n]:y

 
 

 
 

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

 
 

C:\Program Files\OpenVPN\easy-rsa>

 
 

下面开始为client办法证书:

格式: build-key.bat <filename>

输出: keys/<filename>.crt keys/<filename>.csr keys/<filename>.key

===========================================================================

C:\Program Files\OpenVPN\easy-rsa>build-key.bat elm

Using configuration from openssl.cnf

Generating a 1024 bit RSA private key

.....................................................++++++

...................................................++++++

writing new private key to 'keys\elm.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) [CN]:

State or Province Name (full name) [Liaoning]:

Locality Name (eg, city) [Shenyang]:

Organization Name (eg, company) [OpenVPN]:

Organizational Unit Name (eg, section) []:OpenVPN ORG

Common Name (eg, your name or your server's hostname) []:ELM

Email Address [[email]elm@elm.freetcp.com[/email]]:

 
 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Using configuration from openssl.cnf

Check that the request matches the signature

Signature ok

The Subjects Distinguished Name is as follows

countryName           :PRINTABLE:'CN'

stateOrProvinceName   :PRINTABLE:'Liaoning'

localityName          :PRINTABLE:'Shenyang'

organizationName      :PRINTABLE:'OpenVPN'

organizationalUnitName:PRINTABLE:'OpenVPN ORG'

commonName            :PRINTABLE:'ELM'

emailAddress          :IA5STRING:'[email]elm@elm.freetcp.com[/email]'

Certificate is to be certified until Feb  9 10:05:53 2016 GMT (3650 days)

Sign the certificate? [y/n]:y

 
 

 
 

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

 
 

C:\Program Files\OpenVPN\easy-rsa>

 
 

下面生成ta.key文件

格式: openvpn --genkey --secret keys/ta.key

输出: keys/ta.key

=========================================================================

C:\Program Files\OpenVPN\easy-rsa>openvpn --genkey --secret keys/ta.key

 
 

C:\Program Files\OpenVPN\easy-rsa>

 
 

OK,那些keys就搞定了,下面开始写配置文件。

server01.ovpn内容:

----------------CUT Here-------------

port 1194

proto udp

dev tap

ca ca.crt

cert server01.crt

key server01.key # This file should be kept secret

;crl-verify vpncrl.pem

dh dh1024.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

client-to-client

;duplicate-cn

keepalive 10 120

tls-auth ta.key 0 # This file is secret

comp-lzo

;max-clients 100

user nobody

group nobody

persist-key

persist-tun

status openvpn-status.log

verb 3

--------------Cut Here-----------------

把配置文件放到C:\Program Files\OpenVPN\config\目录下。

把easy-rsa\keys\下的 ca.crt server01.crt server01.key ta.key dh1024.pem

复制到server01.ovpn所在目录。

 
 

Server的配置已经结束,可以启动Server了,在右下角OpenVPN-gui上点右键,然后选择connected。

需要服务器启动后自动运行,修改 "控制面板" 下面的 "管理工具" 下的 "服务" 把OpenVPN设置成自动启动。

 
 

Client的配置文件:

-------------Cut Here---------------------

client

dev tap

proto udp

 
 

remote 61.1.1.2 1194

;remote my-server-2 1194

 
 

;remote-random

 
 

resolv-retry infinite

nobind

user nobody

group nobody

route 192.168.0.0 255.255.252.0

persist-key

persist-tun

 
 

;http-proxy-retry # retry on connection failures

;http-proxy [proxy server] [proxy port #]

 
 

ca ca.crt

cert elm.crt

key elm.key

 
 

ns-cert-type server

tls-auth ta.key 1

comp-lzo

# Set log file verbosity.

verb 4

--------------Cut Here---------------------

并且把easy-rsa/keys下的ca.crt elm.crt elm.key ta.key一起放到Client的

<OPENVPN_HOME>\config目录下。

 
 

Client的配置已经结束,可以连接Server了,在右下角OpenVPN-gui上点右键,然后选择connected。

 
 

 
 

OK,整个配置就完成了。

 
 

需要为其它用户颁发证书,只需如下步骤:

进入cmd.exe

 
 

cd <OPENVPN_HOME>\easy-rsa

vars.bat

build-kye.bat <filename>

 
 

Client所需要的文件:

 
 

client.ovpn (需要修改部分配置)

ca.crt

<fielname>.crt

<filename>.key (<filename>为 文件名,如: elm 等)

ta.key

 
 

OK,日后有空看怎么配置使用User/Pass。

 
 

ELM 2006-02-11

  

 
 

几个注释:

1、如果需要多个client连接同一个vpn server,最好每个client使用单独的证书,为同一server生成多个client证书只要在生成server证书之后不断重复build-key.bat <filename> 即可,最后生成一个ta.key就行。如果嫌麻烦,只想让多个client使用同一个证书,则需要在server的.ovpn配置文件中uncomment duplicate-cn这一项。

2、server和client证书文件不能同名,否则生成时会报错。

3、在.ovpn配置文件中使用dev-node "网卡名称" 可以指定当前openvpn连接所使用的虚拟网卡,对于有多个openvpn链接的情况非常有用。

 
 

源文档 <http://www.chinaunix.net/jh/50/838904.html>

 
 

没有评论: