Тестирование службы WCF с сертификатами локально - PullRequest
0 голосов
/ 12 июня 2019

У меня есть служба WCF, которая предоставляет метод для получения контента.Эта услуга будет использоваться клиентом через Интернет.Клиент предоставил следующие сертификаты и установил их на моем локальном компьютере следующим образом:

Comodo Intermediate .cert 1) Промежуточные центры сертификации> Comodo Intermediate

Comodo Root .cert 2) Доверенные корневые центры сертификации>Commodo Root

Сертификат клиента X509 .pem 3) Хранилище доверенных лиц> Сертификат клиента

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

<protocolMapping>
      <add scheme="https" binding="wsHttpBinding"/>
    </protocolMapping>
    <bindings>
      <wsHttpBinding>
        <binding>
          <security mode="Transport">
            <transport clientCredentialType="Certificate"></transport>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>

. Я создал тестовое приложение консоли клиента и добавил следующую конфигурацию

<behaviors>
      <endpointBehaviors>
        <behavior name="endpointCredentialBehavior">
          <clientCredentials>
            <clientCertificate findValue="ClientCertificate"
                               storeLocation="LocalMachine"
                               storeName="My"
                               x509FindType="FindBySubjectName" />
          </clientCredentials>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="Binding1">
          <security mode="Transport">
            <transport clientCredentialType="Certificate"/>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>

Я знаю, чтов тестовой и производственной среде у меня есть сертификат сервера, но чтобы проверить все это локально и успешно, нужно ли мне создать сертификат сервера и как это сделать.Может ли это быть сделано на той же коробке, или мне придется использовать SOAP UI или что-то еще?

1 Ответ

0 голосов
/ 21 июня 2019

Если у вас есть сервисный сертификат (выданный каким-либо официальным учреждением), вы можете проверить его на месте, перейдите по ссылке ниже.
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/transport-security-with-certificate-authentication
Когда мы используем транспортную безопасность с сертификатом, мы должны сначала установить доверительные отношения между клиентом и сервером, а затем, если мы хотим использовать самозаверяющий сертификат, мы можем использовать PowerShell для создания сертификата. Обратитесь к приведенной ниже команде Powershell для создания самозаверяющего сертификата.

New-SelfSignedCertificate -DnsName "vabqia864VM" -CertStoreLocation "cert:\LocalMachine\My"

Подробнее ...
https://docs.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate?view=win10-ps
Что касается сервера, мы должны настроить порт с сертификатом SSL, поскольку мы используем протокол https (если мы используем IIS для размещения этого, модуль привязки веб-сайта сделает это).
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate
Для клиентской стороны мы должны предоставить клиентский сертификат для аутентификации (также можно использовать поведение конечной точки для выполнения этого).

ServiceReference1.ServiceClient client = new ServiceReference1.ServiceClient();
client.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, "9ee8be61d875bd6e1108c98b590386d0a489a9ca");

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...