node + express 实现https

本文介绍如何使用OpenSSL生成私钥、CSR证书签名及最终的证书文件,并展示了一个使用Express框架的Node.js应用如何配置HTTPS服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生成证书

#生成私钥key文件
openssl genrsa 1024 > /path/to/private.pem
//
#通过私钥文件生成CSR证书签名
openssl req -new -key /path/to/private.pem -out csr.pem
//
#通过私钥文件和CSR证书签名生成证书文件
openssl x509 -req -days 365 -in csr.pem -signkey /path/to/private.pem -out /path/to/file.crt

本代码用express cli生成 , 更改里面的app.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var index = require('./routes/index');
var smallApp = require('./routes/smallApp');
var users = require('./routes/users'); 

var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

var fs = require('fs');
var http = require('http');
var https = require('https');
var privateKey  = fs.readFileSync('../public/path/to/private.pem', 'utf8');
var certificate = fs.readFileSync('../public/path/to/file.crt', 'utf8');
var credentials = {key: privateKey, cert: certificate};

var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);
var PORT = 80;
var SSLPORT = 443;

// httpServer.listen(PORT, '172.17.53.173' ,function() {
//     console.log('HTTP Server is running on: http://localhost:%s', PORT);
// });
httpsServer.listen(SSLPORT, '172.17.53.173' , function() {
    console.log('HTTPS Server is running on: https://localhost:%s', SSLPORT);
});





// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', smallApp );
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

smallApp.js

var express = require('express');
var router = express.Router();


/* GET home page. */
router.get('/', function(req, res, next) {
  if( req.protocol == "https" ){

    res.render('smallApp/index' ,{ protocol : 'https'} );
  }else if( req.protocol == "http" ){
    res.render('smallApp/index' ,{ protocol : 'http'} );
  }
});


module.exports = router;

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值