Я хочу, чтобы 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`
Я думаю, проблема в том, что мне даже не предлагается предоставить сертификат клиента. Как я могу включить это в обоих браузерах?
Другая информация: мой корневой и промежуточный центры сертификации хранятся на Apache. Они подписали мой сертификат сайта и мои клиентские сертификаты, которые также хранятся на Apache. Все эти сертификаты (корневой ЦС, промежуточный ЦС, сервер и клиент) были загружены в мой браузер.
Моя конфигурация 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>`
Я понял. В моих настройках Apache я изменил:
SSLCACertificatePath
к ~~~~~~/ca/certs/ca.cert.pem
SSLVerifyDepth 1
к SSLVerifyDepth 10
И самое главное, что я изменил, я преобразовал свои клиентские сертификаты с pem на pfx