Javascript 如何为在Express中运行的应用程序配置SSL证书?
我正在尝试配置我创建的Express服务器,以传递SSL证书并从http转到https 我阅读了Express文档,但找不到解决方案。他们向我提出了一些建议,比如让我们加密,但它不支持Node.js。我不知道我是否应该修改hosts文件,我已经修改了该文件以运行应用程序,或者我必须做什么。我看到了一个表单,但它只在Unix系统上工作。我展示了我配置服务器文件的方式,以防他们能帮助我,我花了三天时间寻找方法,但没有成功。我看到的那些不支持Node.js。多谢各位 我编辑问题: 很抱歉没有包括更多细节,问题是我的应用程序不在生产环境中,我的域是临时的:michaelgram.test。我认为有了它,Lets Encrypt不会授予我证书。我不知道还能做什么。问题是应用程序是本地托管的,在我的计算机上 我再次编辑: 请原谅,忘了说我的目的是为一个应用程序创建证书,在这个应用程序中,您可以注册到Facebook,并尝试了我的同事提供的方法,但由于新的Facebook政策,它没有起作用。 如果您有其他想法,那么我的域将是michaelgram.test 谢谢你,并原谅给你带来的不便,因为你没有做好这个问题Javascript 如何为在Express中运行的应用程序配置SSL证书?,javascript,node.js,express,https,Javascript,Node.js,Express,Https,我正在尝试配置我创建的Express服务器,以传递SSL证书并从http转到https 我阅读了Express文档,但找不到解决方案。他们向我提出了一些建议,比如让我们加密,但它不支持Node.js。我不知道我是否应该修改hosts文件,我已经修改了该文件以运行应用程序,或者我必须做什么。我看到了一个表单,但它只在Unix系统上工作。我展示了我配置服务器文件的方式,以防他们能帮助我,我花了三天时间寻找方法,但没有成功。我看到的那些不支持Node.js。多谢各位 我编辑问题: 很抱歉没有包括更多细
let express=require('express');
设aws=require('aws-sdk');
设multer=require('multer');
设multerS3=require('multer-s3');
设ext=require('file-extension');
让cookieParser=require('cookie-parser');
让bodyParser=require('body-parser');
设expressSession=require('express-session');
let passport=require(‘passport’);
设michaelgram=require('michaelgram-client');
让auth=require(“./auth”)
让config=require('./config');
让端口=process.env.port | | 5050;
让client=michaelgram.createClient(config.client);
设s3=新的aws.s3({
accessKeyId:config.aws.accessKey,
secretAccessKey:config.aws.secretKey
});
让存储=multerS3({
s3:s3,
桶:“迈克尔格拉姆”,
acl:“公共读取”,
元数据:函数(请求、文件、cb){
cb(空,{fieldName:file.fieldName})
},
键:功能(请求、文件、cb){
cb(null,+Date.now()+'.+ext(file.originalname))
}
});
让upload=multer({storage:storage}).single('picture');
设app=express();
use(bodyParser.json());
use(bodyParser.urlencoded({extended:false}));
使用(cookieParser());
应用程序使用(expressSession)({
secret:config.secret,
resave:false,
saveUninitialized:false
}))
app.use(passport.initialize())
app.use(passport.session())
应用程序集(“查看引擎”、“帕格”);
应用程序使用(express.static('public'));
passport.use(auth.localStrategy);
passport.use(auth.facebookStrategy);
passport.deserializeUser(auth.deserializeUser);
passport.serializeUser(auth.serializeUser);
app.get('/',函数(req,res){
res.render('index',{title:'Michaelgram'});
})
app.get('/signup',函数(req,res){
res.render('index',{title:'Michaelgram-Signup'});
})
应用程序发布('/signup',功能(请求、回复){
让user=req.body;
client.saveUser(用户,函数(err,usr){
if(err)返回res.status(500).send(err.message)
调试器
res.redirect('/signin');
});
});
app.get('/signin',函数(req,res){
res.render('index',{title:'Michaelgram-Signin'});
})
app.post('/login',passport.authenticate('local'){
successRedirect:“/”,
failureRedirect:“/signin”
}));
app.get('/auth/facebook',passport.authenticate('facebook',{scope:'email'}));
app.get('/auth/facebook/callback',passport.authenticate('facebook'){
successRedirect:“/”,
failureRedirect:“/signin”
}));
函数ensureAuth(req、res、next){
如果(请求isAuthenticated()){
返回下一个()
}
res.status(401).send({error:'notauthenticated'})
}
app.get('/api/pictures',函数(req、res、next){
让图片=[];
setTimeout(函数(){
res.send(图片);
}, 2000)
});
app.post('/api/pictures',ensureAuth,函数(req,res){
上传(请求、恢复、功能(错误){
如果(错误){
返回res.send(500,“上传文件错误”);
}
res.send(“文件上传”);
})
})
app.get('/api/user/:username',(req,res)=>{
常量用户={
用户名:“miguelito”,
阿凡达:'',
图片:[]
}
res.send(用户);
})
app.get('/:username',函数(req,res){
res.render('index',{title:`Michaelgram-${req.params.username}`});
})
app.get('/:username/:id',函数(req,res){
res.render('index',{title:`Michaelgram-${req.params.username}`});
})
应用程序侦听(端口、功能(错误){
如果返回console.log('Hubo un error'),则返回process.exit(1);
console.log('Michaelgram escuchando en el-puerto 5050');
})
一旦您准备好了钥匙和crt,您只需参照它们启动应用程序。这些名称只是使用letsencrypt的默认命名
var options = {
key: fs.readFileSync(__dirname + '/components/ssl/privkey.pem'),
cert: fs.readFileSync(__dirname + '/components/ssl/fullchain.pem')
};
server = require('https').createServer(options, app);
使用TLS保护web服务器时,需要两件事:
- 私钥
- 服务器证书
var https = require('https');
var fs = require('fs');
var express = require('express');
var options = {
key: fs.readFileSync('/etc/apache2/ssl/server.key'),
cert: fs.readFileSync('/etc/apache2/ssl/server.crt'),
requestCert: false,
rejectUnauthorized: false
};
var app = express();
var server = https.createServer(options, app).listen(3000, function(){
console.log("server started at port 3000");
});
请参阅:
,但它不支持Node.js
?!