Tengo un archivo con el».pfx » extensión y una contraseña para este certificado.

Lo que tengo que hacer es enviar una solicitud GET sencilla a un webservice y leer el cuerpo de la respuesta.

Necesito para implementar un método similar a este:

String getHttpResponse(String url, String certificateFile, String passwordToCertificate){
    ...
}

También he tratado de convertir el certificado a un formato «sin contraseña» con openssl:

Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM:
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes

Por lo que la alternativa de establecimiento de la mi método podría ser:

String getHttpResponse(String url, String certificateFile){
    ...
}

Realmente agradecería su ayuda, me pasé la mitad de un día buscando en google, pero no he encontrado un ejemplo que me ayudaría, parece que tiene problemas con undestanding algunos supuestos básicos alrededor de SSL y esas cosas.

  • Puedo saber en que entorno(servidor) se está trabajando?
  • La aplicación se ejecuta en Apache Tomcat. El servidor al que estoy enviando mi solicitud es algún tipo de JABÓN webservice devuelve un XML.
InformationsquelleAutor dstronczak | 2012-06-10

2 Comentarios

  1. 9

    Finalmente encontré una buena solución (sin la creación personalizada de SSL contexto):

    String getHttpResponseWithSSL(String url) throws Exception {
        //default truststore parameters
        System.setProperty("javax.net.ssl.trustStore", "/usr/lib/jvm/java-6-openjdk/jre/lib/securitycacerts");
        System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
        System.setProperty("javax.net.ssl.trustStoreType", "JKS");
    
        //my certificate and password
        System.setProperty("javax.net.ssl.keyStore", "mycert.pfx");
        System.setProperty("javax.net.ssl.keyStorePassword", "mypass");
        System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
    
    
        HttpClient httpclient = new HttpClient();
    
        GetMethod method = new GetMethod();
        method.setPath(url);
    
        int statusCode = httpclient.executeMethod(method);
        System.out.println("Status: " + statusCode);
    
        method.releaseConnection();
    
        return method.getResponseBodyAsString();
    }
    • Esto es bueno en mi caso. Sin embargo – lo que si me necesitaba para cambiar la configuración en tiempo de ejecución? ¿Crees que la configuración del Sistema.setProperty de nuevo sería muy malo?
    • No se que sería «malo», pero lo más probable es que no iba a funcionar.
  2. 1

    Esta pregunta debe tener su respuesta:

    HTTPClient-1.4.2: Explicación necesaria para la Costumbre de SSL Ejemplo del Contexto de la

    Necesita utilizar httpclient para crear la solicitud y, a continuación, utilizar una clave de administrador.

    • Traté de hacerlo de esta manera, sin embargo no estoy seguro de qué archivo debo usar como el «almacén de confianza»…
    • De acuerdo a [esta] (docs.oracle.com/javase/6/docs/api/java/security/…) puede ser null para crear un vacío de almacén de claves.

Dejar respuesta

Please enter your comment!
Please enter your name here