使用 TLS (SSL) 从闪存 v11+ 连接到 nodejs
Connection from flash v11+ to to nodejs using TLS (SSL)
我最近开始为自己构建的mmorpg im创建一个服务器,我使用node js作为服务器语言。我在网上搜索了一下,发现使用TLS是进行身份验证和通过TCP/IP创建安全会话的方法。一切正常,我创建了一个证书并使用我找到的网络上的一些命令使用 openssl 自签名,它给了我可用于服务器的密钥和证书。我尝试与openssl连接,一切正常。js 使用的证书节点采用 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制作的。所以我尝试使用我相信闪存播放器版本 10+ 中的 SecureSocket 进行连接。问题是闪存使用 DER X.509 证书格式。所以我转换了.PEM 文件转换为 .DER文件使用openssl并将其加载到闪存中。当我尝试连接到我的服务器(两者都在本地主机上,想提及以防它更改某些内容)时,我可以看到我的服务器上的连接尝试,但它会立即关闭连接。
这是闪存的错误:
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套接字的情况下做同样的事情,它就像一个魅力。
在我的闪存代码中,我使用了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
{
}
}
我试图在节点js周围查找有关加载相同类型证书(以DER格式)的信息,但节点js文档说它只接受PEM格式。并且闪存只接受DER格式。而且我想在每台机器上使用diff格式不能很好地协同工作,这可能是我的连接断开的原因。
反正从现在开始,我不知道该去哪里。一定有办法在节点 js 中使用 DER 格式。我一直在四处寻找,什么也找不到。
以前有人解决过这个问题吗?
我终于做到了...哦,我的天哪,4天的痛苦。有很多棘手的部分,但那是我的证书设置不正确,我没有 dns,我必须将通用名称设置为 localhost......哦,:(另外,我不知道addbinarychain是否会正常,但是是的,它可以工作,我尝试过没有并且没有建立连接。无论如何,除了允许证书和闪光津贴之外,可能做到了。在尝试在线真实证书之前,请花点时间...猜猜一些问题会再次发生,哈哈
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 如何使用密码检测网络中的状态连接
- 如何处理node.js节点mongodb中的连接和查询队列
- Rails-JQueryUIAutcomplete和AJAX不工作,可以't连接到数据库
- Twilio-显示所有连接参与者的远程参与者视频
- 操作放置在画布上的元素之间的连接
- TypeError:_this.store.getState在使用来自Redux的连接时不是函数
- jQuery UI可排序-多连接列表拖动
- 如何使用offer/answer交换来自两个对等连接的流
- 在Qualtrics中,介绍如何动态连接两个滑块
- 使用优化器在慢速连接上加载main.js时需要js超时
- 如果连接类型为none,则Javascript Function Only警报
- GTK百老汇支持同时连接
- 在node.js中写入ECONNRESET错误和套接字连接检查
- 如何将所有JS文件连接到一个文件夹中
- 在cordova android应用程序中连接数据库
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 如何通过安全的https连接在javascript中使用基于soap xml的Web服务
- SignalR客户端启动连接时如何设置用户
- 我们如何在互联网断开连接或用户关闭选项卡/浏览器时调用注销servlet