当前位置: 首页 > news >正文

WebSocket接入SSL证书

目录

  • 碎碎念
  • 解决方法
    • 创建 HTTPS WebSocket 服务器
    • 创建系统服务
    • 启动服务

碎碎念

在访问网站时,使用 HTTPS 非常重要。HTTPS 协议不仅可以确保数据传输的安全性,还可以防止中间人攻击和数据篡改等安全问题。任何没有 SSL 证书的内容都可能会被拒绝访问。因此,在配置 WebSocket 服务器时,我们也需要确保其支持 HTTPS。

在这种情况下,直接运行 HOST=0.0.0.0 PORT=9000 npx y-websocket 将无法正常工作,因为它不支持 HTTPS。接下来,我们将介绍如何通过创建一个支持 HTTPS 的 WebSocket 服务器来解决这个问题。

解决方法

创建 HTTPS WebSocket 服务器

首先,我们需要创建一个文件 secure-server.js,该文件将用于配置 HTTPS 和 WebSocket 服务器:

const fs = require('fs');
const https = require('https');
const WebSocket = require('ws');
const { setupWSConnection } = require('y-websocket/bin/utils');

const port = process.env.PORT || 9000;
const host = process.env.HOST || '0.0.0.0';
const cert = process.env.SSL_CERT || '/path/to/cert.pem';
const key = process.env.SSL_KEY || '/path/to/key.pem';
// 也可以是 
// const cert = process.env.SSL_CERT || '/path/to/cert.pem';
// const key = process.env.SSL_KEY || '/path/to/cert.key';


const server = https.createServer({
  cert: fs.readFileSync(cert),
  key: fs.readFileSync(key)
});

const wss = new WebSocket.Server({ server });

wss.on('connection', (conn, req) => setupWSConnection(conn, req, { docName: req.url.slice(1).split('?')[0] }));

server.listen(port, host, () => {
  console.log(`https://${host}:${port}`);
});

在上述代码中,我们使用 https 模块创建了一个 HTTPS 服务器,并使用 ws 模块创建了一个 WebSocket 服务器。通过读取 SSL 证书和密钥文件,我们确保了服务器的安全性。

创建系统服务

为了确保我们的 WebSocket 服务器能够在系统启动时自动运行,我们需要创建一个 systemd 服务文件 y-websocket.service

[Unit]
Description=Y-WebSocket Server Service
After=network.target

[Service]
User=root
Group=root
WorkingDirectory=/path/to/WorkingDirectory
Environment="HOST=0.0.0.0" "PORT=9000" "SSL_CERT=/path/to/cert.pem" "SSL_KEY=/path/to/key.pem"
; 或者是 Environment="HOST=0.0.0.0" "PORT=9000" "SSL_CERT=/path/to/cert.pem" "SSL_KEY=/path/to/cert.key"
ExecStart=/usr/bin/node /path/to/secure-server.js
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=y-websocket-server

[Install]
WantedBy=multi-user.target

这个服务文件定义了 WebSocket 服务器的启动和运行方式。通过设置环境变量,我们可以灵活地配置服务器的主机、端口和 SSL 证书路径。

启动服务

最后,我们需要运行以下指令来启动并启用服务:

sudo systemctl daemon-reload
sudo systemctl restart y-websocket.service
sudo systemctl enable y-websocket.service

通过以上步骤,我们创建了一个支持 HTTPS 的 WebSocket 服务器,并确保其在系统启动时自动运行。这不仅提高了服务器的安全性,还简化了服务器的管理和维护。

相关文章:

  • Java面试黄金宝典11
  • 数据库锁机制
  • 《Oracle DBA入门实战:十大高频问题详解与避坑指南》
  • 智能飞鸟监测 守护高压线安全
  • 使用 Go 构建 MCP Server
  • 【yolo11自定义实例分割训练集教程】
  • 2.2.盈亏平衡分析
  • webstorm调试模式报错:Cannot detect a launch configuration
  • 快速入手:Nacos融合SpringCloud成为注册配置中心
  • MySQL 入门大全:常用函数
  • Flink启动任务
  • LVS的 NAT 模式实现 3 台RS的轮询访问
  • 【IntelliJ IDEA快速绑定Maven配置指南】
  • 2025年3月23日坚持写原创的第24天
  • 华为HCIE网络工程师培训选机构攻略
  • 算法题(105):小猫爬山
  • C++ 哈希计数器
  • 《论语别裁》第02章 为政(03)星辰知多少
  • 红帽认证工程师价值
  • 补码详细分析
  • 以开放促发展,以发展促开放,浙江加快建设高能级开放强省
  • 罗马教皇利奥十四世正式任职
  • 当“小铁人”遇上青浦,看00后如何玩转长三角铁三
  • 一旅客因上错车阻挡车门关闭 ,株洲西高铁站发布通报
  • 霍步刚任辽宁沈阳市委书记
  • 年在沪纳税350亿人民币,这些全球头部企业表示“对上海承诺不会变”