Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Node.js和Express创建HTTPs服务器_Javascript_Node.js_Ssl Certificate - Fatal编程技术网

Javascript 使用Node.js和Express创建HTTPs服务器

Javascript 使用Node.js和Express创建HTTPs服务器,javascript,node.js,ssl-certificate,Javascript,Node.js,Ssl Certificate,在这里,我编写hello world只是为了测试我的代码。因此,在本例中,代码可以运行,但不安全。我希望我的连接是安全的。在这种情况下,它显示不推荐的http并显示证书错误。但是,请不要卷曲运行 同样,如果我用注释部分替换hello world部分(如代码中所示),它甚至不会使用不推荐的http运行。如果我用http替换https,它将运行。我需要运行我编辑的代码的帮助。如果我遗漏了一些要点,请让我知道 简而言之,这段代码运行起来很不安全,我想让它更安全,因为它很简单

在这里,我编写hello world只是为了测试我的代码。因此,在本例中,代码可以运行,但不安全。我希望我的连接是安全的。在这种情况下,它显示不推荐的http并显示证书错误。但是,请不要卷曲运行

同样,如果我用注释部分替换hello world部分(如代码中所示),它甚至不会使用不推荐的http运行。如果我用http替换https,它将运行。我需要运行我编辑的代码的帮助。如果我遗漏了一些要点,请让我知道

简而言之,这段代码运行起来很不安全,我想让它更安全,因为它很简单

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

不确定我是否理解得很好,但如果“代码未运行”是指你的应用程序,那么你的第二个代码集似乎只是尝试运行服务器,而不是你的应用程序

据我所知,您正在将应用程序定义为express,但您没有使用它,因此不会交付

因此,我的猜测是,您将需要在应用程序及其选项中使用https服务器命令,以便按照@lx1412的建议将所有内容(https和应用程序)链接在一起

我想试试这个:

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);
编辑:

你能简单地尝试一下,看看它是如何工作的吗? 另外,您能提供您不推荐的http和证书错误吗

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

您得到了什么错误?对于ssl,您不也需要httpsOptions中的端口吗。像这样的。var httpsOptions={host:'localhost',port:443,path:'/any/path',method:'GET',headers:{'Accept':'application/json'},key:key,cert:cert,ca:ca};我的候机楼刚被吊死。它无限地运行。没有显示任何错误@MukeshSharma@KhajaMohammed我不明白为什么我应该包括所有这些。ssl证书不包括在您的答案中。我想知道为什么第二组带有ssl证书的代码正在运行。我对问题进行了一些编辑,如果您不清楚,可以重新检查,请注意,我是这样做的。最后是由于证书错误。最后我找到了一条路,很高兴听到它!我可以问一下什么是认证错误,所以你找到了你的方法吗?实际上我仍然不知道为什么会有这个证书错误。我无法找出原因。它说“连接不安全”…是不是因为后端开发人员,我的部分或它的部分缺少了什么?我很难告诉你,但是如果你有一条红色的大警告消息说它不安全,这实际上意味着你的服务器/应用程序是以HTTPS方式交付的,但是证书本身有问题(比如日期/过期)。。此外,如果您能够绕过浏览器安全性(如果与证书相关),您也可以获得线索
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/")
});