I have a node.js https server using non-self-signed certificates. I believe they are from godaddy, not sure though. My employer only provided me with key and cert files.
Server:
var fs = require('fs') , server = require('https').createServer({ key: fs.readFileSync( __dirname + "/key.pem" ), cert: fs.readFileSync(__dirname + "/cert.pem" ) }) , WebSocketServer = require('ws').Server , webSocketServer = new WebSocketServer({ server: server, }) , port = 8080; server.listen(port, function(){ console.log('Listening on ' + server.address().port) }); Client:
var webSocket = new WebSocket('wss://my.website.com:8080'); This code works as expected on desktop chrome, safari, and firefox. The client is able to connect to the the secure websocket. However, trying it on iOS 9.3.1 Safari gives me the following error:
The operation couldn't be completed.(OSStatus error -9807.)
OSStatus showed me that this is caused by an invalid certificate chain. Unfortunately, here is where my knowledge of SSL begins to fade. After some additional googling, I tried multiple combinations of the following options accepted by https.createServer():
secureProtocol: "SSLv3_method", rejectUnauthorized: false, ciphers: 'ECDHE-RSA-AES256-SHA:AES256-SHA:RC4-SHA:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM', honorCipherOrder: true, requestCert: false None of them have worked thus far. I have also seen the ca option (certificate authority) but not only do I not know where I would find this file, all examples online suggest that this is only used with self-signed certs?
Any help is greatly appreciated, thanks!
*.website.comis underGo Daddy Secure Certificate Authority - G2which is underGo Daddy Root Certificate Authority - G2. All three of these listSHA-256 with RSA EncryptionunderIssuer Name > Signature AlgorithmandRSA EncryptionunderPublic Key Info > Algorithm. I should also mention that this same cert is used for a completely separate rails server that serves the client code that then tries to connect to the websocket. The page loads fine, but the connection to the websocket fails.