修改OpenVpn的主配置文件

添加一下内容:

[root@check1 openvpn]# tail -3 server.conf
auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env
username-as-common-name
script-security 3   #允许用户自定义的脚本在VPN中使用

如果加上client-cert-not-required则代表只使用用户名密码方式验证登录,如果不加,则代表需要证书和用户名密码双重验证登录!

根据上面路径创建文件

创建验证用户登录脚本

需要根据情况修改的是PASSFILE和LOG_FILE两个变量

vim checkpsw.sh

#!/bin/bash
###########################################################
# checkpsw.sh (C) 2004 Mathias Sundman <mathias@openvpn.se>
#
# This script will authenticate OpenVpn users against
# a plain text file. The passfile should simply contain
# one row per user with the username first followed by
# one or more space(s) or tab(s) and then the password.

PASSFILE="/etc/openvpn/psw-file"
LOG_FILE="/etc/openvpn/openvpn-password.log"
TIME_STAMP=`date "+%Y-%m-%d %T"`

###########################################################

if [ ! -r "${PASSFILE}" ]; then
echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
exit 1
fi

CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`

if [ "${CORRECT_PASSWORD}" = "" ]; then
echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1
fi

if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
exit 0
fi

echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1

创建用户名和密码存放文件 第一列为用户名 第二列为密码

[root@check1 openvpn]# cat psw-file
wang 123123
Andy 123321

[root@check1 openvpn]# chown nobody:nobody psw-file
[root@check1 openvpn]# chmod 0444 psw-file

创建日志文件

[root@check1 openvpn]# touch /etc/openvpn/openvpn-password.log
[root@check1 openvpn]# chmod 0222 openvpn-password.log

重启server端

[root@check1 openvpn]# /etc/init.d/openvpn restart
Shutting down openvpn:            [ OK ]
Starting openvpn:                 [ OK ]

客户端配置

客户端精简一下配置文件目录

将.ca、.crt、.key三个文件合并到主配置文件中

将主配置文件中的下面三行删除

ca ca.crt
cert wang.crt
key wang.key

在配置文件中添加<ca> </ca>,<cert> </cert>,<key> </key>等标签

将.ca里的内容复制到<ca> </ca>中

将.crt、.key都复制到相应的标签中

最后在配置文件中添加

auth-user-pass

启动客户端进行连接

登录成功,查看日志

[root@check1 openvpn]# cat /etc/openvpn/openvpn-password.log
2018-10-16 16:51:32: Successful authentication: username="wang".

解决客户端登录时提示:

WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this

解决办法在客户端配置文件中添加

auth-nocache

配置OpenVpn使用证书和用户名密码双验证的更多相关文章

  1. C# 用SoapUI调试WCF服务接口(WCF中包含用户名密码的验证)

    问题描述: 一般调试wcf程序可以直接建一个单元测试,直接调接口. 但是,这次,我还要测试在接口内的代码中看接收到的用户名密码是否正确,所以,单一的直接调用接口方法行不通, 然后就想办法通过soapU ...

  2. Java连接MySQL数据库实现用户名密码的验证方法 Java语句中sql查询语句'' ""作用

    //方法一,可以验证登录,但方法不实用.package com.swift; import java.sql.Connection; import java.sql.DriverManager; im ...

  3. OpenVPN使用用户名/密码验证方式

    OpenVPN推荐使用证书进行认证,安全性很高,但是配置起来很麻烦.还好它也能像pptp等vpn一样使用用户名/密码进行认证. 不管何种认证方式,服务端的ca.crt, server.crt, ser ...

  4. centos7 完整配置openvpn详情教程

    1. 什么是OpenVpn OpenVPN 是一个用于创建虚拟专用网络加密通道的软件包,最早是由James Yonan编写的.OpenVPN允许创建的VPN使用公开密钥.电子证书.或者用户名/密码来进 ...

  5. WCF服务安全控制之netTcpBinding的用户名密码验证【转】

    选择netTcpBinding WCF的绑定方式比较多,常用的大体有四种: wsHttpBinding basicHttpBinding netTcpBinding wsDualHttpBinding ...

  6. WebService 用户名密码验证

    原文:WebService 用户名密码验证 在项目开发的过程中,WebService是经常要用的,当调用WebService方法时,需要经过服务的验证才可以调用,一般就是用户名/密码验证,还有一个就是 ...

  7. 【7】.net WebAPI Owin OAuth 2.0 密码模式验证实例

    1.OAuth密码模式 2.在VS中创建WebAPI项目 在nuget中安装: Microsoft.AspNet.WebApi.Owin Microsoft.Owin.Host.SystemWeb 这 ...

  8. 【WCF安全】WCF 自定义授权[用户名+密码+x509证书]

    1.x509证书制作(略) 2.直接贴代码 ----------------------------------------------------------------------服务端----- ...

  9. WAMPserver配置(允许外部访问、phpmyadmin设置为输入用户名密码才可登录等)

    对于很多不熟悉PHP环境安装的朋友来说,用集成环境可以更快的上手,更方便的搭建PHP的运行环境,但是,WAMP的集成环境仅仅是将底层基础工作做好 了,有些个别关键的配置操作并没有集成到环境安装中,所以 ...

随机推荐

  1. python中函数参数*args和**kw的区别

    1.函数与参数(实参) 在python中创建函数是def,创建函数名是def f(),f函数名字,def f(a,b),这里的a,b是两个参数,函数名是自定义的,参数也是自定义,随意就好.看图如下效果 ...

  2. AVA 8 :从永久区(PermGen)到元空间(Metaspace)

    你注意到了吗?JDK 8早期可访问版本已经提供下载了,java 开发人员可以使用java 8 提供的新的语言和运行特性来做一些实验.其中一个特性就是完全的移除永久代(Permanent Generat ...

  3. 无法打开输入文件“optimized.lib” 编译osgEarth2.8+VS2013+CMake3.4.0在Release版本的问题

    1>LINK : fatal error LNK1181: 无法打开输入文件“optimized.lib” 可以到http://forum.osgearth.org搜索相关帖子,gwaldron ...

  4. Adapter适配器 final int Id 导致选中的Item不在当前界面

    写了上面这么一个横向混动,点击切换到,哪个的Item上就会有一个  常用  的小图标.但是我每次滑动切换到后面   成龙9这个Item,这个 常用的图片,也在 这个上面了,但是他一更新,就变成 等你再 ...

  5. eslint Rules

    Rules 为了让你对规则有个更好的理解,ESLint 对其进行了分门别类. 所有的规则默认都是禁用的.在配置文件中,使用 "extends": "eslint:reco ...

  6. Fluent Ribbon 第六步 StartScreen

    上一节,介绍了Toolbar的主要功能,说明了ToolBar的一些最基本用法,这一节,介绍Ribbon的一个重要功能startScreen, startScreen软件第一次启动,呈现的界面. 由于R ...

  7. sql语句(mysql中json_contains、json_array的使用)

    https://blog.csdn.net/qq_35952946/article/details/79131488 https://www.jianshu.com/p/455d3d4922e1 1. ...

  8. 第05章—Swagger2打造在线接口文档

    spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址:https://gitee.com/jinxia ...

  9. Spring Data 关于Repository的介绍(四)

    Repository类的定义: public interface Repository<T, ID extends Serializable> { } 1)Repository是一个空接口 ...

  10. windows7上使用docker容器

    1.安装 下载DockerToolbox,并安装. 下载地址:https://dn-dao-github-irror.daocloud.io/docker/toolbox/releases/downl ...