如何创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议你从可信赖的机构购买证书。 这将确保您的用户不会得到任何浏览器安全警告,或只是不知道出了什么问题而离开。