Java-senden von HTTP-Post mit client-Authentifizierung
Ich habe eine client-cert, key und cacert, mit zu arbeiten. Die LOCKE für den code, den ich wollen würde
curl https:<ip>/query --cert client_cert.pem --key client_key.pem --cacert ca_cert.pem "-d <post data>"
Ich habe versucht, zu kombinieren, diese Dateien in ein PFX (p12 und) da zu sein scheint, dass die von Ihnen gewünschten format, aber ich bin nicht sicher, ob ich es richtig gemacht habe:
openssl pkcs12 -export -out client.pfx -inkey client_key.pem -in client_cert.pem -certfile ca_cert.pem
Ursprünglich habe ich erhielt eine Fehlermeldung, die nicht über ein SAN definiert, die in meinem cert, ich habe da einige code, sollte dies ignorieren, aber ich glaube nicht, dass es die Ursache für mein problem. Ich erhalte eine 404 als Ergebnis bilden die POST, wenn eine LOCKE gibt mir der tatsächliche Inhalt erwartet
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());
Gibt
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]}}
Irgendwelche Ideen, ob mein code falsch ist oder wenn es die certs oder was? Was ich sagen kann, ich habe die pfx richtig, und die certs offensichtlich funktionieren, wenn das curl funktioniert. Ich habe mit diesem für eine Weile und nicht in der Lage, um es herauszufinden.