Привязка конечной точки - это WSHttpBinding с режимом безопасности = Сообщение и clientCredentialType = Сертификат.
Я установил следующее поведение на стороне сервера (Установить сертификат сервера и проверить сертификат клиента):
<behavior name="serviceBehaviour">
<serviceCredentials>
<serviceCertificate
storeLocation="LocalMachine"
storeName="My"
x509FindType="SubjectName"
findValue="CN=MyServerCertificateName" />
<clientCertificate>
<authentication
certificateValidationMode="PeerTrust"
trustedStoreLocation="LocalMachine"
revocationMode="Online" />
</clientCertificate>
</serviceCredentials>
</behavior>
Устанавливаю для клиента сертификат следующим образом:
<behavior name="clientEndpointCredential">
<clientCredentials>
<clientCertificate
storeName="My"
storeLocation="LocalMachine"
x509FindType="FindBySubjectName"
findValue="MyClientCertificateName" />
</clientCredentials>
</behavior>
С помощью этого кода сервер проверяет CRL клиента и доверие пира.Эта проверка работает нормально.
Проблема в том, что я добавляю следующий код в учетные данные клиента:
<serviceCertificate>
<authentication
certificateValidationMode="PeerTrust"
trustedStoreLocation="LocalMachine"
revocationMode="Online" />
</serviceCertificate>
</clientCredentials>
Когда я изменяю свойства clientCredentials.ServiceCertificate.Authentication, цепочка CRL не проверяется!Сервер публикации crl не работает, и сервер все еще получает клиентские сообщения!
Я хотел добавить этот код, чтобы клиент мог проверить цепочку сертификатов сервера.
Спасибо за вашпомогите заранее.