web-dev-qa-db-ja.com

クライアント証明書(Apacheの証明書)を要求するブラウザーを取得できません

ユーザーにWebサイトへのアクセスを許可する前に、Apacheにクライアントの認証を確認してもらいたい。

Chrome私のエラーは:

192.168.2.57 didn’t accept your login certificate, or one may not have been provided.
Try contacting the system admin.
ERR_BAD_SSL_CLIENT_AUTH_CERT`

Firefoxでの私のエラーは次のとおりです。

An error occurred during a connection to 192.168.2.57. SSL peer was unable to negotiate an acceptable set of security parameters. 
Error code: SSL_ERROR_HANDSHAKE_FAILURE_ALERT`

問題は、クライアント証明書の提供を求められないことだと思います。どうすれば両方のブラウザでそれを有効にできますか?

その他の情報:ルートCAと中間CAはApacheに保存されています。彼らは私のサイト証明書とクライアント証明書に署名しました。これらもApacheに保存されています。これらの証明書(ルートCA、中間CA、サーバー、およびクライアント)はすべてブラウザーに読み込まれています。

私のApache構成:

<IfModule mod_ssl.c>
<VirtualHost 192.168.2.57:443>

    ServerName 192.168.2.57:443
    DocumentRoot /var/www
    ErrorLog ${Apache_LOG_DIR}/error.log
    CustomLog ${Apache_LOG_DIR}/access.log combined


    SSLEngine On
    SSLCertificateFile "/etc/Apache2/ssl/ca/intermediate/certs/AlexSite.cert.pem"
    SSLCertificateKeyFile "/etc/Apache2/ssl/ca/intermediate/private/AlexSite.key.pem"
    SSLProtocol TLSv1 TLSv1.1

    SSLCACertificateFile "/etc/Apache2/ssl/ca/intermediate/certs/intermediate.cert.pem"


    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            DirectoryIndex /cgi-bin/index.html

            AllowOverride None
            Order allow,deny
            Allow from all

            AddHandler mod_python .py
            PythonHandler mod_python.publisher
            PythonDebug On

            SSLVerifyClient require
            SSLVerifyDepth 1

    </Directory>

    Alias "/mysql-files/" "/var/lib/mysql-files/"
    <Directory "/var/lib/mysql-files/">
            Require all granted
            Options +Indexes
    </Directory>

    ScriptAlias /cgi-bin/ /var/www/cgi-bin/
    <Directory /var/www/cgi-bin>
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
            AddHandler cgi-script .cgi .py
    </Directory>

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
            SSLOptions +StdEnvVars
    </Directory>

    BrowserMatch "MSIE [2-6]" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>
</IfModule>`
1
alexs973

私はそれを考え出した。 Apacheの設定で、次のように変更しました。

SSLCACertificatePathから~~~~~~/ca/certs/ca.cert.pem

SSLVerifyDepth 1からSSLVerifyDepth 10

そして、私が変更した最も重要なことは、クライアント証明書をpemからpfxに変換したことです。

2
alexs973