Самоподписанный сертификат для Node Web Server внутри Electron - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть приложение Electron с веб-сервером узла, где наш веб-сайт может POST и получать информацию из приложения Electron. Проблема заключается в том, что веб-сайт поддерживает SSL (HTTPS), а приложение Electron - HTTP. Конечно, это вызывает исключение смешанного содержимого.

Пример текущего веб-сервера Electron

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);

Как создать сервер HTTPS в Node.js?

Моя проблема в том, что я не уверен, как генерировать действительные сертификаты для 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

1 Ответ

0 голосов
/ 24 апреля 2019

Похоже, вам не нужно генерировать файлы .cert и .pem с каждого компьютера, на котором он установлен. Вы можете просто создать их один раз, а затем упаковать сертификаты вместе в приложении Electron.

Однако вы можете заметить, что вам нужно будет зайти на страницу один раз https://localhost:3000 и принять / игнорировать и предупреждения, которые браузер выдает вам заранее, иначе это не будет работать правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...