13 12
发新话题
打印

OpenVPN在Windows下使用User/Pass验证

本帖已经被作者加入个人空间

OpenVPN在Windows下使用User/Pass验证

OpenVPN在Windows下使用User/Pass验证

对于Windows下使用User/Pass验证已经是很久以前的承诺了,因为一开始一直都是在找寻
使用CMD(bat)文件检查用户名/密码的方式,但是一直没有结果,最后使用C写了一个小程
序实现用户名/密码验证。

转载请注明出处,如有疑问访问: http://wenzk.cublog.cn 反馈。

Windows安装OpenVPN是很容易的,OpenVPN GUI下载网址:
http://openvpn.se/files/install_ ... i-1.0.3-install.exe

记得选上easy-rsa这部分脚本,安装完毕后,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
Loading 'screen' into random state - done
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 [elm@elm.freetcp.com]:


生成dh1024.pem文件,Server使用TLS必须使用的一个文件。
格式: build-dh.bat
输出: keys/dh1024.pem
============================================================================
C:\Program Files\OpenVPN\easy-rsa>build-dh.bat
Loading 'screen' into random state - done
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
Loading 'screen' into random state - done
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 [elm@elm.freetcp.com]:

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
Loading 'screen' into random state - done
Check that the request matches the signature
Signature ok
The Subject's 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:'elm@elm.freetcp.com'
Certificate is to be certified until Jul  7 13:33:23 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 tcp
proto udp
; dev tap
dev tun
;dev-node MyTap
ca ca.crt
cert server01.crt
key server01.key  # This file should be kept secret
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
auth-user-pass-verify checkpsw.exe via-env
client-cert-not-required
username-as-common-name
;cipher BF-CBC        # Blowfish (default)
;cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
comp-lzo
;max-clients 100
user nobody
group nobody
persist-key
persist-tun
status status.log
;log         /var/log/openvpn.log
;log-append  /var/log/TCP_openvpn.log
verb 4
;mute 20
----------------CUT Here-------------
把配置文件放到C:\Program Files\OpenVPN\config\目录下。
把easy-rsa\keys\下的 ca.crt server01.crt server01.key ta.key dh1024.pem
复制到server01.ovpn所在目录。

同时下载本人写的破烂验证程序(checkpsw.exe)[不要仍砖块]放到OpenVPN配置目录下
程序在Windows XP SP2下测试通过,其他系统如果有问题,可以用源文件进行编译
程序在压缩包里面:

在checkpsw.exe目录下建立password.txt[用于存放用户名&密码]文件:
password.txt文件格式:
用户名           密码            是否活动(0/1) 中间用空格隔开
Username     Password    Active
-------------Cut Here---------------------
wzk         wzk         1
-------------Cut Here---------------------



Server的配置已经结束,可以启动Server了,在右下角OpenVPN-gui上点右键,然后选择connected。
需要服务器启动后自动运行,修改 "控制面板" 下面的 "管理工具" 下的 "服务" 把OpenVPN设置成自动启动。

Client的配置文件:
client.ovpn
-------------Cut Here---------------------
client
dev tun
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
auth-user-pass

ns-cert-type server
tls-auth ta.key 1
comp-lzo
# Set log file verbosity.
verb 4
--------------Cut Here---------------------
并且把easy-rsa/keys下的ca.crt ta.key一起放到Client的
<OPENVPN_HOME>\config目录下。

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


OK,整个配置就完成了。

附件

checkpsw.rar (9.84 KB)

2006/8/2 19:05, 下载次数: 165

TOP

太好了顶.

ELM 想请教一个问题.

max-routes-per-client 1024

这一句是什么意思?

TOP

引用:
--max-routes-per-client n
    Allow a maximum of n internal routes per client (default=256). This is designed to help contain DoS attacks where an authenticated client floods the server with packets appearing to come from many unique MAC addresses, forcing the server to deplete virtual memory as its internal routing table expands. This directive can be used in a --client-config-dir file or auto-generated by a --client-connect script to override the global value for a particular client.

    Note that this directive affects OpenVPN's internal routing table, not the kernel routing table.
我没有用过这个个功能
从上面话来理解,应该是一个Clinet连接上来后,允许出现的最大MAC地址数,也就是最多的主机数。
不知道我理解的是否有偏差

TOP

哦,那跟最大连接数差不多吧.呵呵

ELM ,还想请教你一个问题, OpenVPN 本身可以实现对客户端的流量进行控制吗?如客户端IP为:192.168.0.18 我要控制它的最大下载速度为20KB/s ,而 192.168.0.22 我希望可以控制它最大下载速度为50KB/s .或者可不可以让每一个客户端的最大下载速度不超过30KB/s 有这个功能吗?谢谢!

[ 本帖最后由 fs_ken 于  02:43 编辑 ]

TOP

引用:
原帖由 fs_ken 于  02:41 发表
哦,那跟最大连接数差不多吧.呵呵

ELM ,还想请教你一个问题, OpenVPN 本身可以实现对客户端的流量进行控制吗?如客户端IP为:192.168.0.18 我要控制它的最大下载速度为20KB/s ,而 192.168.0.22 我希望可以控制 ...
和最大连接数还是有差别的,这是一个客户上来的最多主机数目(个人觉得是使用TAP的时候。)

对于流量控制,可以用wingate等软件吧。

TOP

zhujishezhidegaibian

主机上设置了拦截,比如上qq不了怎么办,如何绕过

TOP

VPN出去就不受拦截了

TOP

ELM 大哥你好.很久没来你的论坛了.我现在有一个问题想请教你.

