У меня есть служба WCF, работающая на IIS6, которая настроена с помощью WSHTTPBinding с использованием параметра безопасности «Транспорт с учетными данными сообщения» (с учетными данными транспортного клиента, установленными на «Нет», а для сообщения — «Сертификат». Это используется Клиент .NET, созданный с помощью автоматически сгенерированного кода при использовании службы в VS 2010.
В моей среде разработки я создал сертификат, который действует как сертификат службы и SSL-сертификат IIS, и, поскольку мне было лень, я экспортировал сертификат для использования с моим клиентским приложением. В этой конфигурации все отлично работает, но это не целевая среда. Идея состоит в том, чтобы пользователи использовали свои смарт-карты для доступа к этой услуге. Сервер не будет находиться в том же домене, и LDAP на данный момент запрещен.
Проблема в том, что теперь я получил это в тестовой лаборатории и настроил среду, в которой сертификат SSL был выдан тем же ЦС, что и сертификаты пользователя, и я создал собственный валидатор x509 Cert и учетные данные службы, но после первоначального вызова для моего валидатора что-то происходит между передачей и выдает ошибку в журнале трассировки службы, говоря: «Ошибка проверки безопасности сообщения» с внутренним исключением «Не удается проверить подпись». Поскольку он проходит через мой пользовательский валидатор, и я зарегистрировал сообщение, все выглядит нормально на стороне SOAP, и я получаю сертификат на другой стороне. Я убедился, что каждый сертификат, который я пытаюсь использовать, находится в хранилище «Доверенные пользователи», и даже пытался экспортировать сертификаты и помещать их в «Личное» хранилище локального компьютера, но безуспешно.
У меня такое ощущение, что я не совсем понимаю использование сертификата службы и сертификата клиента в файле web.config. Может кто-нибудь, пожалуйста, помогите мне здесь?