如何创build安全(TLS / SSL)Websocket服务器

我正在使用node.js的WS websocket库。 目前我正在运行ws服务器。 现在我想通过使用安全连接来保证这个连接,即通过实现wss协议和库支持TLS连接。 我search了一下,发现这很简单:wss和这个wss用自签名证书 。

两者都不是很详细,第二个链接上的文章用自签名证书描述了wss。 我想知道的是,如果创build自签名证书并将其部署到我的生产环境中,还是需要购买证书,而我们需要在创buildHTTPS服务器时执行该操作?

你的问题#1

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

我在网上search了一个关于如何使websocket在安全连接上工作的指南。 由于这是search结果,所以有可能我不是唯一一个在这个页面上结束的人。 为了拯救每个人(包括未来我)一段时间,在这里。

问题

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

解决scheme

基本上,你提供的第二个链接几乎涵盖了我需要知道的一切。 以下是我花了一些时间弄清楚的一些事情:

  • 我需要这个.pem文件,但是我从证书提供者那里得到的只是一个简单的.crt / .cert文件,而且在生成最初的.csr请求后,我也得到了一个私有的.key 。 所以这里是如何转换 ( 贷款给slf ):

     openssl rsa -in server.key -text > private.pem openssl x509 -inform PEM -in server.crt > public.pem 
  • 我不清楚如何让ws使用安全连接。 由于我试图将SSL添加到现有的应用程序,我想避免重新做的事情。 事实certificate,我所要做的就是将{port:80}参数replace为对https实例的引用(有关如何对其进行初始化的更多信息,请参阅链接)。

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

参考

  • github.com/websockets/ws/blob/master/examples/ssl.js
  • chovy.com/web-development/self-signed-certs-with-secure-websockets-in-node-js

你的问题#2

我想知道的是,如果仅仅创build自签名证书并部署到我的生产环境就足够了,还是需要购买证书,因为我们需要在创buildHTTPS服务器时执行此操作?

强调我的。 是的,我build议你从可信赖的机构购买证书。 这将确保您的用户不会得到任何浏览器安全警告,或只是不知道出了什么问题而离开。