Я работаю над сервисом WCF, который должен быть использован клиентом, который не разработан мной, а также не .NET (возможно, Java).Взаимная аутентификация SSL с WCF: нет CertificateRequest и CertificateVerify в момент установления связи
В любом случае служба должна поддерживать взаимную аутентификацию SSL, когда служба и клиент аутентифицируются сертификатами сертификатов X.509 на транспортном уровне. Сертификаты были обменены между сторонами в предыдущий момент.
Моя проблема заключается в том, что я не могу получить правильную конфигурацию WCF, чтобы проверка подлинности сертификата клиента работала правильно. Что я ожидаю, что, как часть рукопожатия TLS, сервер также включает в себя Certificate Request
, как показано ниже:
После этого клиент должен ответить с `Сертификат Проверка» среди прочего:
The (последняя) конфигурация службы это одна. Я использую настраиваемую привязку, с режимом аутентификации, установленным на 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>
Сервер Здравствуйте часть рукопожатия выглядит следующим образом для всех конфигураций услуг, которые я попробовал, не CertificateRequest.
Другие вещи, которые я должен упомянуть:
- Услуга самодостаточно и прослушивает не по умолчанию порт (не 443). Сертификат SSL сервера привязан к этому порту.
- Я также пробовал
basicHttpBinding
иwsHttpBidning
с режимом безопасности, установленным наTransport
, и аутентификацию клиента, установленную наCertificate
, без результатов (фактически на самом деле).
Любые идеи были бы оценены.
Вы пытаетесь включить трассировку WCF и посмотреть, есть ли какие-либо подробные ошибки есть? – UserControl
@UserControl: Да, трассировка включена, но к сожалению нет связанных ошибок. –
Wild shot - Есть ли какие-то корневые сертификаты из цепочки доверия сертификатов клиентов, отсутствующие на стороне сервера? То есть у вас есть сертификат клиента, но некоторые корневые сертификаты в цепочке отсутствуют ...? –