使Node js应用https安全

时间:2018-08-08 04:51:32

标签: node.js express https blockchain

我正在创建一个chaincode项目,其中nodejs正在使用chaincoe smartcontract。 我的项目结构包括index.js-swagger规范,app.js-消费者swagger规范以及bin / www-其中定义了http规范。 我已经使用基本身份验证定义了http,并且可以正常工作。为了使所有服务https安全,我在Linux机器上下载了open ssl并生成了证书和私钥。 (https://www.linuxhelp.com/how-to-install-and-update-openssl-on-ubuntu-16-04/

我在bin / www.js中对https部分进行了更改:

#!/usr/bin/env node

var app = require('../app');
var fs = require('fs');
var http = require('http');
var https = require('https');

require("dotenv").config();
var privateKey = fs.readFileSync('key.pem').toString();
var certificate = fs.readFileSync('cert.pem').toString();
var port = normalizePort(process.env.PORT || '8080');
app.set('port', port);
var hostname = process.env.HOSTNAME;

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

https.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.write('Hello World!');
  res.end();
}).listen(8080);

但是这不起作用。我还已经在mozilla中导入了证书和密钥。要求所有人对此提供帮助。 预先感谢。

2 个答案:

答案 0 :(得分:0)

您需要将keycert添加到createServer函数中。

const options = {
    key: fs.readFileSync('key.pem').toString();
    cert: fs.readFileSync('cert.pem').toString();
}

https
.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
})
.listen(443, function(){
    console.log("Server listening on localhost:443");
});

现在,正如@aditi在评论中所说,createServer中的回调是一个请求处理程序。这意味着它将在发生request事件时触发。请求事件主要由HTTP请求服务器触发。因此,如果您打开localhost:443,它将显示"hello world"文本。

如果要在服务器启动(列出)时控制台记录某些内容,则需要在listen函数中添加回调。你做了什么。

答案 1 :(得分:0)

成功了,

我用过

https.createServer(httpsOptions,app)
.listen(port,function(){
  console.log("Inside HTTPS creation");
})

谢谢。