【问题标题】:Socket.io (Browser to NodeJS) self-signed CA no connection with HTTP, internal serverSocket.io(浏览器到 NodeJS)自签名 CA 没有与 HTTP 的连接,内部服务器
【发布时间】:2019-04-17 21:13:22
【问题描述】:

我正在尝试使用 socket.io 从网站连接到 NodeJS 服务器。两者都托管在本地网络中的同一台机器上。

数据的加密至关重要,因为有些数据非常敏感。

所以我为此网站实施了一个自签名 SSL 证书,并设置了套接字以使用它。它工作正常,唯一的问题是 Chrome 告诉该网站不安全(因为它不是官方证书)。因此,我为该网站重新启用了 HTTP 连接,同时仍对套接字连接使用 SSL 加密。

这也可以正常工作,但前提是用户首先访问了 HTTPS 网站并接受了证书。

手动接受证书、安装证书或忽略浏览器的“不安全”警告都不是可接受的解决方案(企业应用程序)。

有没有办法让套接字自动接受证书? 也欢迎任何其他解决方案,它不必是 SSL,只需加密流量(套接字就足够了)。

前端代码:

socketSSL = io.connect('https://192.168.178.10:14444');

NodeJS 代码:

var https = require('https');
var express = require('express');
var app = express();
var options = { key: privateKey, cert: certificate };
server = https.createServer(options, app);
server.listen(dstPort);

【问题讨论】:

标签: javascript node.js browser socket.io ssl-certificate


【解决方案1】:

在网络浏览器上,您不能自动绕过自签名证书的安全检查。

如果您需要保护数据,那么只需在发送方和接收方之间使用“aes-256”加密和解密即可。

但无论哪种方式,加密密钥都会暴露在网络上。

因此,如果它是用于开发/调试目的,那么没关系。但是,如果您要进入生产环境,那么强烈建议您使用由有效 CA 签署的有效证书。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 2018-03-14
    • 2016-11-06
    相关资源
    最近更新 更多