Я унаследовал систему под управлением Apache 2.4, которая требует от пользователей предоставления клиентских сертификатов. Некоторым пользователям не передается их клиентский сертификат, и поэтому им отказывают в доступе.
ssl.conf выглядит следующим образом:
Listen 443 https
SSLPassPhraseDialog exec:/usr/<pasphraseexecfile>
SSLSessionCache shmbc:/run/<pathtocache>
SSLSessionCacheTimeout 300
SSLCryptoDevice builtin
SSLCryptoDevice rdrand
SSLCryptoDevice dynamic
SSLStaplingCache shmbc:/var/run/<pathtocache>
<VirtualHost _default_:443>
DocumentRoot "/var/www/html/myproject"
ServerName "www.myproject.com:443"
SSLEngine on
ErrorLog /logs/ssl_error_log
TransfrerLog /logs/ssl_access_log
LogLevel warn
SSLProtocol -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2
SSLUseStapling on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLCompression off
Header add Strict-Transport-Security "max-age=15768000"
SSLCertificateFile <pathtocert>
SSLCertificateKeyFile <pathtokey>
SSLCertificateChainFile <pathtochainfile>
SSLCACertificateFile <pathtocacertfile>
SSLVerifyClient optional
SSLVerifyDepth 2
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/html/myproject">
SSLOptions +StdEnvVars +ExportCertData
</Directory>
CustomLog logs/ssl_request_log \
"%t %h %a \"%{SSL_CLIENT_S_DN_CN}x\" %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %s %b"
</VirtualHost>
Также существует whitelist.conf для ограниченного круга пользователей.
<Directory /var/www/html/myproject>
<RequireAny>
Require ssl-verrify-client
<RequireAny>
... internal list ..
</RequireAny>
</RequireAny>
</Directory>
Большинство пользователей, которым отказано в доступе, работают под управлением Windows 10 с использованием различных браузеров (IE, Firefox и Chrome). Многие также используют ActiveClient. Что может помешать этим пользователям предоставить свои сертификаты?