HTTPS SSL Verbindung im HttpClient (Zertifikat einbinden)

  • Antworten:18
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 137

02.05.2015, 13:16:52 via Website

Hallo zusammen,

Ich hoffe ihr könnt mir weiterhelfen.

Ich habe einen Strato Server auf dem ich jetzt SSL aktiviert habe. Das funktioniert im Browser auch super und er bekommt ein Zertifikat zugewiesen.

Dieses Zertifikat habe ich mir exportiert (*.cer Datei) und in eine BKS umgewandelt.

Kann ich diese BKS jetzt als Trusted Zertifikat in meinen HttpClient einbinden um damit per HTTPS auf meinen Server zuzugreifen? (Beispielsweise auf eine PHP mit POST oder GET).

Und wenn ja wie?

Vielen Dank im Vorraus!

:)

Antworten
  • Forum-Beiträge: 137

02.05.2015, 17:15:44 via Website

Okay danke.

Bei der Nutzung von Openssl bekomme ich:

No peer Certificate available

No Client Certificate CA names sent

Antworten
  • Forum-Beiträge: 72

08.05.2015, 13:02:30 via Website

Wenn du SSL nutzt, wird dem Client das SSL Certificate eig. vom Server übergeben.
Auch der HTTPClient sollte eine Möglichkeit besitzten, dies zu nutzen, wieso willst du das SSL Certificate so in der App speichern?

Antworten
  • Forum-Beiträge: 72

08.05.2015, 15:42:05 via Website

Hast du einen Stacktrace?
Du musst ssl im HTTPClient erst konfigurieren, damit er das Certifacte herunterlädt.

Antworten
  • Forum-Beiträge: 72

08.05.2015, 15:48:30 via Website

Markus B.

Hi,
Stack Overflow fragen:
http://stackoverflow.com/a/6378872/1773371

Sollte exakt das sein was du suchst.

Gruß,
Markus

Ich glaube wenn du die Lösung von Stackoverflow verwendest, müsste es gehen.

    KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
    trustStore.load(null, null);

    MySSLSocketFactory sf = new MySSLSocketFactory(trustStore);
    sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

    HttpParams params = new BasicHttpParams();
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

    SchemeRegistry registry = new SchemeRegistry();
    registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
    registry.register(new Scheme("https", sf, 443));

    ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);

    HttpClient client = new DefaultHttpClient(ccm, params);

Du akzeptierst dabei mit sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER) alle SSL Certificates und prüfst vorher nicht, ob dieses Certificate auch gültig ist.

Antworten
  • Forum-Beiträge: 72

08.05.2015, 19:28:13 via Website

Du kannst auch eine Verifizierung verwenden, müsstest diese aber wahrscheinlich selbst implementieren.
Jeder Browser hat seine eigene Verifizierung, deshalb unterstützt der eine Browser manchmal auch ein SSL Certificate und ein anderer nicht.

Antworten
  • Forum-Beiträge: 137

08.05.2015, 19:32:08 via Website

Ich habe den Code von oben versuch

05-08 19:29:39.519: E/error(10672): FEHLERBESCHREIBUNGjavax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x762e04b0: Failure in SSL library, usually a protocol error
05-08 19:29:39.519: E/error(10672): error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 unrecognized name (external/openssl/ssl/s23_clnt.c:741 0x74936d74:0x00000000)

Antworten
  • Forum-Beiträge: 72

09.05.2015, 12:48:03 via Website

Dann stimmt etwas mit dem Protocoll oder der library nicht.
SSL23_GET_SERVER_HELLO:tlsv1 unrecognized name deutet wahrscheinlich darauf hin, dass irgendeine Angabe in dem Certificate fehlt.

Antworten
  • Forum-Beiträge: 72

09.05.2015, 13:04:35 via Website

Hast du das Certificate gekauft oder selbst erstellt?
Kannst du dieses mal hochladen?

Antworten
  • Forum-Beiträge: 137

09.05.2015, 13:17:03 via Website

Ich habe einen STRATO Server auf dem ich SSL aktiviert habe und via httpclient POSTS auf den Server ausführe. Und das soll via SSL passieren

Antworten
  • Forum-Beiträge: 72

09.05.2015, 13:24:16 via Website

Du hast also noch gar kein SSL Certificate hinzugefügt?
Wenn du das SSL Certificate dort noch nicht hochgeladen oder direkt dort gekauft hast, dann kann der Server keine SSL Verschlüsselung nutzen.

Antworten
  • Forum-Beiträge: 137

09.05.2015, 13:29:23 via Website

Gekauft hab ich das Zertifikat und auch zu meiner Website hinzugefügt und aktiviert. Wie kann ich das prüfen wie der Status aktuell ist?

Antworten

Empfohlene Artikel