背景: 企业员工管理后台已经实现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]:'';