'peer nicht authentifizierten' SSL-Zertifikat-Fehler usng DefaultHttpClient
Ich habe eine Anwendung jar, von denen ich m aufrufen einer HTTPS-url mit DefaultHTTPClient-Klasse Objekt aber seine Angabe peer authentifizieren keine Ausnahme, so möchte ich Unterschreiben Glas mit keystore.
Habe ich .cer-Datei, die den öffentlichen Schlüssel und ich kann in der Lage, um den import in den keystore aber wenn ich jarsigner-tool es sagt Zertifikatskette wurde nicht gefunden.Sie müssen einen privaten Schlüssel und das assoziierte öffentliche Schlüssel.
Habe ich .pfx-Datei auch die ist, nehmen Sie an einem privaten Schlüssel aber ich weiß nicht wie ich es importieren.kann irgend jemand in der Lage mir zu sagen, die Schritte, wie Sie importieren .pfx-Datei und Verwendung in jarsigner.
Mich korrigieren, wenn ich m falsch irgendwo..
UPDATE
Als pro @Duncan ich bin in der Lage, zu importieren .cer-Datei in der JVM durch Bezugnahme Diesem Link.. Ich verwendet, brüllte den Befehl importieren .cer in cacerts
c:\Program Files\Java\jre7\bin>keytool -importcert -alias esbcert -file "e:\Desktop\esbcert\esb.cer" -keystore "c:\Program Files\Java\jre7\lib\security\cacerts"
-storepass changeit
Danach habe ich eingegeben "y", um das Zertifikat
Trust this certificate? [no]: y
Certificate was added to keystore
Nach, dass ich meine Anwendung, aber es gibt mir immer noch javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
Stack ist wie folgt :
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at sun.security.ssl.SSLSessionImpl.getPeerCertificates(Unknown Source)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.jav
a:126)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFact
ory.java:572)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnect
ion(DefaultClientConnectionOperator.java:180)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedCli
entConnectionImpl.java:294)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(Default
RequestDirector.java:645)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultReq
uestDirector.java:480)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpCl
ient.java:906)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpCl
ient.java:805)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpCl
ient.java:784)
at testhttps.TestHTTPS.testWithMKCLHTTPClient(TestHTTPS.java:95)
at testhttps.TestHTTPS.main(TestHTTPS.java:49)
Mein Code ist :
String url = "https://domain.org/webapp/transformer/doTransformer/doReg";
try {
HttpPost postRequest = new HttpPost(url);
HttpResponse httpResponse = null;
DefaultHttpClient httpClient = new DefaultHttpClient();
httpResponse = httpClient.execute(postRequest);
} catch (Exception e) {
e.printStackTrace();
}
Sie brauchen nicht zu unterzeichnen, der code um in der Lage sein, um die https-verbindungen, die Sie benötigen, um das richtige keystores so das die https-client weiß, auf dem Serverzertifikat Vertrauen, und möglicherweise stellt sein eigenes Zertifikat, wenn der server die client-Authentifizierung erfordert.
Das signieren der jar-Datei hat genau nichts mit SSL "peer nicht authentifiziert".
Ohhh!!! Wie kann ich keystores?
Schloss ich diese Frage als Duplikat - siehe die Antworten in dieser Frage, die zeigen, wie Sie es tun.
InformationsquelleAutor Amogh | 2014-05-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Ausnahmen sagen, dass die Verbindung zu server-URL ist nicht von authentifizierten client. Um dieses Problem zu beheben, müssen wir importieren server das öffentliche Zertifikat in
jre
auf denen die java-Anwendung ist runnering auf Zertifikat importieren gehen Sie folgendermaßen vor:Als pro @Duncan (Kommentar) ich bin in der Lage, zu importieren .cer-Datei in der JVM durch Bezugnahme Dieser Link ... ich brüllte den Befehl importieren .cer in cacerts
Danach habe ich eingegeben "y", um das Zertifikat
InformationsquelleAutor Amogh