2016-11-04 3 views
1

Ich versuche, Websocket zu verwenden, um eine Verbindung zu einem TLS-Server mithilfe von react-native herzustellen. Unten ist mein Code (auf Windows + Android läuft):React-native websocket TLS-Verbindung

var ws = new WebSocket('wss://hub.fingi-staging.com:20020',{ 
    rejectUnauthorized: false 
}); 

ws.onopen =() => { 
    // connection opened 

    ws.send('something'); // send a message 
}; 

ws.onmessage = (e) => { 
    // a message was received 

    console.log('message : ' + e.data); 
}; 

ws.onerror = (e) => { 
    // an error occurred 
    console.log('error:'+e.message); 
}; 

ws.onclose = (e) => { 
    // connection closed 
    console.log('close:'+e.code, e.reason); 
}; 

Es ist jedoch nicht mit: error:java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. Dies liegt daran, dass der Server ein selbstsigniertes Zertifikat verwendet.

Gibt es eine Möglichkeit, das zu beheben?

Antwort

1

Etwas spät antworten, aber hoffentlich kann dies andere Leute in die richtige Richtung weisen.

Ich glaube, der Fehler, den Sie bekommen, deutet darauf hin, dass Sie die Zertifikatskettendatei vermissen, die verwendet wird, um zu überprüfen, ob die Zertifizierungsstelle, die verwendet wurde, um das Zertifikat Ihres Servers zu signieren, gültig ist.

Dies schlägt jedoch normalerweise fehl (ist zumindest problematisch), wenn Sie mit selbstsignierten Zertifikaten arbeiten. Sie können einen Blick auf werfen, wenn Sie Hilfe benötigen, einige selbstsignierte Zertifikate und die entsprechende Zertifikatskette zu generieren. Überprüfen Sie auch, ob Sie die vertrauenswürdigen Zertifizierungsstellen angeben müssen, wenn der Client diese Datei beim Herstellen einer Verbindung als Parameter verwendet.

Ich habe mit der Einrichtung eines sicheren Websocket-Servers mit einem Self-Sign-Zertifikat gekämpft (zu Entwicklungszwecken muss in der Produktion ein entsprechendes Zertifikat/CA verwendet werden), hatte aber nicht viel Erfolg und kehrte zurück TLS-Websocket-Server