javascript - 使用 TLS (SSL) 从 flash v11+ 连接到 nodejs

标签 javascript node.js actionscript-3 ssl ssl-certificate

我最近开始为我自己构建的 mmorpg im 创建一个服务器,我使用 node js 作为服务器语言。我在网上四处搜索,发现使用 TLS 是通过 TCP/IP 进行身份验证和创建安全 session 的方式。一切正常,我创建了一个证书,并使用我在网上找到的一些命令使用 openssl 自签名,它给了我可以在我的服务器上使用的 key 和证书。我尝试连接 openssl 并且一切正常。 js使用的证书 Node 是PEM格式。

那是我正在使用的服务器代码:

var tls = require('tls');
var fs = require('fs');

var options = {
    key: fs.readFileSync(__dirname + '/server.key'),
    cert: fs.readFileSync(__dirname + '/server.crt'),
    //requestCert: true,
   //rejectUnauthorized: false,
};

tls.createServer(options, function(sock) {
    //stuff here
}).listen(PORT, HOST);

现在,我的游戏是用 Flash 制作的。所以我尝试使用 Flash Player 版本 10+ 中的 SecureSocket 进行连接,我相信。问题是闪存使用 DER X.509 证书格式。所以我使用 openssl 将 .PEM 文件转换为 .DER 文件并将其加载到闪存中。当我尝试连接到我的服务器时(它们都在本地主机上,想提一下以防它改变某些东西),我可以在我的服务器上看到连接尝试,但它会立即关闭连接。

这是来自 flash 的错误:

Secure socket supported: true
ioErrorHandler: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2031: Erreur de socket. URL: localhost"]
securityErrorHandler: [SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048: Violation de la sécurité Sandbox : file:///C|/Users/DevilCult/Desktop/Flash%20Game/tcp%20test/Untitled%2D1.swf ne peut pas charger de données à partir de localhost:8089."]

但正如我所说,即使错误提示主机无效,我也能看到连接服务器端。我在没有 TLS 套接字的情况下执行相同的操作,它就像一个魅力。

在我的 flash 代码中,我像这样使用 addBinaryChainBuildingCertificate:

secureSocket.addBinaryChainBuildingCertificate(new key(), true);
secureSocket.connect("localhost", 8089);

这是 key() 类:

package
{
 import flash.utils.ByteArray;

 [Embed(source="server.der", mimeType="application/octet-stream")]
 public class key extends ByteArray
 {
 }
}

我试图查看 node js 以获取有关加载相同类型证书(DER 格式)的信息,但 node js 文档说它只接受 PEM 格式。而flash只接受DER格式。我想在每台机器上使用差异格式不能很好地协同工作,这可能是我的连接断开的原因。

反正从现在开始,我不知道该去哪里。必须有一种方法可以在 Node js 中使用 DER 格式。我一直在四处寻找,但找不到任何东西。

有人遇到过这个问题吗?

最佳答案

我终于做到了……天哪,痛苦了 4 天。有很多棘手的部分,但那是我的证书设置不正确,我里面没有 dns 我必须将通用名称设置为本地主机......哦好吧 :( 另外我不知道 addbinarychain 是否会好起来,但是是的,它的工作原理,我没有尝试过,但没有建立连接。无论如何,除了到处都允许证书和闪存津贴外,我可能还做到了。我会慢慢来,然后再在线尝试真正的证书……我猜会再次发生一些问题哈哈

关于javascript - 使用 TLS (SSL) 从 flash v11+ 连接到 nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35566759/

相关文章:

node.js - Redis on message listener 触发了两次

node.js - 如何将 node.js express 服务器转换为 AWS lambda?

apache-flex - ActionScript 3 Socket 跨域文件帮助

javascript - 在reactjs中使用静态propTypes有什么意义?它能解决任何问题吗?或者它只是一种模式

javascript - 在模板文字中定义函数

javascript - 无法运行 Node JS 部署到 Azure

algorithm - 我的 A* 寻路实现不产生最短路径

flash - AS3 中有更多 HTTP 动词吗?

javascript - typescript -基于另一个数组过滤对象数组

javascript - 通过Javascript中给定的不完整订单数组对对象数组进行排序