2012-10-08 61 views
7

Estoy trabajando en un cliente WCF que debe hablar con un servicio Oracle WebLogic. El servicio impone la autenticación de certificado mutuo.Cómo firmar el token X509 usando WCF

No estamos, sin embargo, capaz de satisfacer la política y el servidor registra un error que indica:

"WSM-00081: El certificado X.509 no está firmado."

Me he estado preguntando cuál es el significado exacto de esto. La documentación de Oracle indica:

WSM-00081: El certificado X.509 no está firmado.

Causa: El token X509 utilizado no se firmó según los requisitos del escenario de autenticación del certificado.

Acción: Firme el token X509 (según el mecanismo de referencia utilizado) para la autenticación del certificado.

Nivel: 1

Tipo: ERROR

Impacto: Seguridad

(http://docs.oracle.com/cd/E25054_01/core.1111/e10113/chapter_wsm_messages.htm)

Después de algunas investigaciones, descubrimos que podemos desactivar la comprobación en el servicio archivo de configuración de política configurando is-signed="false:

<orasp:x509-token orasp:enc-key-ref-mech="direct" orasp:is-encrypted="false" 
       orasp:is-signed="false" 
       orasp:rcpt-enc-key-ref-mech="direct" 
       orasp:rcpt-sign-key-ref-mech="direct" 
       orasp:sign-key-ref-mech="direct"/> 

Mis dos teorías:

  • El certificado debe ser firmado por una CA
    • Se verificaron mediante un certificado firmado por una CA, pero esto no influye
    • Sin embargo, podría haber cometido algunos errores al configurar esto. ¿Deberíamos intentarlo?
  • De alguna manera tenemos que firmar los BinarySecurityToken incluidos, que se incluyen en la solicitud.
    • Sin embargo, no tengo idea de cómo puedo hacer esto

¿He entendido bien completamente el tema o puedo cualquiera de darle algunas sugerencias de lo que podría ser el problema y cómo se puede resuelto?

+0

¿Está utilizando un certificado autofirmado que es un certificado de un proveedor de confianza? – Rajesh

+0

@Rajesh: He intentado ambos. – nilu

+1

¿Es una autenticación bidireccional? ¿También ha verificado si el proveedor existe como una autoridad de confianza en el servicio de oracle weblogic? Asegúrese de que si se trata de una autenticación bidireccional, ambos certificados estén firmados por una autoridad de confianza. – Rajesh

Respuesta

0

Debe firmar el token de seguridad como parte de la solicitud.

En el elemento de unión de su conjunto de configuración del modo de elemento de seguridad a SecurityMode.Message y el elemento de mensaje clientCredentialType a MessageCredentialType.Certificate:

<security mode="Message"> 
    <message clientCredentialType="Certificate" 
     algorithmSuite="Default" 
     establishSecurityContext="true" /> 
</security> 

A continuación, cree un comportamiento de punto final para resolver la ubicación de su client certificate:

<behavior name="endpointCredentialBehavior"> 
    <clientCredentials> 
     <clientCertificate findValue="Contoso.com" 
      storeLocation="LocalMachine" 
      storeName="TrustedPeople" 
      x509FindType="FindBySubjectName" /> 
    </clientCredentials> 
</behavior> 
Cuestiones relacionadas