Open××× 秘钥+用户名密码双重验证登录

为什么需要用户名密码验证登录

我们已经使用了CA证书、迪菲赫尔曼交换密钥、TLS-auth密钥这几种方式进行加密了,

可以说已经很安全了,为什么还要需要用户名秘密呢,一个×××而已,搞得这么安全有什么用呢。

首先安全还是很重要的,其次就是管理这些秘钥和证书还是比较麻烦的,因为用户量比较多。

我不可能为每个用户都创建一套加密吧,每个用户创建一个秘钥比较麻烦,

多人使用一个秘钥又不具有唯一性,比如说有用户不在需要×××的时候,我们就只能吊销证书。

但是如果多人使用一个秘钥的情况下,吊销证书了,其他的用户也登录不了。

所以我们就需要秘钥加用户名密码,这样就可以多个用户使用同一个证书,使用不同的用户名和密码。

新用户加入的时候,只需要创建一个用户名和密码,如果有人不需要×××的时候,直接删除用户名和密码就可以。

1.搭建OPen×××

http://xmomo.blog.51cto.com/5994484/1953077

2. 配置open***使用  秘钥+用户名密码 验证登录

1).修改Server端配置文件,添加以下三行代码。

auth-user-pass-verify /etc/open***/checkpsw.sh via-env

username-as-common-name

script-security 3

注:如果加上client-cert-not-required则代表只使用用户名密码方式验证登录,

    如果不加,则代表需要证书和用户名密码双重验证登录!

wKiom1mf-0Og1y_lAAD61XRI6TU230.jpg-wh_50


2).checkpsw.sh下载地址:http://open***.se/files/other/checkpsw.sh

wget  http://open***.se/files/other/checkpsw.sh  -P /etc/open***/

或者创建checkpsw.sh文件,直接复制粘贴以下代码也可以。

PASSFILELOG_FILE是密码文件和日志文件的路径,这里我们默认就好,不用修改。

#!/bin/sh
###########################################################
# checkpsw.sh (C) 2004 Mathias Sundman <mathias@open***.se>
#
# This script will authenticate Open××× 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/open***/psw-file"
LOG_FILE="/var/log/open***-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



添加执行权限

chmod +x /etc/open***/checkpsw.sh


3). 创建用户和密码认证文件

vim /etc/open***/psw-file

admin 123456 (前面是用户 后面是密码)

 

注:这里 psw-file的权限

chmod 400 /etc/open***/psw-file

chown nobody.nobody /etc/open***/psw-file

 

4). 修改客户端配置文件:client.o***

再添加这一行,就会提示输入用户名和密码

auth-user-pass


wKiom1mf-bSyZqwMAAAsYUOoiK0968.jpg-wh_50

 

 5).重启Open×××服务,测试客户端登录。


wKiom1mf-jfCn_QGAACOJl8qKo4097.jpg-wh_50


输入用户名密码就可以登录啦