2012-02-20 3 views
0

Я пытаюсь реализовать самообслуживаемую WCF-службу, которая должна использовать аутентификацию клиента по сертификату. К сожалению, аутентификация не удалась. В файле журнала говорится, что клиент не предоставляет сертификат. Если вы пытаетесь связаться с сервисом через firefox, в нем говорится: «Ошибка 403 - Запрещено».selfhosted WCF-Service + проверка подлинности сертификата клиента

Следующий код показывает конфигурацию через файл app-config.

<serviceBehaviors> 
    <behavior name="sslbehaviour"> 
     <serviceMetadata httpsGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
     <serviceCredentials> 
     <clientCertificate> 
      <authentication certificateValidationMode="ChainTrust" trustedStoreLocation="CurrentUser"/> 
     </clientCertificate> 
     <serviceCertificate findValue="cert-thumb-print" x509FindType="FindByThumbprint" storeLocation="CurrentUser" storeName="My"/> 
     </serviceCredentials>    
    </behavior> 
    </serviceBehaviors> 

endpoint address="https://localhost:443/service" binding="wsHttpBinding" 
     bindingConfiguration="BindingForResultPost" contract="MobD.IEndpointService" /> 

ГЗС ошибка: System.ServiceModel.Channels.HttpsClientCertificateNotPresent.aspx

я думаю, что я создал и правильно установлены мои сертификаты.

Я был бы очень благодарен за любой намек ...

С наилучшими пожеланиями, Майкл

ответ

0

Вы говорите, что, когда вы пытаетесь достичь его через Firefox вы получите 403. Имеет Firefox получил сертификат клиента установлен?

Что такое подтекст Http? Я предполагаю, что вы получаете 403,7 (что означает, что клиентский сертификат не установлен или не представлен браузером), 403.16 (клиентский сертификат не доверен), 403.17 (срок действия сертификата клиента истек) или, возможно, 403.13 (отзыв клиента завершен) ,

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

+0

Не должен ли firefox запрашивать у меня сертификат, когда я подключаюсь к службе? Как получить субкод? например 403.x - я просто вижу основной код ... я уже пробовал использовать скрипач, но, к сожалению, выход был не очень полезен. Клиентский сертификат, а также его root-ca установлен на клиентской машине. – user1168876

+0

Это окно Windows? Firefox не использует хранилище сертификатов Windows, как это делают IE и Chrome. Он имеет свой собственный магазин, поэтому вам также нужно установить его там (или протестировать с помощью одного из IE или Chrome). Предполагая, что вы используете IIS7 или выше, я думаю, вам нужно настроить подробные коды ошибок - по соображениям безопасности он не включен по умолчанию, поскольку он дает слишком много информации для общественного потребления. –

+0

Да, это Windows. Я уже пытался поставить сертификаты в хранилище firefox. Похоже, что WCF-Service не запрашивает сертификат. Где я могу активировать код ошибки деталей? это самообслуживаемое приложение - это конфигурация iis nescessary? – user1168876

0

Пожалуйста, обратитесь к шагам, описанным ниже о том, где установить клиентские сертификаты:

Вы должны иметь сертификат клиента следующим образом:

На клиентском компьютере:

Текущий пользователь -> Личная папка должна иметь сертификат клиента MyClientCert.pfx установлен

на серверах:

местного Machi ne -> TrusterPeople должен установить MyClientCert.cer

Убедитесь, что установка правильная. Я вижу, что у вас есть клиентский сертификат в TrustedPeople текущего пользователя. Надеюсь, что теперь его ясно по установке сертификатов

Пожалуйста, обратитесь к этой LINK, который объясняет немного на сертификате клиента устанавливается и как сказать браузеру, чтобы выбрать один из магазина:

ПРИМЕЧАНИЕ: Когда использовать файлы .pfx и .cer

+0

Я установил сертификаты именно так, как описано выше. Произошла та же ошибка. Клиенту не предлагается его сертификат. Правильно ли настроена конфигурация поведения? – user1168876

+0

Является ли клиент и сервер как на одном компьютере в вашем случае? Если нет, то ваш магазин для клиентских сертификатов должен быть локальным, а не текущим пользователем. Пример: <сертификат findValue = "client.com" storeLocation = "LocalMachine" storeName = "My" x509FindType = "FindBySubjectName" /> – Rajesh

+0

Нет, клиент и сервер не находятся на одном компьютере. Есть ли возможность получить какие-либо файлы журналов? – user1168876

0

Вы должны назначить права порта в Windows, когда вы являетесь владельцем WCF-услуг.

Смотрите эту статью на MSDN: How to: Configure a Port with an SSL Certificate

Вы также можете использовать OpenSSL для проверки состояния порта.

Смежные вопросы