Me gustaría utilizar cifrado y verificación basados en certificados cuando me comunico con un servicio WCF. Así que creé certificados de prueba, "TempCA" como mi CA raíz y "SignedByCA" como un certificado de cliente firmado por esa CA.Autenticación de confianza de cadena de certificado WCF: "El servicio no autenticó a la persona que llama".
Cuando coloco el certificado del cliente en "Computadora local \ Gente de confianza" y uso certificateValidationMode="PeerTrust"
, el servicio reconoce al cliente y todo funciona como se espera. Pero con la verificación de la cadena de confianza (certificateValidationMode="ChainTrust"
), me encuentro con el error "La persona que llama no fue autenticada por el servicio".
relevante de configuración de servidor:
<behaviors>
<serviceBehaviors>
<behavior name="customServiceBehavior">
[...]
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="ChainTrust" trustedStoreLocation="LocalMachine" mapClientCertificateToWindowsAccount="false" />
</clientCertificate>
<serviceCertificate findValue="TempCA"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="soapBindingConfiguration">
<security mode="Message">
<message clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
</bindings>
relevante de configuración del cliente (resto de auto-creada por "Agregar referencia de servicio"):
<endpointBehaviors>
<behavior name="customClientBehavior">
<clientCredentials>
<clientCertificate findValue="SignedByCA" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" />
</clientCredentials>
</behavior>
</endpointBehaviors>
Ambos certificados de cliente y servidor están almacenado con su clave privada en "Local Computer \ Personal" (porque estoy probando en una computadora), y la "TempCA" (mi certificado raíz) también está en "Entidades locales de certificación de raíz de computadora confiable".
¿Qué me falta aquí? ¿Algún ejemplo de trabajo?
No estoy en un dominio de ActiveDirectory, por lo que no existe dicha política de grupo disponible en "Configuración de Windows/Configuración de seguridad/Políticas de clave pública". También probé la primera sugerencia y solo coloqué el certificado del servidor en la ubicación "Autoridades de certificación de raíz de confianza" sin éxito. – AndiDog