背景: 企业员工管理后台已经实现ssl认证,为员工制作了个人安全证书,如何实现安全证书和登陆信息双重认证,保证个人只能用自己的安全证书登陆

实现过程:

ssl证书制作中包含了员工信息,比如zhangsan@tryingzone.com,在服务器验证ssl证书通过后,使用php全局变量$SERVER['SSLCLIENTSDN']可获取登陆证书的信息,然后从中匹配个人用户名zhangsan,匹配一致后再允许登陆即可

//证书认证,认证证书是不是由本人使用

$sslClientInfo = isset($_SERVER['SSL_CLIENT_S_DN'])?$_SERVER['SSL_CLIENT_S_DN']:'';

$pattern = '/emailAddress\=([a-z]+)@/is';

preg_match_all($pattern,$sslClientInfo ,$arr);

$sslName = isset($arr[1][0])?$arr[1][0]:'';