PHP:从证书中获取公钥ID。

时间:2013-03-19 08:55:34

标签: php ssl security ssl-certificate

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

我遇到了麻烦,特别是获取公钥ID。我可以抓住密钥,没问题,但我需要做的是获取公钥ID并将其保存为cookie,稍后再保存到数据库以及用户名和密码。

以下是我提交表单的代码:

<?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";
    }
 ?>

1 个答案:

答案 0 :(得分:0)

  

之后应该有一个使用公钥ID设置的cookie(不是   公钥)和名称和密码,以便将来你没有   更长时间需要上传证书。

基本上,您正在实施一个根本不提供安全性的身份验证系统。

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

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