我有一个带有节点Web服务器的Electron应用程序,我们的网站可以在该Web站点上发布和获取Electron应用程序中的信息。问题是该网站已启用SSL(HTTPS),但Electron应用程序是HTTP。当然,这会导致混合内容异常。
当前的Electron Web Server示例
http.createServer(function(req,res){
var pathname=url.parse(req.url).pathname;
var query = url.parse(req.url).query;
//enable CORS
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Request-Method', '*');
res.setHeader('Access-Control-Allow-Headers', '*');
switch(pathname){
case '/post':
createPrintWindow(query);
res.end('{"status":"200 OK"}');
break;
default:
res.end('{"status":"running","currentVersion":"'+app.getVersion()+'","isUpdateAvailable":"false"}');
break;
}
}).listen(3000);
我发现我可以很轻松地启用SSL:
var express = require('express');
var https = require('https');
var http = require('http');
var fs = require('fs');
// This line is from the Node.js HTTPS documentation.
var options = {
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.cert')
};
// Create a service (the app object is just a callback).
var app = express();
// Create an HTTP service.
http.createServer(app).listen(80);
// Create an HTTPS service identical to the HTTP service.
https.createServer(options, app).listen(443);
How to create an HTTPS server in Node.js?
我的问题是,我不确定在安装过程中如何为win32和64x生成实际的证书(我正在使用Electronic-buider)。我知道我可以执行openSSL,但是大多数未安装openSSL的计算机。
我什至找到了它,但是我没有看到任何文档或用法示例。 https://github.com/electron-userland/electron-builder/blob/master/packages/electron-builder/src/cli/create-self-signed-cert.ts
答案 0 :(得分:0)
似乎不需要从安装它的每台计算机上生成.cert
和.pem
文件。您只需创建一次即可,然后将证书打包到Electron应用程序中。
但是,您可能需要注意,https://localhost:3000
必须访问该页面一次,并接受/忽略浏览器事先给您的警告,否则它将无法正常工作。