Я работаю над сервисом WCF, который должен использоваться клиентом, который не разработан мной, а также не .NET(возможно, Java).
В любом случае служба должна поддерживать взаимную аутентификацию SSL, где и служба, и клиент аутентифицируются сертификатами сертификатов X.509 на транспортном уровне. Сертификаты были обменены между сторонами в предыдущий момент.
Моя проблема в том, что я не могу получить правильную конфигурацию WCF, так что проверка подлинности сертификата клиента работает правильно. Я ожидаю, что, как часть рукопожатия TLS, сервер также включает Certificate Request
, как показано ниже:
После этого клиент должен ответить "Свидетельством сертификата" между прочим:
Последняя конфигурация службы - это. Я использую настраиваемую привязку, с режимом аутентификации, установленным на MutualSslNegotiated
.
<bindings>
<customBinding>
<binding name="CarShareSecureHttpBindingCustom">
<textMessageEncoding messageVersion="Soap11" />
<security authenticationMode="MutualSslNegotiated"/>
<httpsTransport requireClientCertificate="true" />
</binding>
</customBinding>
</bindings>
...
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" httpHelpPageEnabled="false" />
<serviceCredentials>
<serviceCertificate findValue="..." storeLocation="LocalMachine" x509FindType="FindByIssuerName" storeName="My" />
<clientCertificate>
<certificate findValue="..." storeName="My" storeLocation="LocalMachine" x509FindType="FindByIssuerName"/>
</clientCertificate>
</serviceCredentials>
</behavior>
</serviceBehaviors>
Часть приветствия сервера Hello приветствует это для всех конфигураций службы, которые я пробовал, без CertificateRequest.
Другие вещи, которые я должен упомянуть:
- Служба самообслуживания и прослушивание нестандартного порта (не 443). SSL-сертификат сервера привязан к этому порту.
- Я также попробовал
basicHttpBinding
иwsHttpBidning
с режимом безопасности, установленным наTransport
, и аутентификацию клиента, установленную наCertificate
, без каких-либо результатов (фактически на самом деле).
Любые идеи будут оценены.