PHPはSSLクライアント証明書情報を取得する
1856 ワード
プロジェクトはクライアントの証明書情報を取得する必要があります.httpsはすべてパスして、証明書とkeyだけがウェブサイトにログインすることができますが、それをするには、対応する証明書は対応するアカウントにログインするしかありません.これは自分のkeyがあって、対応するアカウントのパスワードを知ってから上陸することができます.
前にもやったことがないので、いろいろ調べましたが、phpのケースはほとんど見つからず、最後に大神の文章を探しました.https://cweiske.de/tagebuch/ssl-client-certificates.htm
次に、どのように実現したのかを説明します.
まずSSLサーバ、httpsなどが配置されているので、ここでは詳しくは述べませんが、文章はたくさんあります.
SSLベースのvirtual host構成はこうです
そして、サーバがクライアントの証明書情報SSLを取得できるようにする.confは次のように構成します.
SSLterifyClientの後に2つのパラメータoptionalとrequireを選択することができます.optionalは証明書の検証なしにログインすることができますが、requireは必ず証明書にログインする必要があります.自分で選ぶ.
SSLterifyDepthは検証の深さで、1を記入すれば十分です
SSLOptions+StdEnvVarsこれが最も重要で、これはweb側でクライアントの情報を取得することができます.
テストページに次のコードを記述します.
証明書には、次のような情報がすべて出力されます.
SSL_SERVER_S_DN_C]=>国[SSL_SERVER_S_DN_ST]=>省[SSL_SERVER_S_DN_L]=>都市等の情報
[SSL_CLIENT_S_DN_Email] => ****@*****.com証明書生成メールボックス
[SSL_CLIENT_S_DN_G]=>****証明書所有者
では、証明書対応アカウントの登録が実現し、そこからデータを選択してデータベースを保存し、ユーザーが登録したときに再確認します.
ps:詳しくは書いていませんが、何か間違いがあったら大神さんに指摘してください.
前にもやったことがないので、いろいろ調べましたが、phpのケースはほとんど見つからず、最後に大神の文章を探しました.https://cweiske.de/tagebuch/ssl-client-certificates.htm
次に、どのように実現したのかを説明します.
まずSSLサーバ、httpsなどが配置されているので、ここでは詳しくは述べませんが、文章はたくさんあります.
SSLベースのvirtual host構成はこうです
ServerName bookmarks.cweiske.de
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog /var/log/apache2/access_log vcommon
VirtualDocumentRoot /home/cweiske/Dev/html/hosts/bookmarks.cweiske.de
AllowOverride all
SSLEngine On
SSLCertificateFile /etc/ssl/private/bookmarks.cweiske.de-cacert.pem
SSLCertificateKeyFile /etc/ssl/private/bookmarks.cweiske.de.key
SSLCACertificateFile /etc/ssl/private/cacert-1and3.crt
そして、サーバがクライアントの証明書情報SSLを取得できるようにする.confは次のように構成します.
...
SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +StdEnvVars
SSLterifyClientの後に2つのパラメータoptionalとrequireを選択することができます.optionalは証明書の検証なしにログインすることができますが、requireは必ず証明書にログインする必要があります.自分で選ぶ.
SSLterifyDepthは検証の深さで、1を記入すれば十分です
SSLOptions+StdEnvVarsこれが最も重要で、これはweb側でクライアントの情報を取得することができます.
テストページに次のコードを記述します.
証明書には、次のような情報がすべて出力されます.
SSL_SERVER_S_DN_C]=>国[SSL_SERVER_S_DN_ST]=>省[SSL_SERVER_S_DN_L]=>都市等の情報
[SSL_CLIENT_S_DN_Email] => ****@*****.com証明書生成メールボックス
[SSL_CLIENT_S_DN_G]=>****証明書所有者
では、証明書対応アカウントの登録が実現し、そこからデータを選択してデータベースを保存し、ユーザーが登録したときに再確認します.
ps:詳しくは書いていませんが、何か間違いがあったら大神さんに指摘してください.