2013-03-19 170 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驗證,然後手動驗證證書中的公鑰。

相關問題