2010-08-12 2 views
0

У меня возникли проблемы с настройкой схемы сертификатов X509 в C# .NET. SSL включен на сервере, и соединение выполняется по SSL. Сертификаты добавляются в магазин запроса через request.ClientCertificates.Add(). Однако ни один сертификат клиента не прикрепляется к запросу квитирования (который я подтверждаю, проверяя код сервера через HttpRequest.ClientCertificate и анализируя рукопожатие в Fiddler).Использование certutil для проверки ответов на сертификат

Насколько я могу судить, проблема в том, что сервер не запрашивает сертификат клиента. Сертификаты, безусловно, находятся в исходящем запросе, но я не вижу их в рукопожатии и ни на сервере, они просто исчезают в эфире. Я знаю семантику выбора сертификата (спасибо this page), но он не разрешил мою проблему. ЦС должны быть одинаковыми; Я использую один и тот же самоподписанный закрытый секретный сертификат для каждого конца теста.

Очевидно, я могу использовать certutil.exe, чтобы проверить, какие сертификаты будут выбраны при использовании с данным сертификатом сервера. Это было бы огромной помощью, если бы я мог понять, как использовать его так. Certutil - это большая программа, которая плохо документирована. Любая помощь будет оценена по достоинству.

ответ

0

Если вы используете серверы IIS, вы ДОЛЖНЫ предоставить сертификат, которому доверяет ваш сервер. Таким образом, вы ДОЛЖНЫ добавить клиентский сертификат «CA cert» в хранилище корневых сертификатов серверного компьютера. IIS не работает с самозаверяющими сертификатами. Он запрашивает сертификат клиента, предоставляющий список центров сертификации, которым он доверяет.