Передача сертификата клиента работает только на моей машине

StackOverflow https://stackoverflow.com/questions/239979

Вопрос

У меня есть веб-сервис, который защищен тем, что требующее стороннее приложение передает сертификат клиента. Я установил сертификат на предоставление веб-сервиса в производстве и на клиенте. Этот процесс в настоящее время работает нормально для других клиентов с аналогичной настройкой. Текущая версия написана на .NET 3.5 и отлично работает на моей машине разработки под управлением cassini (и работает автономно), но отказывается работать на моей рабочей машине с тем же кодом и настройкой сертификата. Я подтвердил, что веб-служба провайдера принимает сертификат, установленный на клиенте через браузер, но, когда сертификат добавляется в вызов веб-службы программно, я получаю 403, доступ запрещен. Я выдаю отпечаток сертификата, добавленного в вызов, до того, как он отправит запрос в защищенный веб-сервис, и это действительно правильный сертификат. Я думаю, что где-то вдоль линии, он не имеет доступа к части секретного ключа сертификата.

Есть идеи?

Примечание. Я предоставил процессу IIS доступ к соответствующим каталогам ~ / crypto.

Это C # и .NET 3.5

Это было полезно?

Решение

У меня была такая проблема пару недель назад. Решение в моем случае состояло в том, чтобы использовать олицетворение для получения соответствующего доступа к хранилищу сертификатов. По умолчанию рабочий поток IIS выполнялся как системный пользователь и не имеет доступа к соответствующему хранилищу. Добавление сертификата в определенное хранилище пользователей и олицетворение этого пользователя решило все проблемы.

Тем не менее, я буду продолжать следить за этим вопросом, поскольку мне известно, что олицетворение - это не волшебное исправление, и что в этом сценарии возникнут проблемы.

Другие советы

Есть четкая причина, по которой он не работал на моей машине. При запуске в Visual Studio он работает с моими учетными данными, которые использовались для установки сертификата. Таким образом, автоматически имеет разрешение на доступ к хранилищу закрытых ключей на машине. Однако при запуске вне cassini (в IDE) у процесса IIS не было разрешений для доступа к хранилищу закрытых ключей.

Временное решение. Запустите домен приложения как Локальная система . Плохо для безопасности, но оно запускает и запускает приложение (хотя и с помощью бинтов), пока я не смогу найти более постоянное решение.

Вы можете просто добавить эту наклейку в свою программу и назвать ее днем:

alt text

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top