2012-02-27 1 views
0

Я создаю службу WCF, для которой требуется имя пользователя и пароль для прокси. Для этого мне нужно предоставить сертификат службы, для которого я предоставил сертификат нашей компании Verisign Certificate.Использование сертификата X.509 с UserName clientCredentialType

Проблема, с которой я столкнулся, - это когда я использую следующую конфигурацию, я получаю сообщение об ошибке «Сертификат службы не указан. Укажите сертификат службы в ServiceCredentials».

<system.serviceModel> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="false" /> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="WSBehaviour"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
     <serviceCredentials> 
     <serviceCertificate findValue="devstage1.vcg-online.net" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="TrustedPublisher" /> 
     <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Acre.IntegrationService.CustomValidator, Acre.IntegrationService" /> 
     </serviceCredentials> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<services> 
    <service name="Acre.IntegrationService.IntegrationService" behaviorConfiguration="WSBehaviour"> 

    <endpoint address="http://localhost/Acre.IntegrationService/IntegrationService.svc" 
       binding="wsHttpBinding" 
       bindingConfiguration="WSBinding" 
       contract="Acre.IntegrationService.IIntegrationService" 
       name="WS" /> 

    <endpoint address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange" /> 

    </service> 
</services> 
<bindings> 
    <wsHttpBinding> 
    <binding name="WSBinding" allowCookies="false"> 
     <security mode="Message"> 
     <message clientCredentialType="UserName" negotiateServiceCredential="true" /> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

ОБНОВЛЕНО CONFIG

Я установил сертификат в консоли с помощью mmc.exe следующих путей

Сертификаты (локальный компьютер)/Личные/Сертификаты/Сертификаты (Локальный компьютер)/доверенные корневые центры сертификации/сертификаты/ Сертификаты (локальный компьютер)/доверенные издатели/сертификаты/

Я искал interweb и не могу найти четкое решение моей проблемы. Может ли кто-нибудь помочь?

+0

Примечание: сертификат также устанавливается в том месте, где находится текущий пользователь, а также компьютер. И был импортирован в IIS –

+0

Вы должны указать сервисный сертификат, который необходимо использовать. Вы пытаетесь защитить службу SSL через транспортный канал? – Rajesh

+0

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

ответ

0

Мне удалось исправить проблему, @Rajesh, вы были правы с клиентом. Сертификат, который должен быть serverCertificate, который исправил ошибку, не обнаружив сертификат, спасибо за это. Сертификат уже установлен на компьютере для пользователя компьютера.

Проблема с набором ключей заключалась в том, что у сертификата не было правильного разрешения учетной записи, установленного для него. Я изменил permisisons, чтобы позволить IIS_USRS иметь доступ к сертификату, и теперь он исправлен.