配置OpenVpn使用证书和用户名密码双验证
修改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使用证书和用户名密码双验证的更多相关文章
- C# 用SoapUI调试WCF服务接口(WCF中包含用户名密码的验证)
问题描述: 一般调试wcf程序可以直接建一个单元测试,直接调接口. 但是,这次,我还要测试在接口内的代码中看接收到的用户名密码是否正确,所以,单一的直接调用接口方法行不通, 然后就想办法通过soapU ...
- Java连接MySQL数据库实现用户名密码的验证方法 Java语句中sql查询语句'' ""作用
//方法一,可以验证登录,但方法不实用.package com.swift; import java.sql.Connection; import java.sql.DriverManager; im ...
- OpenVPN使用用户名/密码验证方式
OpenVPN推荐使用证书进行认证,安全性很高,但是配置起来很麻烦.还好它也能像pptp等vpn一样使用用户名/密码进行认证. 不管何种认证方式,服务端的ca.crt, server.crt, ser ...
- centos7 完整配置openvpn详情教程
1. 什么是OpenVpn OpenVPN 是一个用于创建虚拟专用网络加密通道的软件包,最早是由James Yonan编写的.OpenVPN允许创建的VPN使用公开密钥.电子证书.或者用户名/密码来进 ...
- WCF服务安全控制之netTcpBinding的用户名密码验证【转】
选择netTcpBinding WCF的绑定方式比较多,常用的大体有四种: wsHttpBinding basicHttpBinding netTcpBinding wsDualHttpBinding ...
- WebService 用户名密码验证
原文:WebService 用户名密码验证 在项目开发的过程中,WebService是经常要用的,当调用WebService方法时,需要经过服务的验证才可以调用,一般就是用户名/密码验证,还有一个就是 ...
- 【7】.net WebAPI Owin OAuth 2.0 密码模式验证实例
1.OAuth密码模式 2.在VS中创建WebAPI项目 在nuget中安装: Microsoft.AspNet.WebApi.Owin Microsoft.Owin.Host.SystemWeb 这 ...
- 【WCF安全】WCF 自定义授权[用户名+密码+x509证书]
1.x509证书制作(略) 2.直接贴代码 ----------------------------------------------------------------------服务端----- ...
- WAMPserver配置(允许外部访问、phpmyadmin设置为输入用户名密码才可登录等)
对于很多不熟悉PHP环境安装的朋友来说,用集成环境可以更快的上手,更方便的搭建PHP的运行环境,但是,WAMP的集成环境仅仅是将底层基础工作做好 了,有些个别关键的配置操作并没有集成到环境安装中,所以 ...
随机推荐
- JVM内存计算问题
-Xmx10240m:代表最大堆 -Xms10240m:代表最小堆 -Xmn5120m:代表新生代 -XXSurvivorRatio=3:代表Eden:Survivor = 3 根据Gen ...
- less.js
在引入你自己的less文件的时候 <link rel="stylesheet/less" href="styles/site.less"> 之后再引 ...
- 51NOD 1013(3的幂的和)
题目链接:传送门 题目大意:求(3^0+3^1+3^2+3^3+...+3^n)%1e9的值 题目思路:乘法逆元裸题 #include <iostream> #include <cs ...
- label 两次点击 事件冒泡 使用时间戳的解决方案
情况描述:在页面中input 和 label 通过for banding 然后点击input 或者label的时候都要执行一个方法 但是在点击label的时候有两次执行两次的情况,及监听到的cli ...
- 【BZOJ4384】[POI2015]Trzy wieże 树状数组
[BZOJ4384][POI2015]Trzy wieże Description 给定一个长度为n的仅包含'B'.'C'.'S'三种字符的字符串,请找到最长的一段连续子串,使得这一段要么只有一种字符 ...
- CodeForces 157A Game Outcome
A. Game Outcome time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- sql---如何把sql查询出来的结果当做另一个sql的条件查询,1、语句2、with as
'; -- table2 的 name 作为 table1的条件 select * from table1 where name in (select name from table2) --如果有多 ...
- mysql crete view
CREATE VIEW user_algo_view ASselect `u`.`userId` AS `UserId`,`u`.`userCode` AS `UserCode`,group_conc ...
- Jconsole监控tomcat 的JVM内存的设置
主要参考这位仁兄的文章 http://elf8848.iteye.com/blog/471676 照做后发现还是不行,原来是Linux服务器配置了多块网卡,在设置 Djava.rmi.server. ...
- centos6.5关闭防火墙命令
1.永久性生效,重启后不会复原 开启: chkconfig iptables on 关闭: chkconfig iptables off 2.即时生效,重启后复原 开启: service iptabl ...