В последний раз, когда я проверял, IIS использовал повторное согласование (по умолчанию) для получения сертификата клиента: происходит первое рукопожатие, когда сервер не запрашивает сертификат клиента, а затем другое рукопожатие (зашифрованное на этот раз), гдесервер запрашивает сертификат (через сообщение TLS CertificateRequest
).Это не позволит вам увидеть что-либо из Wireshark, если вы не настроите для использования закрытого ключа сервера и расшифровки трафика (обратите внимание, что это работает только с некоторыми комплектами шифров).
В одну сторонучтобы увидеть согласование клиент-сертификат, необходимо настроить IIS для использования начального согласования сертификата клиента, используя netsh и clientcertnegotiation = true (что составляет примерно начальное согласование).По крайней мере, CertificateRequest
и сертификат будут отправлены в открытом виде во время рукопожатия, поэтому вы сможете увидеть это с помощью Wireshark.Если клиент не отправляет сертификат на сервер в ответ на CertificateRequest
, вы все равно увидите пустое сообщение Certificate
от клиента.
Если вы не экспортируете приватное сообщениеключ с сертификатом для использования с Fiddler или любым другим клиентом, нет никаких шансов, что он сможет использовать сертификат.В лучшем случае он может попытаться отправить сертификат, но рукопожатие не будет выполнено (поскольку сообщение CertificateVerify
должно быть подписано закрытым ключом клиента).
Я полагаю, вы можете столкнуться с проблемой, из-за которой:
- , не представивший сертификат, принят сервером (это фактически необязательно),
- , представивший недействительный сертификат, приводит к сбою и вызывает этот код состояния 403.7 (многие серверы и стеки SSL / TLS будутреализовать это как фатальную ошибку, но спецификация TLS не говорит, что
unsupported_certificate
, certificate_revoked
, certificate_expired
, certificate_unknown
должны быть фатальными, так что это на усмотрение сервера).