openvpn在windowns环境下使用密码方式连接

服务器 1657℃ 评论

openvpn默认的配置文件使用的是静态证书方式登陆的,有时候可能觉得制作证书麻烦等原因,可以直接使用密码方式登陆,可以省略制作证书的的步骤哦

官方提供了一个checkpsw.sh文件,用于在linux环境下使用密码登陆。

sh脚本文件是linux专属的,在windown环境下是无法使用的,然后网上找到的一些checkpsw.exe文件都是需要C环境进行编译才可以使用,这样用起来就有点麻烦了。

在这里我在网上找到了一个checkpsw.bat的文件,可以轻松解决windowns环境下的密码登陆。

注:该代码为网络提供,至于是谁写的,就不得而知了。

服务端配置

checkpsw.bat

@echo off
::设置配置文件路径,日志文件路径,时间戳
SET PASSFILE=psw-file.txt
SET LOG_FILE=openvpn-password.log
SET TIME_STAMP=[%date% %time%]
SET CORRECT_PASSWORD=

::检测传入的参数个数
set cnt=0
:loop
if not "%1"=="" (set /a cnt+=1&shift /1&goto :loop)
echo [%date% %time%]参数个数%cnt%>>%LOG_FILE%


::传入的参数
::SET username=%1
::set password=%2
::写入测试
echo [%date% %time%]写入测试%username%%password%>>%LOG_FILE%


::判断文件是否存在
if not exist %PASSFILE% echo %TIME_STAMP% %PASSFILE%文件不存在>>%LOG_FILE% & exit 1
if exist %PASSFILE% echo %TIME_STAMP% %PASSFILE%密码文件已经找到>>%LOG_FILE%

::通过传入的参数,寻找对应的密码,密码存入CORRECT_PASSWORD变量,密码文件忽略#开头的行
for /f "eol=# tokens=1,2 delims= " %%i in (%PASSFILE%) do (
    if "%%i" == "%username%" (
        SET CORRECT_PASSWORD=%%j
    )
)

::如果没有读取到密码,直接退出
if "%CORRECT_PASSWORD%" == "" (
    ::用户名不存在
    echo [%date% %time%]用户名%username%不存在>>%LOG_FILE%
    exit 1
)
if not "%CORRECT_PASSWORD%" == "" (
    ::用户名存在,在文件中找到对应的密码
    echo [%date% %time%]已经找到对应的密码>>%LOG_FILE%
)

::判断密码是否匹配
if "%CORRECT_PASSWORD%" == "%password%" (
    ::密码匹配
    echo [%date% %time%]密码匹配>>%LOG_FILE%
    exit 0
)
if not "%CORRECT_PASSWORD%" == "%password%" (
    ::密码不匹配
    echo [%date% %time%]您的密码%password%与数据库不匹配>>%LOG_FILE%
    exit 1
)


然后新建一个psw-file.txt文件用于保存用户的用户名和密码

psw-file.txt

#psw-file.txt
#示例密码文件,查找时会忽略#开头的行
#每行的用户名和密码建议用空格分开
user2 pass2
aaauser1 bbbpass
cccuser2 dddpass2
user1 pass1


使用方法,将checkpsw.bat,psw-file.txt放在服务器目录下

然后修改server.ovpn

在原来证书认证的代码后面添加

script-security 3 system #这个参数是最新版才引入的,要设成2以上才能调用外部脚来进行身份认证
auth-user-pass-verify checkpsw.bat via-env #指定认证脚本
client-cert-not-required #不请求客户的CA证书,使用User/Pass验证,如果同时启用证书和密码认证,注释掉该行
username-as-common-name

服务器其端的就配置完了,下面是客户端的配置

客户端配置

在client.ovpn注释如下证书内容,注意客户端虽然不需要客户端证书了,但是仍然需要CA证书

;cert client.crt
;key client.key

 然后添加

auth-user-pass   ;使用用户密码方式认证

好了,这样就大功告成了!

转载请注明:七彩悠悠博客 | 心悠悠 情悠悠 » openvpn在windowns环境下使用密码方式连接

高效,专业,悠悠博客

联系我们