簡體   English   中英

iOS Safari無法連接到安全的Websocket,但可在台式機上使用

[英]iOS Safari fails to connect to secure websocket, but works on desktop

我有一個使用自簽名證書的node.js https服務器。 我相信他們來自戈達迪,雖然不確定。 我的雇主僅向我提供了密鑰和證書文件。

服務器:

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) });

客戶:

var webSocket = new WebSocket('wss://my.website.com:8080');

此代碼可以在桌面chrome,safari和firefox上正常工作。 客戶端能夠連接到安全的websocket。 但是,在iOS 9.3.1 Safari上嘗試它會給我以下錯誤:

The operation couldn't be completed.(OSStatus error -9807.)

OSStatus向我顯示這是由無效的證書鏈引起的。 不幸的是,這是我對SSL的了解開始減弱的地方。 經過一些額外的谷歌搜索之后,我嘗試了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

到目前為止,他們都沒有工作。 我也看到過ca選項(證書頒發機構),但我不僅不知道在哪里可以找到此文件,所有在線示例都表明該文件僅與自簽名證書一起使用?

非常感謝任何幫助,謝謝!

以某種方式將nginx放在節點應用程序的前面似乎可以解決此問題。 我能夠很快完成以下配置(從本教程中獲取 ):

server {

    listen 443;
    server_name *.website.com;
    ssl    on;
    ssl_certificate    /etc/ssl/cert.pem;
    ssl_certificate_key    /etc/ssl/key.pem;

    location / {
        proxy_pass https://pr.iv.ate.ip:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

關於為什么它不能僅在節點上運行仍然是一個很大的\\ _(ツ)_ /¯,但是我對ssl的了解(有時通常是服務器配置)仍然受到一定的限制。

我也有這個問題。 節點https + express + socket.io,我的網頁在桌面safari上工作正常,但在移動safari上卻無法正常工作。

停止嘗試之后,我發現問題出在“證書鏈”上。 https://stackoverflow.com/a/20444809/6939828

在將“ ca:chain.cer”注入到https.createServer的選項中之后,我正在使用TWCA的ssl認證,同一頁面的相同代碼僅適用於移動safari。 歡呼!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM