当前位置: 首页 > backend >正文

使用Node.js搭建https服务器

一、引言

https是是http的安全版本,在http的基础上通过传输加密和身份认证保证了传输过程中的安全性。可以认为:https = http + tls/ssl。本文讲述使用Node.js搭建https服务器的方法。

二、编译OpenSSL

按照《Openssl在Linux下编译/交叉编译》,编译出OpenSSL的库和可执行文件:

直接执行./openssl会报错,提示找不到动态库,所以得设置环境变量:

设置环境变量。其中,“/home/cjc/source/openssl-3.4.0-alpha1/install/lib64”为我本机编译出来的OpenSSL动态库的路径:

export LD_LIBRARY_PATH=/home/cjc/source/openssl-3.4.0-alpha1/install/lib64:$LD_LIBRARY_PATH

三、 生成公钥/私钥/证书

进入编译出的OpenSSL可执行文件的所在目录。生成传统的 RSA 私钥2048位,输出到rsa_private_key.pem文件:

openssl genrsa -out rsa_private_key.pem 2048

生成 RSA公钥rsa_public_key.pem:

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

生成证书签名请求csr.pem:

openssl req -new -key rsa_private_key.pem -out csr.pem

使用CSR和私钥生成自签名证书cert.pem:

openssl x509 -req -days 365 -in csr.pem -signkey rsa_private_key.pem -out cert.pem

执行上述命令后,可以看到确实生成了公钥、私钥和证书:

四、安装Node.js

按照《Ubuntu下安装Node.js》安装Node.js

五、编写Node.js程序

server.js:

'use strict'var https = require('https');
var fs = require('fs');var options = {key : fs.readFileSync('/home/cjc/source/openssl-3.4.0-alpha1/install/bin/rsa_private_key.pem'),cert : fs.readFileSync('/home/cjc/source/openssl-3.4.0-alpha1/install/bin/cert.pem')
}var app = https.createServer(options ,function(req,res){res.writeHead(200, {'Content-Type':'text/plain'});res.end('Hello World\n');
}).listen(443,'0.0.0.0');console.log('Server running at https://127.0.0.1:443');

上述代码中,options里面的key指定私钥的位置,cert指定自签名证书的位置。

使用node命令执行以上代码:

浏览器输入:https://192.168.0.104/

 192.168.0.104是我htts服务器所在电脑的IP。可以看到htts服务器创建成功了,用浏览器可以访问:

http://www.xdnf.cn/news/3758.html

相关文章:

  • 《Windows 环境下 Qt C++ 项目升级 GCC 版本的完整指南》
  • 如何在WORD WPS中输入英语音标 批量给英语标注音标
  • 【堆】最大堆、最小堆以及GO语言的实现
  • Redis从入门到实战实战篇2
  • 智能家居的OneNet云平台
  • Linux进程间通信(二)之管道1【匿名管道】
  • 【2025软考高级架构师】——数据库系统(10)
  • SpringBoot上传文件到阿里云OSS对象存储
  • 数据赋能(211)——质量管理——数据可验证性原则
  • 【Mytais系列】介绍、核心概念
  • 【浅学】Windows下ffmpeg+nginx+flv将本地视频推流在本地搭建的Web前端页面中播放,超详细步骤
  • C++ 抽象工厂模式详解
  • [Vue]编程式导航
  • C++ 单例模式详解
  • React18组件通信与插槽
  • 数模竞赛的坑,你踩了几个?
  • 源码编译Qt StateMachine
  • 如何在 CentOS 7 命令行连接 Wi-Fi?如何在 Linux 命令行连接 Wi-Fi?
  • 力扣面试150题--二叉树的最大深度
  • 最大子段和 Java
  • 【计算机网络-应用层】解析HTTP会话保持:Cookie与Session的原理与实践
  • 学习黑客网络安全法
  • 26考研 | 王道 | 计算机网络 | 第三章 数据链路层
  • 第一章 初识SpringMVC
  • RUST变量学习笔记
  • 命令模式(Command Pattern)详解
  • 使用 Lux Algo + ATR Zones + IIIX 的黄金剥头皮策略(2025 年更新)
  • 抽象工厂模式(Abstract Factory Pattern)
  • c++26新功能——gcc15.1的支持
  • 第1章 Python 解释器安装(Anaconda/Pyenv 推荐)