Lighttpd双向认证-服务端获取用户证书信息

上一篇文章openssl+lighttpd双向认证中,我们实现了Lighttpd的双向认证,那么服务端如何获取用户标识呢?
先把Lighttpd的配置文件中关于ssl的部分贴出来:

$SERVER["socket"] == ":443" {
  ssl.engine = "enable"             
  ssl.pemfile = "/root/test/ca/server.pem"
#以下是配置双向认证的代码
  ssl.ca-file = "/root/test/ca/ca-cert.pem"       #用来认证的CA
  ssl.verifyclient.activate = "enable"       #开启客户端认证
  ssl.verifyclient.enforce="disable"          #是否强制客户端验证,可选enable/disable,需要根据业务进行自行判断设置
  ssl.verifyclient.exportcert ="enable"          #客户端证书导出到环境:SSL_CLIENT_CERT,不需要可以注释掉
  ssl.verifyclient.username = "SSL_CLIENT_S_DN_emailAddress" #从客户端证书中获取用户标识等信息,如SSL_CLIENT_S_DN_emailAddress为获取邮箱、SSL_CLIENT_S_DN_CN为用户标识等。
  ssl.verifyclient.depth = 1               #客户验证的证书深度,可默认为1

}

Lighttpd支持cgi、fastcgi,我们用cgi的方式简单介绍下:

  1. 在Lighttpd的server.document-root下面新建demo.c文件
#include <stdio.h>
#include <stdlib.h>

int main(void) {
  printf( "Content-type: text/plain\r\n\r\n ");
  printf("REMOTE_USER: %s\n",getenv("REMOTE_USER"));
  return 0;
}
  1. gcc编译
gcc hello.c -o hello.cgi
  1. 运行Lighttpd
  2. 浏览器访问生成的cgi(如https://ip/hello.cgi),选择完用户证书后,浏览器显示用户证书邮箱

在这里插入图片描述
这样,后端可以获取客户端证书标识,可以拿来跟登录用户进行信息比对等,实现登录用户必须跟证书匹配的功能。
另外,如果在使用cgi等报错,或者访问hello.cgi时,会弹出保存文件框来的话,基本是cgi环境未安装的事,可以自行搜索下,进行环境配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值