Я хочу защитить мою службу WCF с помощью клиентских сертификатов, то есть только сертификаты клиентов из определенного корневого ЦС должны быть разрешены для вызова моей службы.WCF с транспортной безопасностью с помощью сертификатов
Для целей тестирования я создал первый сертификат клиента без центра сертификации. Я зарегистрировал сертификат клиента в хранилище сертификатов сервера (под текущим пользователем -> доверенные люди).
В VS2013 я включил SSL в проекте службы WCF, чтобы иметь конечную точку HTTPS. Я адаптировал следующий файл web.config службы следующим образом:
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="PeerTrust"/>
</clientCertificate>
...
</serviceCredentials>
<wsHttpBinding>
<binding name="wsHttpEndpointBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</wsHttpBinding>
Кроме того, я приспособил файл App.config моего клиентского приложения следующим образом:
<clientCredentials>
<clientCertificate findValue="Client" x509FindType="FindBySubjectName" storeLocation="CurrentUser" storeName="TrustedPeople" />
<serviceCertificate>
<authentication certificateValidationMode="PeerTrust"/>
</serviceCertificate>
</clientCredentials>
<wsHttpBinding>
<binding name="WSHttpBinding_IService1">
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</wsHttpBinding>
Однако это не работает, появляется следующее сообщение об ошибке:
Произошла ошибка при отправке HTTP-запроса https://localhost:44300/Service1.svc
. Это может быть связано с тем, что сертификат сервера не настроен должным образом с HTTP.SYS в случае HTTPS. Это также может быть вызвано несоответствием привязки безопасности между клиентом и сервером.
Если я переключусь на безопасность сообщений (а не на транспортную безопасность) и переключитесь на протокол HTTP, все, кажется, работает нормально. Так что, наверное, я пропустил какой-то шаг HTTPS? Как сделать работу по обеспечению безопасности на транспорте?
Благодарим вас за информацию, если я использую этот инструмент. Я получаю простую ошибку «Параметр неправильный». Thumprint без пробелов, я использовал новый GUID (включая тире) как appId. –
guid должен быть в фигурных скобках –
У меня есть «netsh http add sslcert ipport = localhost: 44300 certhas = appid = {22d80ae9-b4f7-4c41-b201-a34e2790b41e}' –