¿Cómo puedo configurar SignalR en Android Studio para ignorar los problemas de SSL para el desarrollo?
Tengo un sitio que usa SignalR. El código a continuación (tomado del ejemplo de SignalR-Chat) se conecta al sitio de producción con su SSL verificado. Utiliza los frascos de SignalR / java-client.
Pero para el desarrollo, necesito conectarme al proyecto VS que está alojado en mi computadora con IIS Express y un SSL local que mi Nexus no puede y no debe verificar, y obtengo los siguientes errores:
08-17 16:13:55.540 2153-6860//System.out﹕ HubConnection: Error executing request: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
08-17 16:13:55.541 2153-6859//System.err﹕ java.util.concurrent.ExecutionException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
Ya abrí los puertos relevantes en el firewall y puedo acceder a las solicitudes de IIS Express con Rest.
Aquí está el código:
public class gtSockets {
public static final String URL = myUrl + "/signalr/hubs/";
HubConnection connection;
HubProxy hub;
DemonThread thread;
private Context context;
private static gtSockets gtSockets;
private gtSockets(Context context) {
this.context = context;
initConnection();
}
public static gtSockets newInstance(Context context) {
if(gtSockets == null) {
gtSockets = new gtSockets(context);
}
return gtSockets;
}
private void initConnection() {
Platform.loadPlatformComponent(new AndroidPlatformComponent());
connection = new HubConnection(URL, null, true, new Logger() {
@Override
public void log(String s, LogLevel logLevel) {
}
});
hub = connection.createHubProxy("myHub");
hub.on("broadcastMessage", new SubscriptionHandler2<String, String>() {
@Override
public void run(String msgType, String msg) {
}
}, String.class,String.class);
thread = new DemonThread();
thread.start();
}
public void destroy() {
if(thread != null) {
thread.cancel();
thread = null;
}
if(connection != null) {
connection.stop();
}
}
private class MessageSendTask extends AsyncTask<String,String,String> {
@Override
protected String doInBackground(String... params) {
hub.invoke("send","directory",params[1]);
return "ok";
}
}
private class DemonThread extends Thread {
boolean isRunning = true;
@Override
public void run() {
SignalRFuture<Void> awaitConnection = connection.start();
while(isRunning) {
try {
awaitConnection.get();
} catch (InterruptedException | ExecutionException e){
e.printStackTrace();
}
}
awaitConnection.cancel();
}
public void cancel() {
if(isRunning) {
isRunning = false;
}
}
}
}
La pregunta es ¿cómo puedo configurar SignalR para ignorar los problemas de SSL para el desarrollo?
Gracias.