0

ユーザーが名前、パスワード、および証明書でログインする必要があるサイトを構築しています。これが機能する方法は、初回ログイン時に証明書をアップロードすることです。その後、証明書をアップロードする必要がなくなるように、公開鍵 ID (公開鍵ではない) と名前とパスワードが設定された Cookie が存在するはずです。

特に公開鍵 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";
    }
 ?>
4

1 に答える 1

0

その後、証明書をアップロードする必要がなくなるように、公開鍵 ID (公開鍵ではない) と名前とパスワードが設定された Cookie が存在するはずです。

基本的に、セキュリティをまったく提供しない認証システムを実装しています。

「公開鍵 ID」と呼ばれるものは、本来publicになります。誰でもその Cookie を設定できるため、実際には何も認証していません。

証明書の公開鍵を使用して認証する場合は、クライアント証明書認証を使用します。たとえば、PKI 検証を無効にして、証明書の公開鍵を手動で検証することもできます。

于 2013-03-19T12:21:14.223 に答える