繁体   English   中英

ERR_SSL_PROTOCOL_ERROR - Socket.io 和 Node.js

[英]ERR_SSL_PROTOCOL_ERROR - Socket.io and Node.js

我正在使用 Node.js 服务器并使用 Socket.io 通过 Socket 管理连接,但我遇到了 SSL 证书问题。 很多用户可以正常访问 Node.js 服务器,但其他用户无法访问,他们收到此错误: 用户错误

当我设置我的服务器时,我有这个 SSL 选项:

var privateKey = fs.readFileSync('/root/cert/key.key', 'utf8').toString();
var certificate = fs.readFileSync('/root/cert/cert.crt', 'utf8').toString();
var ca = fs.readFileSync('/root/cert/ca.crt').toString();
var credentials = { key: privateKey, cert: certificate, ca: ca };
var app = express();
var httpsServer = https.createServer(credentials, app);
var io = require('socket.io')(httpsServer);

有人知道如何解决这个错误吗? 问题是只有部分用户收到此错误。

好吧,据我所知,您缺少 https 服务器的侦听端口。

var httpsServer = https.createServer(credentials, app).listen(<port>);

我对ERR_SSL_PROTOCOL_ERROR有很多麻烦,我必须给你我的解决方案

NodeJS 服务器16.15.0"socket.io": "2.4.1" (我假设它适用于其他 NodeJS 版本)

    const path = require("path");
    const fs = require("fs");
    const io = require("socket.io")();

    const folder = path.join(__dirname, "ssl");
    const privateKey = fs.readFileSync(path.join(folder, "server_key.pem"), "utf8");
    const certificate = fs.readFileSync(path.join(folder, "server_cert.pem"), "utf8");

    const optSsl = {
      key: privateKey,
      cert: certificate,
      ca: [certificate],
      requestCert: false, // put true if you want a client certificate, tested and it works
      rejectUnauthorized: false,
    };

    const server = require("https");
    const webServer = server.createServer(optSsl);

    webServer.listen(8025); // port number
    io.listen(webServer);

    io.on("connection", (client) => {
        /*...*/
    });

    /*...*/

带有“ngx-socket-io”的Angular 10.2.7 "ngx-socket-io": "3.2.0" (我认为它也适用于其他Angular版本)

import { Socket, SocketIoConfig } from 'ngx-socket-io';

/*...*/

socket: Socket;
socketConfig: SocketIoConfig;

socketConfig = {
      url: "https://myserver:8025", 
      options: {},
    };

socket = new Socket(socketConfig);
socket.connect();

看起来您的 apache2 配置不正确。 检查您是否启用了配置文件:

a2ensite default-ssl

然后重启服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM