node.js - Electron 内 Node Web 服务器的自签名证书
问题描述
我有一个带有节点 Web 服务器的 Electron 应用程序,我们的网站可以从 Electron 应用程序发布和获取信息。问题是该网站启用了 SSL (HTTPS),但 Electron 应用程序是 HTTP。当然,这会导致混合内容异常。
当前的 Electron Web 服务器示例
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);
我的问题是,我不确定如何在安装过程中生成 win32 和 64x 的实际证书(我使用的是 electron-buider)。我知道我可以做 openSSL,但大多数没有安装 openSSL 的机器。
我什至找到了这个,但我没有看到它的任何文档或使用示例。 https://github.com/electron-userland/electron-builder/blob/master/packages/electron-builder/src/cli/create-self-signed-cert.ts
解决方案
似乎您不需要从安装它的每台计算机生成.cert
和.pem
文件。您可以简单地创建一次,然后将证书打包到 Electron 应用程序中。
但是,您可能需要注意,您需要访问该页面一次https://localhost:3000
并接受/忽略浏览器事先给您的警告,否则它将无法正常工作。
推荐阅读
- electron - 如何用窗口标题中的自定义图标替换电子js默认图标
- python - discord.ext.commands.errors.CommandInvokeError:命令引发异常:AttributeError:“NoneType”对象没有属性“提及”
- html - 使用jquery的导航栏的活动功能不起作用
- sql - 相关子查询 - 在内部查询中分组并重写为窗口函数
- python-3.x - 导入烧瓶应用程序上下文时出现 Python3 错误
- javascript - 组件异常找不到变量:ratingCompleted
- wordpress - 在 api v3 中更改 woocommerce 订单总数
- scala - 我可以在 Rainier 中使用学生 T 分布吗?
- laravel - 为什么 Nginx 不将协议更改为 WebSocket?
- c - (初学者)在 C 中找不到此代码的问题,它为浮点数返回奇怪的值(-nanloat)