Java envío de HTTP Post con autenticación de cliente
Tengo un cliente cert, clave, y cacert para trabajar con. El curl para el código que quiero sería
curl https:<ip>/query --cert client_cert.pem --key client_key.pem --cacert ca_cert.pem "-d <post data>"
He tratado de combinar estos archivos en un PFX (y p12), ya que parece ser el formato requerido pero no estoy seguro de que lo hice correctamente:
openssl pkcs12 -export -out client.pfx -inkey client_key.pem -in client_cert.pem -certfile ca_cert.pem
Al principio me recibió un mensaje de error acerca de no tener un SAN definido en mi cert, desde entonces he añadido algo de código que se debe ignorar esto, pero yo no creo que sea la causa de mi problema. Recibo un mensaje de error 404 como un resultado de la forma de la POST cuando un rizo me da la real contenido que se espera que
KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(new FileInputStream("client.pfx"), keyPassphrase.toCharArray());
SSLContext sslContext = SSLContexts.custom()
.loadKeyMaterial(keyStore, keyPassphrase.toCharArray())
.loadTrustMaterial(keyStore, TrustSelfSignedStrategy.INSTANCE)
.build();
HttpClient httpClient = HttpClients.custom().setSSLHostnameVerifier(new NoopHostnameVerifier()).setSSLContext(sslContext).build();
HttpPost httpPost = new HttpPost("https://" + ip + "/query");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair(postKey, postVal));
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse response = httpClient.execute(httpPost);
System.out.println(response.toString());
Da
HttpResponseProxy{HTTP/1.1 404 Not Found [Date: Sun, 28 Oct 2018 02:11:55 GMT, Server: Apache/2.4.29 (Ubuntu), Content-Length: 280, Keep-Alive: timeout=5, max=100, Connection: Keep-Alive, Content-Type: text/html; charset=iso-8859-1] ResponseEntityProxy{[Content-Type: text/html; charset=iso-8859-1,Content-Length: 280,Chunked: false]}}
Cualquier idea si mi código está mal o si es el cert o qué? Por lo que puedo decir que he hecho el pfx correctamente, y los certs, obviamente, el trabajo de si la curvatura de las obras. He estado trabajando en esto por un tiempo y no es capaz de averiguar.