Javascript 在express服务器上启用HTTPS
我试图将我的express服务器配置为使用HTTPS,但遇到了一些问题。我按照文档设置了HTTPS服务器,但仍然遇到一些错误 这是我的app.jsJavascript 在express服务器上启用HTTPS,javascript,node.js,express,https,Javascript,Node.js,Express,Https,我试图将我的express服务器配置为使用HTTPS,但遇到了一些问题。我按照文档设置了HTTPS服务器,但仍然遇到一些错误 这是我的app.js var express=require('express'); var-app=express(); var server=require('https')。createServer(选项,应用程序); var io=require('socket.io')(服务器); var port=process.env.port | 3000; var f
var express=require('express');
var-app=express();
var server=require('https')。createServer(选项,应用程序);
var io=require('socket.io')(服务器);
var port=process.env.port | 3000;
var fs=需要('fs');
变量选项={
key:fs.readFileSync('/test/key.pem'),
证书:fs.readFileSync('/test/cert.pem')
};
侦听(端口、函数(){
console.log('服务器在端口%d侦听',端口);
});代码>试一下,我想你应该有.crt格式的证书。您需要tls模块
var sslOptions = {
key: fs.readFileSync('public/server.key'),
cert: fs.readFileSync('public/server.crt')
};
tls.createServer(sslOptions, function (cleartextStream) {
var cleartextRequest = net.connect({
port: port,
host: serverStr
}, function () {
cleartextStream.pipe(cleartextRequest);
cleartextRequest.pipe(cleartextStream);
});
}).listen(443);
端口是您的http端口。sercerStr是您的服务器地址。IMO,问题不在于密钥的扩展,而在于所使用的ssl配置。使用https
节点模块,为ca、cert和key
提供正确的ssl选项,以启用带express的https
// server/index.js
const express = require('express');
const fse = require('fs-extra');
const helmet = require('helmet');
const https = require('https');
const path = require('path');
// path to cert files
const paths = {
certFile: '/path/to/cert.pem',
chainFile: '/path/to/fullchain.pem',
privateFile: '/path/to/privkey.pem',
};
/* Express implementation (ignore) */
const app = express();
app.use(helmet());
app.use(express.static(path.join(__dirname, '..')));
app.get('/', (request, response) => {
response.sendFile(path.join('index.html'));
});
// setup https
const setupHttps = () => {
const promises = [
fse.readFile(paths.chainFile),
fse.readFile(paths.privateFile),
fse.readFile(paths.certFile),
];
return Promise
.all(promises)
.then(data => {
const [ chainData, privateData, certData ] = data;
const options = {
ca: chainData.toString('utf-8'),
cert: certData.toString('utf-8'),
key: privateData.toString('utf-8'),
};
return https.createServer(
options,
app
).listen(443);
})
.catch(err => console.log(err));
};
return setupHttps();
编辑:我使用http头来提高安全性。在.createServer()
行中使用之前,需要初始化选项
对象。将其移动到createServer()
上方。