我正在创建一个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中导入了证书和密钥。要求所有人对此提供帮助。 预先感谢。
答案 0 :(得分:0)
您需要将key
和cert
添加到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");
})
谢谢。