Я сделал 2 CSR (один для сервера и один для клиента, показанный ниже как ssatClient и ssatServer ).После подписания их действующим сертификатом CA я проверил их.Оба они показывают, что с проверкой все в порядке.
Я использую xampp для запуска сервера APACHE с SSL-соединением.
Конфигурация
Это содержимое httpd-ssl.conf
Listen 443
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLHonorCipherOrder on
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:D:/xamppNew/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
<VirtualHost _default_:443>
DocumentRoot "D:/xamppNew/htdocs"
ServerName SSAT:443
ServerAdmin admin@example.com
ErrorLog "D:/xamppNew/apache/logs/error.log"
TransferLog "D:/xamppNew/apache/logs/access.log"
SSLEngine on
SSLCertificateFile "conf/ssl.crt/ssatServer.crt"
SSLCertificateKeyFile "conf/ssl.key/ssatServer.key"
SSLCertificateChainFile "conf/SSAT_ca-chain.crt"
#SSLCACertificatePath conf/ssl.key/SSAT.crt"
#SLCACertificateFile "conf/ssl.crt/SSAT.crt"
#SSLVerifyClient require
#SSLCACertificateFile conf/ssl.crt/SSAT.crt
#SSLVerifyDepth 1
SSLVerifyClient require
SSLCACertificateFile "conf/SSAT_ca-chain.crt"
<Location /protected>
SSLVerifyClient require
SSLVerifyDepth 3
</Location>
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "D:/xamppNew/apache/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
Настройка виртуального хоста показана ниже вфайл httpd-vhosts.conf
<VirtualHost *:443>
ServerName SSAT
SSLEngine on
SSLCertificateFile "conf\ssl.crt\ssatServer.crt"
SSLCertificateKeyFile "conf\ssl.key\ssatServer.key"
SSLCACertificateFile "conf\SSAT_ca-chain.crt"
<Location /protected>
SSLVerifyClient require
SSLVerifyDepth 3
</Location>
</VirtualHost>
Проблема
Я пытаюсь аутентифицировать клиента через сайт ssat: 443.Настройкатег с параметром SSLVerifyClient require в виртуальном хосте позволяет пользователям получать доступ к этому каталогу, только если у них есть действительный сертификат, подписанный моим CA.Независимо от того, удаляю ли я доверенные сертификаты или личные сертификаты в Google Chrome, я все равно могу получить доступ к каталогу / protected, к которому у меня нет доступа без действительного сертификата клиента.Иногда, если я пытаюсь восстановить соединение через 30 или 40 минут, я получаю всплывающее окно, которое позволяет мне выбрать сертификат клиента.После его выбора сервер позволяет мне перейти на вкладку / protected и с этого момента до следующего всплывающего окна, он дает мне доступ к нему независимо от того, сколько раз я перезагружаю сервер или удаляю / повторно добавляю действительные и недействительные сертификаты.
Вопросы
Я что-то не так делаю в конфигурации?«Соединение защищено» всегда работает для сертификата сервера.Можно ли как-нибудь удалить «кэшированные» сертификаты, чтобы каждый раз, когда я захочу получить доступ к вкладке / protected, он будет запрашивать сертификат через всплывающее окно?
Извините за длинный пост