2012-04-13 62 views
6

Básicamente, necesito asegurar mis solicitudes para este servicio.Invocar el servicio web Java desde el cliente C# utilizando certificados JKS y/o PFX

Me han proporcionado un cliente JAR prueba y dos archivos, trust.jks y Client.pfx, pero no tengo ni idea de cómo usarlos: Entiendo clase X509Certificate2 está implicado de alguna manera.

La línea de comandos para ejecutar el cliente de prueba es el siguiente:

java -Djavax.net.ssl.trustStore=trust.jks -Djavax.net.ssl.trustStorePassword=******** -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.keyStore=Client.pfx -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=******** -jar TestClient.jar https://myServiceurl 

Funciona, por lo tanto puedo ver el servicio, y el servicio en sí debe ser configurado correctamente.

Mi C# cliente (que está orientado .NET 2.0) utiliza una referencia Web normales para realizar solicitudes:

wsReferenceClient service = new wsReferenceClient(); 
//certificate code here ? 
//maybe service.ClientCertificates.Add(<X509Certificate2 object built somehow>); ? 
service.MyRequest(myParameters); 

configuración del servidor debe ser configurado correctamente.

He tropezado con los métodos X509Certificate2 pero no puedo sacar algo que tenga sentido, por lo que la respuesta a "¿qué has intentado?" la pregunta en este momento es 'Realmente no sé qué probar en primer lugar'.

Cualquier ayuda sería muy apreciada.

+0

AFAIK la tienda JKS es una solución propietaria de Java. Debe exportar las claves públicas (tal vez toda la cadena) usando keytool e importarlo a una tienda de formato abierto como PKCS. – home

+0

Correcto, aunque preferiría tomar los certificados de confianza de él por separado y usarlos. El pfx ya debe contener la clave privada y la cadena de cert. –

+0

Entonces, si entiendo correctamente, ¿tengo que hacer que el archivo JKS sea comestible para mi cliente de alguna manera? Creo que voy a googlear un poco más ... – Alex

Respuesta

7

Resulta que no necesito hacer nada con el archivo JKS.

wsReferenceClient service = new wsReferenceClient(); 
X509Certificate2 cert = new X509Certificate2(); 
cert.Import("Client.pfx", "<the password>", DefaultKeySet); 
service.ClientCertificates.Add(cert); 
service.MyRequest(myParameters); 

Esto permite que mis solicitudes HTTPS para ir a través de éxito.

Cuestiones relacionadas