Создание HTTP-сервера с Node.js и Express

1
                   var https = require('https'),
        fs = require('fs'),
        express = require('express'),
        app = express();
        // cookieParser = require('cookie-parser'),
        // path = require('path'),
        // bodyParser = require('body-parser'),
        // https = require('http');


    var key = fs.readFileSync('encryption/star_massifsolutions_com.key');
    var cert = fs.readFileSync('encryption/massif_wildcard.crt');
    var ca = fs.readFileSync('encryption/DigiCertCA.crt');

    var httpsOptions = {
        key: key,
        cert: cert,
        ca: ca
    };


    https.createServer(httpsOptions, app).listen(8000, function () {
        console.log("server running at https://IP_ADDRESS:8000/")
    });
    app.get('/', function (req, res) {
        res.header('Content-type', 'text/html');
        return res.end('Hello World!');
    });

    // app.set('view', __dirname + '/views');
    // app.use(bodyParser.urlencoded({
    //     extended: true
    // }));
    // app.use(bodyParser.json({
    //     limit: '500mb'
    // }));


    // app.use('/', express.static(path.join(__dirname, '/dist/basic-structure')));

    // app.get('/**', function (req, res, next) {
    //     console.log(req, res, next);
    //     res.sendFile('index.html', {
    //         root: __dirname + '/dist/basic-structure'
    //     });
    // });

    console.log("listening to port 8000");

Здесь я написал мир привет только для проверки моего кода. В этом случае код работает, но не защищен. Я хочу, чтобы мое соединение было безопасным. В этом случае он показывает устаревший http и показывает сертификат error.but и работает безотказно.

Опять же, если я заменил часть hello world на комментированную часть, как показано в моем коде, она даже не запускается с устаревшим http.if, я заменяю https на http, который он запускает. Мне нужна помощь в работе с моим отредактированным кодом. Если я пропущу некоторые моменты, пожалуйста, дайте мне знать.

Короче, этот код работает небезопасно, я хочу сделать его безопасным

  • 0
    какую ошибку вы получаете?
  • 0
    не так ли с ssl вам также нужен порт в ваших httpsOptions. что-то вроде этого. var httpsOptions = {host: 'localhost', порт: 443, путь: '/ any / path', метод: 'GET', заголовки: {'Accept': 'application / json'}, ключ: ключ, cert: cert , ca: ca};
Показать ещё 2 комментария
Теги:
ssl-certificate

2 ответа

1

Не уверен, что я хорошо понимаю, но если "код не работает" вы имеете в виду ваше приложение, то, похоже, ваш второй код просто попробуйте запустить сервер, но не ваше приложение

Насколько я понимаю, вы определяете свое приложение как выражение, но вы его не используете, поэтому оно не будет доставлено

Поэтому я предполагаю, что вам нужно будет использовать команду https server с приложением и его настройками, чтобы связать все вместе (https и app), как было предложено @lx1412

Я бы попробовал это:

var express = require('express'),
cookieParser = require('cookie-parser'),
path = require('path'),
bodyParser = require('body-parser'),
// https = require('http'),
https = require('https'),
app = express(),
fs = require('fs');


var key = fs.readFileSync('encryption/star_massifsolutions_com.key');
var cert = fs.readFileSync( 'encryption/massif_wildcard.crt' );
var ca = fs.readFileSync( 'encryption/DigiCertCA.crt' );

var httpsOptions = {
key: key,
cert: cert,
ca: ca
};

app.set('view',__dirname+'/views');
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json({limit: '500mb'}));


app.use('/', express.static(path.join(__dirname,'/dist/basic-structure')));

app.get('/**', function(req, res, next) { 
    console.log(req, res, next); 
    res.sendFile('index.html', { root: __dirname + 
'/dist/basic-structure' }); 
});


// https.createServer(httpsOptions, (req, res) => {
// console.log("code works");
// res.writeHead(200);
// res.end('hello world\n');
// }).listen(8000);

https.createServer(httpsOptions, app).listen(8000, function () {
    console.log("code works");
    res.writeHead(200);
    res.end('hello world\n');
});

РЕДАКТИРОВАТЬ:

Можете ли вы просто попробовать это и посмотреть, как он себя ведет? Кроме того, можете ли вы предоставить устаревшую ошибку http и сертификата?

app.get('/', function (req, res) {
   res.send('Hello World!');
});
https.createServer(httpsOptions, app).listen(8000, function () {
   console.log("server running at https://IP_ADDRESS:8000/")
});
  • 0
    я немного отредактировал вопросы, если вам не ясно, вы можете пройти через это снова, пожалуйста
  • 0
    @ Abhiz отредактированный ответ
Показать ещё 5 комментариев
0

Это просто.

var express = require('express'),
    cookieParser = require('cookie-parser'),
    path = require('path'),
    bodyParser = require('body-parser'),
    http = require('http'),
    app = express();

app.set('view',__dirname+'/views');
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json({limit: '500mb'}));


app.use('/', express.static(path.join(__dirname,'/dist/basic-structure')));

app.get('/**', function(req, res, next) { 
    console.log(req, res, next); 
    res.sendFile('index.html', { root: __dirname + 
'/dist/basic-structure' }); 
});

//Start Server
//app.listen(3004, function(){
//    console.log('>>>3004')
//});
//complete your code here
https.createServer(httpsOptions,app).listen(8000);
  • 0
    ssl сертификаты не включены в ваш ответ. Я хочу знать, почему работает второй набор кода с сертификатами ssl.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню