
手动搭建一个https服务器,并颁发证书
发布日期:2021-05-07 23:09:07
浏览次数:14
分类:精选文章
本文共 2087 字,大约阅读时间需要 6 分钟。
1.下载安装openssl(用于生成秘钥颁发证书)
mac自带
window:
2.生成CA证书,CA钥和CA公钥
生成CA私钥,并用des3算法进行加密:openssl genrsa -des3 -out ca-pri-key.pem 1024
生成CA公钥:openssl req -new -key ca-pri-key.pem -out ca-pub-key.pem
生成CA证书:openssl x509 -req -in ca-pub-key.pem -signkey ca-pri-key.pem -out ca-cert.crt
3.生成服务器公钥私钥
生成服服务私钥:openssl genrsa -out server-key.pem 1024
生成服务器公钥:openssl req -new -key server-key.pem -out server-scr.pem
4.机构颁发证书
openssl x509 -req -CA ca-cert.crt -CAkey ca-pri-key.pem -CAcreateserial -in server-scr.pem -out server-cert.crt
5.https配置
const http = require("https");const url = require("url");const path = require("path");const fs = require("fs");/** * 返回文件状态 * @param {*} filename * @returns */async function getStat(filename) { try { return await fs.promises.stat(filename); } catch { return null; }}/** * 得到要处理的文件内容 */async function getFileContent(url1) { const urlObj = url.parse(url1); let filename; //要处理的文件路径 filename = path.resolve(__dirname, "public", urlObj.pathname.substr(1));//得到请求文件路径 let stat = await getStat(filename); //得到文件状态 if (!stat) { //文件不存在 return null; } else if (stat.isDirectory()) { //文件是一个目录 filename = path.resolve( __dirname, "public", urlObj.pathname.substr(1), "index.html" ); stat = await getStat(filename); //重新获取index.html文件状态 if (!stat) { return null; } else { return await fs.promises.readFile(filename); //返回文件 } } else { return await fs.promises.readFile(filename); //不是目录返回文件 }}const server = http.createServer({ key:fs.readFileSync(path.resolve(__dirname,"./server-key.pem")), cert:fs.readFileSync(path.resolve(__dirname,"./server-cert.crt"))},async (req, reps) => { const url = req.url; const content = await getFileContent(url); if (content) { reps.write(content); }else{ reps.statusCode = 404; reps.write("Not Found"); } reps.end();})server.listen(443);server.on("listening", () => { console.log("监听端口443");})
6.访问
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月04日 22时02分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
设计模式之组合模式
2019-03-04
(Python学习笔记):字典
2019-03-04
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
2019-03-04
leetcode 14 最长公共前缀
2019-03-04
做做Java
2019-03-04
C++并发与多线程(一)
2019-03-04
计算机网络子网划分错题集
2019-03-04
java一些基本程序
2019-03-04
vue-依赖-点击复制
2019-03-04
LeetCode 116填充每个节点的下一个右侧结点指针
2019-03-04
2021-4-28【PTA】【L2-1 包装机 (25 分)】
2019-03-04
Arduino mega2560+MPU6050利用加速度值控制舵机
2019-03-04
紫书——蛇形填数
2019-03-04
A Guide to Node.js Logging
2019-03-04
webwxbatchgetcontact一个神奇的接口
2019-03-04
Edge浏览器:你的的内核我的芯
2019-03-04
【考研英语-基础-简单句】简单句的核心变化_谓语情态
2019-03-04
Jetson AGX Xavier硬件自启动
2019-03-04
眼睛跟随鼠标转动的小黄人 html+css+js
2019-03-04
统计字符数
2019-03-04