2006年10月25日 01:54:28 VERIFY ERROR: depth=0, error=unable to get local issuer certificate: /C=CN/ST=GD/O=HX/OU=cmwap/CN=HXServer/emailAddress=hx.ken@163.com
2006年10月25日 01:54:28 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
2006年10月25日 01:54:28 TLS Error: TLS object -> incoming plaintext read error
2006年10月25日 01:54:28 TLS Error: TLS handshake failed
2006年10月25日 01:54:28 Fatal TLS error (check_tls_errors_co), restarting
2006年10月25日 01:54:28 TCP/UDP: Closing socket
2006年10月25日 01:54:28 SIGUSR1[soft,tls-error] received, process restarting
2006年10月25日 01:54:28 Restart pause, 5 second(s)

这个VPN错误是什么意思呢?但是别人的服务器又可以.我的服务器连就错误.不过他的OpenVPN是改过的,他的客户端配置如下:
client
dev tun
proto tcp-client
remote 202.131.33.41 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert sss.crt
key sss.key
ns-cert-type server
comp-lzo
verb 3

他这个能正常.我的客户端跟他一样,只是IP不能.但是就是连不上.

还有就是ELM你的论坛网速好慢,你在哪申请的.如果你不介意,我可以免费

提供电信100M的服务器给你.空间可以给你300M.用来感谢你,从你的博客里学到很多东西!

TOP

引用:
原帖由 fs_ken 于  02:18 发表
ELM 大哥你好.很久没来你的论坛了.我现在有一个问题想请教你.

2006年10月25日 01:54:28 VERIFY ERROR: depth=0, error=unable to get local issuer certificate: /C=CN/ST=GD/O=HX/OU=cmwap/CN=HXServer/ema ...
你的server使用的CA cert keys和你client的 cert keys是否同一个CA签发的,这个很关键。

首先感谢您的热心,我的机器是用1M的ADSL接入沈阳网通的,为了让自己有更大的控制权,测试一些东西,所以自己弄的机器。

由于我很少用购买的空间,很多东西在空间下面放,我不知道如何处理,我一般都是用root登陆上去搞定的,呵呵:)
还有我的机器是Linux或者Unix的,所以是要求太高了,影响了你那边的一些业务。

以后有需求一定少不了麻烦您的,呵呵:)

谢谢

TOP

ELM 你好,关于 OpenVPN 的问题.

ELM 大哥你好,我的客户是用 User/Pass 在Windwos 2003 下做的,客户能连上,但是不有CA那么快,它会反复出现:

Wed Dec 13 20:49:18 2006 TEST ROUTES: 0/0 succeeded len=1 ret=0 a=0 u/d=down
Wed Dec 13 20:49:18 2006 Route: Waiting for TUN/TAP interface to come up...
Wed Dec 13 20:49:19 2006 TEST ROUTES: 0/0 succeeded len=1 ret=0 a=0 u/d=down
Wed Dec 13 20:49:19 2006 Route: Waiting for TUN/TAP interface to come up...
Wed Dec 13 20:49:20 2006 TEST ROUTES: 0/0 succeeded len=1 ret=0 a=0 u/d=down
Wed Dec 13 20:49:20 2006 Route: Waiting for TUN/TAP interface to come up...
Wed Dec 13 20:49:21 2006 TEST ROUTES: 0/0 succeeded len=1 ret=0 a=0 u/d=down
Wed Dec 13 20:49:21 2006 Route: Waiting for TUN/TAP interface to come up...
Wed Dec 13 20:49:22 2006 TEST ROUTES: 0/0 succeeded len=1 ret=0 a=0 u/d=down
Wed Dec 13 20:49:22 2006 Route: Waiting for TUN/TAP interface to come up...
Wed Dec 13 20:49:24 2006 TEST ROUTES: 0/0 succeeded len=1 ret=0 a=0 u/d=down
Wed Dec 13 20:49:24 2006 Route: Waiting for TUN/TAP interface to come up...
Wed Dec 13 20:49:25 2006 TEST ROUTES: 0/0 succeeded len=1 ret=0 a=0 u/d=down
Wed Dec 13 20:49:25 2006 Route: Waiting for TUN/TAP interface to come up...
Wed Dec 13 20:49:26 2006 TEST ROUTES: 0/0 succeeded len=1 ret=0 a=0 u/d=down
Wed Dec 13 20:49:26 2006 Route: Waiting for TUN/TAP interface to come up...
Wed Dec 13 20:49:27 2006 TEST ROUTES: 0/0 succeeded len=1 ret=0 a=0 u/d=down
Wed Dec 13 20:49:27 2006 Route: Waiting for TUN/TAP interface to come up...
Wed Dec 13 20:49:28 2006 TEST ROUTES: 2/2 succeeded len=1 ret=1 a=0 u/d=up

这是什么意思呢?就是这里要用很久的时间.客户端的配置如下:

client
dev tun
proto tcp
remote 59.11.39.34 443
auth-user-pass mypass.txt
resolv-retry infinite
nobind
mute-replay-warnings
keepalive 10 120
persist-key
persist-tun
ca hxca.crt
tls-auth hxta.key 1
comp-lzo
verb 3

服务器的配置如下:

port 443
proto tcp
dev tun
ca ca.crt
cert HXServer.crt
key HXServer.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
mode server #这两名是不是可以不用?
tls-server  #这两名是不是可以不用?
push "redirect-gateway def1"
push "dhcp-option DNS 202.96.128.86"
push "dhcp-option DNS 202.96.128.166"
ifconfig-pool-persist UserIP.txt
client-to-client
keepalive 10 120
tls-auth ta.key 0
auth-user-pass-verify up.exe via-env
client-cert-not-required
username-as-common-name
comp-lzo
max-clients 500
user nobody
group nobody
persist-key
persist-tun
status Online.txt
verb 3
mute 2

请问是什么原因呢?

TOP

 13 12
发新话题