Сертификат WCF WebService не найден на рабочем сервере - PullRequest
0 голосов
/ 02 ноября 2018

Я использую пользовательскую аутентификацию с веб-сервисом WCF. Я создал локальный сертификат на своем компьютере, когда я ссылаюсь на него в моем web.config все работает.

На рабочем сервере я создал сертификат SSL и привязал его к своему веб-сайту. Сертификат называется «GAAWEBDEV_20Mars2020».

Когда я публикую свою заявку, это сообщение будет показано:

Cannot find the X.509 certificate using the following search criteria: StoreName 'My', StoreLocation 'LocalMachine', FindType 'FindBySubjectName', FindValue '‎‎GAAWEBDEV_20Mars2020'.

Это код, который у меня есть в моем файле web.config:

<system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior name="Behavior1">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceCredentials>   
        <!--
          <serviceCertificate findValue="Test" storeLocation="LocalMachine"
          storeName="My" x509FindType="FindBySubjectName" />
        -->
        <serviceCertificate findValue="‎‎GAAWEBDEV_20Mars2020" storeLocation="LocalMachine" x509FindType="FindBySubjectName"/>
        <userNameAuthentication userNamePasswordValidationMode="Custom"
         customUserNamePasswordValidatorType="PSA904.CustomValidator, PSA904" />
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>
<bindings>
  <wsHttpBinding>
    <binding name="Binding1">
      <security mode="Message">
        <message clientCredentialType="UserName"/>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
<services>
  <service behaviorConfiguration="Behavior1" name="PSA904.servPSA904">
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1"
     contract="PSA904.PSA904" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost/" />
      </baseAddresses>
    </host>
  </service>
</services>

Это ссылка на наш сайт: https://psa904webdev.gaa.qc.ca/servPSA904.svc Вы можете видеть, что у нас есть сертификат под названием "GAAWEBDEV_20Mars2020"

Спасибо!

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

Вы должны убедиться, что ваш сертификат правильно установлен в хранилище сертификатов. Не забудьте назначить расположение хранилища сертификатов. storeName = "My"

<serviceCertificate findValue="‎‎GAAWEBDEV_20Mars2020" storeLocation="LocalMachine" x509FindType="FindBySubjectName" storeName="My" />

Это значения перечисления.
enter image description here
Это соответствует следующим значениям в диспетчере сертификатов. enter image description here
Вы можете узнать у менеджера сертификатов, правильно ли установлен сертификат. Способ открыть диспетчер сертификатов.

Win + R> certmgr.msc

Пожалуйста, дайте мне знать, если я могу чем-то помочь.

0 голосов
/ 07 ноября 2018

Вот что вы можете попробовать, запустите следующий код и посмотрите, появляется ли ваш конкретный сертификат

using (var store = new X509Store(StoreName.My,StoreLocation.LocalMachine))
            {
                store.Open(OpenFlags.ReadOnly);

                var certificates = store.Certificates;
}

Вы можете использовать объект сертификатов, чтобы вывести список всех сертификатов в определенном хранилище. Из этого вывода проверьте, существует ли ваш сертификат.

Вы также можете использовать объект сертификата здесь, чтобы получить ThumbPrint и т. Д. В качестве последнего средства вы можете попробовать установить сертификат через код и использовать тот же сертификат для настройки веб-конфигурации либо с использованием xmlSerializer, либо Linq.

0 голосов
/ 05 ноября 2018

Во-первых, убедитесь, что ваш сертификат существует. Запустите certmgr.msc или mmc.exe. Также вы можете найти сертификат с другими методами, например, по отпечатку пальца, как это:

    <serviceCertificate storeLocation="LocalMachine" storeName="My" 
             x509FindType="FindByThumbprint" 
             findValue="14 c2 b1 c2 b8 a1 fd 25 n2 bb 39 5d 32 r3 53 f3 0c vy t1 c4"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...