Hi Leute,
für eine kleine Chat-Anwendung verwende ich folgende Librarys:
Server:
Socket.IO
Client:
https://github.com/nkzawa/socket.io-client.java
An sich klappt das ganze auch ohne Probleme aber um das ganze ein bisschen sicher zu gestalten würde ich die Verbindung gerne über https laufen lassen.
Für meine Testumgebung habe ich natürlich kein gültitiges Zertifikat und ich bin im internet auf folgenden Code gestoßen:
Soweit ich weiß sollte das eigentlich alle Zertifikate ohne Prüfung aktzeptieren.
Bei meinen http-Requests z.B. für den Login klappt das auch aber wenn ich den Context an SocketIO übergebe wird keine Verbindung mehr hergestellt... Hier mal mein Code:
Ich erhalte hier nie die ausgabe "CONNECTED", ohne https klappt es ohne Probleme....
Kann mir einer sagen was ich falsch mache ?
Grüße
arpi
für eine kleine Chat-Anwendung verwende ich folgende Librarys:
Server:
Socket.IO
Client:
https://github.com/nkzawa/socket.io-client.java
An sich klappt das ganze auch ohne Probleme aber um das ganze ein bisschen sicher zu gestalten würde ich die Verbindung gerne über https laufen lassen.
Für meine Testumgebung habe ich natürlich kein gültitiges Zertifikat und ich bin im internet auf folgenden Code gestoßen:
Java:
public SSLContext createSSLContext() throws GeneralSecurityException, IOException {
Security.insertProviderAt(new BouncyCastleProvider(), 1);
try {
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
return sc;
} catch (Exception exception) {
exception.printStackTrace();
}
return null;
}
Soweit ich weiß sollte das eigentlich alle Zertifikate ohne Prüfung aktzeptieren.
Bei meinen http-Requests z.B. für den Login klappt das auch aber wenn ich den Context an SocketIO übergebe wird keine Verbindung mehr hergestellt... Hier mal mein Code:
Java:
IO.Options options = new IO.Options();
try {
options.sslContext = CutsomSSLContext.createSSLContext();
} catch (GeneralSecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
options.secure = true;
socket = IO.socket(Globals.HOST + "/?token=" + token);
socket.on(socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.d("SOCKETIO", "CONNECTED");
startMessageListener(socket);
}
});
Kann mir einer sagen was ich falsch mache ?
Grüße
arpi