我正在使用node.js的WS websocket库。目前,我正在运行ws服务器。现在,我想通过使用安全连接(即通过实现wss协议(protocol)以及库支持TLS连接)来保护此连接。我搜索了一下,找到了这个plain to secure: wss和这个wss with self signed certificate。
两者都不是很详细,第二个链接上的文章介绍了带有自签名证书的wss。我想知道的是,仅创建自签名证书并部署到我的生产环境是否就足够了?还是我需要像创建HTTPS服务器时一样购买证书?
最佳答案
您的问题#1
在网上搜索有关如何使网络套接字在安全连接上工作的指南时,我发现了您的问题。由于这出现在搜索结果中,因此我不是唯一一个最终显示在此页面上的人。为了节省大家(包括将来的我)一些时间,请继续。
问题
我有一个简单的node.js websocket服务器,由einaros/ws驱动,通过不安全的连接监听端口80。不得不将其切换到安全连接。
解决方案
基本上,您提供的第二个链接涵盖了我需要了解的几乎所有内容。但是,以下几件事让我花了一些时间来弄清楚:
.pem
文件,但是我从证书提供者那里得到的只是一个简单的.crt
/.cert
文件,在生成初始.key
请求之后,我还拥有一个私有(private)的.csr
。所以here's how to convert(credit到slf): openssl rsa -in server.key -text > private.pem
openssl x509 -inform PEM -in server.crt > public.pem
ws
使用安全连接。由于我试图将SSL添加到现有应用程序中,因此我希望避免重复执行操作。原来,我要做的就是用对{port:80}
实例的引用替换https
参数(有关如何初始化它的更多信息,请参见链接)。 var ws = require('ws').Server;
var wss = new ws({
server: httpsServer
});
引用
您的问题2
对于公共(public)服务器,您将需要来自广受信任的CA的证书。使用免费的Let's Encrypt或任何已知发行者的付费证书。这将确保您的用户不会收到任何浏览器安全警告,甚至不会知道什么地方出了错就不会离开。
对于您的本地开发环境,或者在所有已知连接的客户端处于您的控制之下的地方,您可以创建自己的CA,请参阅deliciousbrains.com/ssl-certificate-authority-for-local-https-development。
关于node.js - 如何创建安全的(TLS/SSL)Websocket服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31338927/