我正在使用WS websocket个 node 库.js.目前我正在运行ws-server.现在我想通过使用安全连接来保护这个连接,也就是通过实现wss协议和库支持TLS连接.我搜索了一下,找到了plain to secure: wsswss with self signed certificate.

两者都不是很详细,关于第二个链接的文章描述了具有自签名证书的wss.我想知道的是,仅仅创建自签名证书并部署到我的生产环境就足够了,还是需要像创建HTTPS服务器那样购买证书?

推荐答案

Your question #1

如何创建安全的(TLS/SSL)Websocket服务器?

我在网上搜索如何使WebSocket在安全连接上工作的指南时发现了你的问题.由于这是在搜索结果中出现的,有可能我不是唯一一个出现在这个页面上的人.为了给每个人(包括future 的我)节省一些时间,我们来看看.

问题

我有一个简单的 node .js websocket服务器,由einaros/ws供电,通过不安全的连接监听端口80.必须切换到安全连接.

解决方案

基本上,你提供的第二个链接涵盖了我需要知道的一切.以下是我花了一些时间才弄明白的几件事:

  • 为此,我需要.pem个文件,但我从证书Provider 那里得到的只是一个简单的.crt/.cert文件,在生成最初的.csr请求后,我还得到了一个私有的.key文件.所以here's how to convert(creditslf):

     openssl rsa -in server.key -text > private.pem
     openssl x509 -inform PEM -in server.crt > public.pem
    
  • 我不清楚如何使用安全连接.由于我试图将SSL添加到现有的应用程序中,所以我希望避免重新进行操作.事实证明,我所要做的就是用https实例的引用替换{port:80}参数(有关如何初始化它的更多信息,请参阅链接).

     var ws = require('ws').Server;
     var wss = new ws({
         server: httpsServer
     });
    

工具书类

Your question #2

我想知道的是,仅仅创建自签名证书并部署到我的生产环境就足够了,还是需要像创建HTTPS服务器那样购买证书?

对于公共服务器,您需要来自广受信任的CA的证书.使用免费Let's Encrypt或任何已知发行人的付费证书.这将确保你的用户不会收到任何浏览器安全警告,或者在不知道出了什么问题的情况下离开.

对于您的本地开发环境,或者所有连接的客户端都是已知的,并且在您的控制下,您可以创建自己的CA,请参见deliciousbrains.com/ssl-certificate-authority-for-local-https-development.

Node.js相关问答推荐

GraphQL MongoDB Mongoose填充字段未获取多个类别

当FastifyJS向客户端发送响应时,apache 不会将其发送给他

如何在 JavaScript 中显示多维数组中使用的一维数组的变量名?

如何在 node /快速服务器上配置 mongoDB

使用 NPM 三个 mocha+typescript 进行测试

在快速路由中使用 axios 会在数据字段中返回特殊字符而不是 json

Axios GET 返回不可读的响应

如何删除mongodb中嵌套数组中所有出现的数组元素

如何解决这个关于 TaskRunner 的 Node/Express 代码问题?

Mongodb聚合传递一个匹配的数组和一个不匹配的数组

错误:无法检测到网络(event="noNetwork",code=NETWORK_ERROR,version=providers/5.6.8)

在 Express.js 中迭代子文档数组

与 NPM 一起安装时找不到 Express 模块

使用 Socket.io 将客户端连接到服务器

React Native ios build:找不到 node

如何为 node.js 服务器分配域名?

如何在 Node.js 中使用 chmod

需要 node-gyp 的 npm install 在 Windows 上失败

从 zip 文件在 AWS 中创建 lambda 函数

Selenium WebDriver 等到元素显示