Передача сертификата клиента работает только на моей машине - PullRequest
1 голос
/ 27 октября 2008

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

Есть идеи?

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

Это C # и .NET 3.5

Ответы [ 3 ]

2 голосов
/ 27 октября 2008

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

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

0 голосов
/ 29 октября 2008

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

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

0 голосов
/ 27 октября 2008

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

alt text

...