2013-03-19 97 views
0

我正在构建一个网站,我将需要用户使用名称,密码和证书进行登录。它应该工作的方式是在第一次登录时上传证书。之后,应该有一个设置有公钥ID(不是公钥)和名称和密码的cookie,以便将来不再需要上传证书。PHP:从证书获取公钥ID。

我遇到了这个问题,特别是获取公钥ID。我可以拿到钥匙,没问题,但我需要做的是获取公钥ID并将其保存为cookie,随后将其保存为DB和用户名和密码。

这是我提交表单代码:

<?php 
    $uploads_dir = '/home/path/to/certs/'; 
    $uploadfile = $uploads_dir . basename($_FILES['cert']['name']); 

    if (move_uploaded_file($_FILES['cert']['tmp_name'], $uploadfile)) { 
     $name = './'. $_FILES['cert']['name']; 
     $pub_key = openssl_pkey_get_public(file_get_contents($name)); 
     $keyData = openssl_pkey_get_details($pub_key); 
     echo $keyData['key']; 
    } else { 
     echo "Nope!\n"; 
    } 
?> 

回答

0

之后应该有一个cookie与公共密钥ID(不 公钥)和名和密码设置,使未来你没有 更需要上传证书。

实质上,您正在实现一个根本不提供任何安全性的认证系统。

无论你称之为“公钥ID”,本质上将是public。由于任何人都可以设置该cookie,因此您实际上并未对任何内容进行身份验证。

如果要使用证书中的公钥进行身份验证,请使用客户端证书身份验证。例如,您可以禁用PKI验证,然后手动验证证书中的公钥。