0

SSL証明書による認証システムの構築について質問があります。私の考えは、データベースにデータを保存し(その方法を知っています)、ユーザーが証明書をシステムに渡して証明書の値をチェックし、ユーザーをどこに置くかを知ることです。しかし、はっきりしないことがいくつかあります(私は愚かに聞こえるかもしれませんが、私を判断しないでください)

  1. PHPで証明書を作成するには?
  2. クライアントから特定の詳細を要求するようにシステムを作成する方法は?(StartSSL の場合と同様)
  3. プライベート証明書などに署名する必要がありますか?

PS: 私は HostGator ビジネス プランを使用しています。プライベートSSL証明書の発行を依頼しました。

4

2 に答える 2

1

私は StartSSL を使用したことはありませんが、新しい (ish) Facebook SDK のように、現在多くの個人や企業が SSL API と認証を使用しています。

多くのブラウザやその他のソフトウェアでは、有効なセキュリティ メカニズムとして自己署名証明書がサポートされていないことに注意してください。

PHP で SSL 証明書を作成することはできません。代わりに、OpenSSL などのツールを使用して作成する必要があります。Google で見つけた簡単なチュートリアルを次に示します: http://www.akadia.com/services/ssh_test_certificate.html

SSL は主に、回線を介したデータ転送をもう少し安全にするように設計されており、PHP を介して接続を読み取るときに、証明書を検証して、想定されているものと一致するかどうかを確認します (http://stackoverflow.com/questions /3081042/how-to-get-ssl-certificate-info-with-curl-in-php) は、ブラウザーがサイトの SSL 証明書をダウンロードし、それを使用して安全な接続を作成する方法とよく似ています。ユーザーごとに証明書があるとは思いません。

この後、すべてのデータは HTTP ではなく HTTPS 経由で送信され、SSL 認証が可能になります。

SSL 認証システムによっては、それが API の場合、cURL リクエストは HTTP ではなく HTTPS 経由で送信されます。

Web サイトのログイン ページ用にこれを作成する場合は、上で述べたよりもはるかに簡単です (理論的には、まだ多くのことを台無しにする可能性があります)。これを行う場合は、SSL 証明書をサーバーに追加し、それをサーバー構成に追加するだけです (Google からの Apache の別の簡単なチュートリアル: http://www.digicert.com/ssl-certificate-installation-apache .htm ) その後、ユーザーをログイン ページの https とログイン処理ページにリダイレクトするのと同じように文字通り続行します ( Apachevhostに forがあることを確認してください)。443

編集: Openssl には PHP API があることを覚えているので、間違っていました。

これは、SSL認証がダウンしているのを見る方法です。

于 2012-07-31T08:29:18.847 に答える
0

1) PHPでSSL証明書を新規作成する方法^

    $dn = array(
        "countryName" => 'Country',
        "organizationName" => 'Org',
        "commonName" => 'Common name',
        "emailAddress" => 'email@email.com',
    );

    $configArgs = array(
        'digest_alg' => 'SHA1',
    );

    $clientKey = openssl_pkey_new();
    $csr = openssl_csr_new($dn, $clientKey, $configArgs);

    $password = trim(base64_encode(openssl_random_pseudo_bytes(8)), '/=');

    $cert = openssl_csr_sign(
        $csr,
        'file:///etc/ssl/ca/ca.pem',
        'file:///etc/ssl/ca/ca.pem',
        1095,
        $configArgs,
        $serial
    );

    openssl_pkcs12_export($cert, $clientCertPkcs12, $clientKey, $password);
    openssl_x509_free($cert);
    $sslData = array(
        'serial' => $serial, // random serial
        'sslkey' => $password,
        'created_at' => time(),
        'sslpfx' => $clientCertPkcs12
    );

    openssl_pkey_free($clientKey);
于 2012-07-31T09:08:01.603 に答える