Нет разницы в сообщении CertificateRequest, отправляемом сервером, когда сертификат просто запрашивается, а не требуется. Сервер делает один и тот же запрос в обоих случаях и просто завершает рукопожатие, когда клиент не может предоставить требуемый сертификат. Таким образом, если ваш браузер игнорирует «запросы», он также должен игнорировать «требования».
Проверьте следующее:
- Ваш браузер настроен на игнорирование
все запросы на сертификат, никогда
отправить один?
- Ваш браузер настроен на использование
выданный сертификат без запроса
Пользователь? (Другими словами, откуда вы знаете, что браузер не отправляет сертификат?)
- Ваш сервер действительно запрашивает
сертификат
Я тестирую этот последний случай с помощью инструмента OpenSSL (также доступного в Cygwin ):
openssl s_client -connect server.y.com:443 -msg
После того, как сервер отправит свое сообщение Certificate, он вставит метод CertificateRequest, который отсутствует, если он не запрашивает аутентификацию клиента. Вывод s_client выглядит так:
<<< TLS 1.0 Handshake [length 0008], CertificateRequest
0d 00 00 04 01 01 00 00
Я не уверен, как это работает, если сервер использует аутентификацию клиента только по определенным путям, потому что первоначальное рукопожатие SSL завершено до того, как клиент передаст HTTP-запрос. В этот момент было бы разумно, чтобы сервер запросил новое рукопожатие, но я никогда не проверял, какие серверы поддерживают это.
Вы можете подделать HTTP-запрос вручную через s_client, введя:
GET /your/path/here HTTP/1.1[Enter]
Host: server.y.com:443[Enter]
[Enter]
Если вы вообще никогда не видите сообщение CertificateRequest, ваш сервер настроен неправильно.
Указание ограничений безопасности на основе структуры каталогов является довольно распространенным явлением и может фактически упростить администрирование безопасности. Не расстраивайтесь, если это поможет вам.
403.7 не является кодом статуса HTTP. Это какая-то Microsoft, которая "обнимает, расширяет и тушит" уловку? В любом случае, это не похоже на правильное направление, поскольку это проблема транспортного уровня, а не проблемы прикладного уровня.