我正在开发一个 Chrome 打包应用程序,它是一个客户端应用程序,通过 TCP 将数据发送到外部 TCP 服务器。
如何确保我连接的套接字使用 TLS?在客户端连接中的什么时候我需要添加参数来启用此功能?证书如何/在哪里存储?我需要手动处理这个问题还是 Chrome 会帮我处理这个问题?
这是我的代码示例:
chrome.app.runtime.onLaunched.addListener(function(launchData){
chrome.sockets.tcp.create({persistent: false, name: 'my_socket'}, function(createInfo) {
var socketId = createInfo.socketId;
chrome.storage.local.set({socketId: socketId}, function(){
chrome.sockets.tcp.connect(socketId, IP_ADDRESS, PORT, function(result){
if (result < 0){
// There was an error.
} else {
chrome.sockets.tcp.setKeepAlive(socketId, true, 60, function(result){
if (result < 0){
// There was an error.
} else {
chrome.sockets.tcp.send(socketId, myData, function(sendInfo){
if (!sendInfo || sendInfo.resultCode < 0){
// There was an error.
} else {
// Data Sent, await response in chrome.sockets.tcp.onReceive
}
});
}
});
}
});
});
});
});
最佳答案
chrome.socket
不提供内置 SSL 支持(但无论如何,请参阅 http://crbug.com/132896 ),您需要在应用程序中添加 SSL 编码/解码。一旦 TCP 连接建立,您就可以开始 SSL 协商(即在 chrome.sockets.tcp.connect 调用您的回调函数之后)。
我最近使用 forge javascript library 向 CIRC 添加了 SSL 支持它在 JS 中实现了 SSL。您可以在此处看到 CIRC 中 chrome 套接字连接的完整包装: https://github.com/flackr/circ/blob/master/package/bin/net/ssl_socket.js
请注意,我实际上并没有添加身份验证,请参阅verify: options.verify || function() { return true }
,但这可以用适当的验证函数替换。
关于javascript - 如何使用Chrome Packaged App确保安全的套接字通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23294792/