'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();
}
Schauen Sie hier: stackoverflow.com/questions/4210254/...
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

Schreibe einen Kommentar