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

mac制作ssl证书|生成自签名证书,nodejs+express在mac上搭建https+wss(websocket)服务器

注意

mac 自带 openssl 所以没必要像 windows 一样先安装 openssl,直接生成即可

生成 ssl/自签名 证书

生成 key

# 生成rsa私钥,des3算法,server_ssl.key是秘钥文件名 1024位强度
openssl genrsa -des3 -out server_ssl.key 1024

让输入两次密码,随便,但是两次得是一样的

移除密码

# 这里执行完上一步的密码即已经被移除了
openssl rsa -in server_ssl.key -out server_ssl.key

生成 csr

# -new 执行生成新的证书请求
# -key 指定密钥
openssl req -new -key server_ssl.key -out server_ssl.csr
  • Country Name (2 letter code) [国家]:CN

  • State or Province Name (full name) [省份]:Beijing

  • Locality Name (eg, city) [城市]:Beijing

  • Organization Name (eg, company) [组织/公司]:zgp

  • Organizational Unit Name (eg, section) [部门/单位]:zgp

  • Common Name (eg, fully qualified host name) [域名]:test.zgp.cn

  • Email Address [邮箱]:demo@outlook.com

  • Please enter the following ‘extra’ attributes
    to be sent with your certificate request
    A challenge password [上一步已经移除,直接回车即可]:

生成证书

# x509 根据现有的证书请求生成自签名根证书
# -days 设置证书的有效天数
# -in 指定输入证书请求文件
openssl x509 -req -days 365 -in server_ssl.csr -signkey server_ssl.key -out server_ssl.crt

执行过程截图

在这里插入图片描述

创建 nodejs 的 https/wss 服务

创建 express 项目就不多说了,自行查看:nodejs+express自动生成项目
express 文档地址https://www.expressjs.com.cn/starter/generator.html

修改的 bin/www 文件

#!/usr/bin/env node/*** Module dependencies.*/var app = require('../app');
var debug = require('debug')('express-io:server');
const fs = require('fs');
const path = require('path');
// var http = require('http');
var https = require('https');
// 引入 socket.io
const { Server } = require('socket.io')
/*** Get port from environment and store in Express.*/var port = normalizePort(process.env.PORT || '3001');
app.set('port', port);/*** Create HTTPS server.* 加上 ssl 证书*/
const httpsOption = {key: fs.readFileSync(path.resolve(__dirname, "../certificate/server_ssl.key")),cert: fs.readFileSync(path.resolve(__dirname, "../certificate/server_ssl.crt"))
}
var server = https.createServer(httpsOption, app);
// 创建 websocket 服务器代码
const io = new Server(server, {cors: {origin: "*"}});// 客户端连接成功会输出连接 id 以及 客户端传惨 queryio.on('connection', (socket)=>{console.log(socket.id)console.log(socket.handshake.query)})
/*** Listen on provided port, on all network interfaces.*/server.listen(port, () => {console.log(`server listening on port: ${port}`)
});
server.on('error', onError);
server.on('listening', onListening);/*** Normalize a port into a number, string, or false.*/function normalizePort(val) {var port = parseInt(val, 10);if (isNaN(port)) {// named pipereturn val;}if (port >= 0) {// port numberreturn port;}return false;
}/*** Event listener for HTTP server "error" event.*/function onError(error) {if (error.syscall !== 'listen') {throw error;}var bind = typeof port === 'string'? 'Pipe ' + port: 'Port ' + port;// handle specific listen errors with friendly messagesswitch (error.code) {case 'EACCES':console.error(bind + ' requires elevated privileges');process.exit(1);break;case 'EADDRINUSE':console.error(bind + ' is already in use');process.exit(1);break;default:throw error;}
}/*** Event listener for HTTP server "listening" event.*/function onListening() {var addr = server.address();var bind = typeof addr === 'string'? 'pipe ' + addr: 'port ' + addr.port;debug('Listening on ' + bind);
}

创建个客户端测试

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://cdn.socket.io/4.4.1/socket.io.min.js" integrity="sha384-fKnu0iswBIqkjxrhQCTZ7qlLHOFEgNkRmK2vaO/LbTZSXdJfAu6ewRBdwHPhBo/H" crossorigin="anonymous"></script><title>Document</title>
</head>
<body><script>(()=>{const socket = io('wss://localhost:3001', {autoConnect: false,query: {openid: 'sajfklsadjflkdsa'}})socket.connect()socket.on("connect", ()=>{console.log(socket.id)})socket.io.on('close', ()=>{console.log('close');})})()</script>
</body>
</html>

在这里插入图片描述

在这里插入图片描述

相关文章:

mac制作ssl证书|生成自签名证书,nodejs+express在mac上搭建https+wss(websocket)服务器

注意 mac 自带 openssl 所以没必要像 windows 一样先安装 openssl&#xff0c;直接生成即可 生成 ssl/自签名 证书 生成 key # 生成rsa私钥&#xff0c;des3算法&#xff0c;server_ssl.key是秘钥文件名 1024位强度 openssl genrsa -des3 -out server_ssl.key 1024让输入两…...

Unix System V BSD POSIX 究竟是什么?

学习Linux系统,很多同学对这些单词概念很模糊、一脸懵逼! 黄老师觉得,了解了历史,才会真正明白这些单词的含义,坐稳、黄老师发车了!!! 首先介绍一下什么是Unix? UNIX(非复用信息和计算机服务,英语:Uniplexed Information and Computing Service,UnICS)取“UNI…...

数据集学习笔记(六):目标检测和图像分割标注软件介绍和使用,并转换成YOLO系列可使用的数据集格式

文章目录 一、目标检测1.1 labelImg1.2 介绍1.3 安装1.4 使用1.5 转换1.6 验证 二、图像分割2.1 labelme2.2 介绍2.3 安装2.4 使用2.5 转换2.6 验证 一、目标检测 1.1 labelImg 1.2 介绍 labelImg是一个开源的图像标注工具&#xff0c;用于创建图像标注数据集。它提供了一个…...

【高阶数据结构】红黑树 {概念及性质;红黑树的结构;红黑树的实现;红黑树插入操作详细解释;红黑树的验证}

红黑树 一、红黑树的概念 红黑树&#xff08;Red Black Tree&#xff09; 是一种自平衡二叉查找树&#xff0c;在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有…...

获取对象占用内存

添加依赖 <dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-core</artifactId><version>4.0.0</version> </dependency>添加vm启动参数 --add-opens java.base/java.langALL-UNNAMED --add-opens java.ba…...

mysql UUID 作为主键的问题

UUID 在MySQL中&#xff0c;可以使用UUID()函数来生成一个新的UUID值。该函数的返回值是一个字符串类型&#xff0c;表示一个32位的十六进制数字&#xff0c;其中包含4个连字符“-”&#xff0c;例如&#xff1a;“6ccd780c-baba-1026-9564-0040f4311e29”。 varchar(32) 32*4…...

2023高教社杯全国大学生数学建模竞赛选题建议

如下为C君的2023高教社杯全国大学生数学建模竞赛&#xff08;国赛&#xff09;选题建议&#xff0c; 提示&#xff1a;DS C君认为的难度&#xff1a;C<B<A&#xff0c;开放度&#xff1a;B<A<C 。 D、E题推荐选E题&#xff0c;后续会直接更新E论文和思路&#xf…...

分类预测 | MATLAB实现GRNN广义回归神经网络多特征分类预测

分类预测 | MATLAB实现GRNN广义回归神经网络多特征分类预测 目录 分类预测 | MATLAB实现GRNN广义回归神经网络多特征分类预测分类效果基本介绍模型描述预测过程程序设计参考资料分类效果 基本介绍 MATLAB实现GRNN广义回归神经网络多特...

低功耗窗帘电机解决方案成功应用并通过 Matter 1.1 认证

Nordic Semiconductor官方宣布与HooRii Tech&#xff08;和众科技&#xff09;携手合作&#xff0c;基于 Nordic nRF52840 芯片平台打造的 HRN71模组&#xff0c;成功赋能低功耗窗帘电机品牌发布Matter产品。低功耗窗帘电机获得 Matter 1.1 认证意味着它具有与其他 Matter 认证…...

如何修复老照片?老照片修复翻新的方法

老旧照片&#xff0c;尤其是黑白照片&#xff0c;往往因为年代久远、保存方式不当等原因而出现褪色、污损、划痕等问题&#xff0c;会比较难以修复&#xff0c;就算是技术精湛的专业修复师&#xff0c;也是需要投入极大时间精力的&#xff0c;效果也是不可预料的。 修复老照片…...

MySQL:区分大小写

查看MySQL版本 show variables; 1、查看 MySQL 当前的区分大小写设置&#xff1a; SHOW VARIABLES LIKE lower_case_table_names; 或者 show Variables like %table_names 2、更改大小写敏感设置&#xff1a; 在 MySQL 5.7 中&#xff0c;更改大小写敏感设置要求修改配置文件 …...

刷题笔记19——优势洗牌和去重保持字典序

摆出无比亲密的态度&#xff0c;装模作样地与对方套近乎&#xff0c;频繁地联系对方。这都说明他们并不相信自己得到了对方的信赖&#xff0c;若是互相信赖&#xff0c;便不会依赖亲密的感觉。在外人看来&#xff0c;反而显得冷淡。 ——尼采《人性的&#xff0c;太人性的》 ha…...

星际争霸之小霸王之小蜜蜂(十一)--杀杀杀

系列文章目录 星际争霸之小霸王之小蜜蜂&#xff08;十&#xff09;--鼠道 星际争霸之小霸王之小蜜蜂&#xff08;九&#xff09;--狂鼠之灾 星际争霸之小霸王之小蜜蜂&#xff08;八&#xff09;--蓝皮鼠和大脸猫 星际争霸之小霸王之小蜜蜂&#xff08;七&#xff09;--消失…...

腾讯云免费SSL证书申请流程_每年免费50个HTTPS证书

2023腾讯云免费SSL证书申请流程&#xff0c;一个腾讯云账号可以申请50张免费SSL证书&#xff0c;免费SSL证书为DV证书&#xff0c;仅支持单一域名&#xff0c;申请腾讯云免费SSL证书3分钟即可申请成功&#xff0c;免费SSL证书品牌为TrustAsia亚洲诚信&#xff0c;腾讯云百科分享…...

C#上位机开发目录

C#上位机序列1: 多线程&#xff08;线程同步&#xff0c;事件触发&#xff0c;信号量&#xff0c;互斥锁&#xff0c;共享内存&#xff0c;消息队列&#xff09; C#上位机序列2: 同步异步(async、await) C#上位机序列3: 流程控制&#xff08;串行&#xff0c;并行&#xff0c…...

网络通信基础

IP地址 使用ip地址来描述网络上一个设备所在的位置 端口号 区分一个主机上不同的程序,一个网络程序,在启动的时候,都需要绑定一个或者多个端口号,后续的通信过程都需要依赖端口号来进行展开的,mysql默认的端口号是3306 协议 描述了网络通信传输的数据的含义,表示一种约定,…...

框架分析(10)-SQLAlchemy

框架分析&#xff08;10&#xff09;-SQLAlchemy 专栏介绍SQLAlchemy特性分析ORM支持数据库适配器事务支持查询构建器数据库连接池事务管理器数据库迁移特性总结 优缺点优点强大的对象关系映射支持多种数据库灵活的查询语言自动管理数据库连接支持事务管理易于扩展和定制 缺点学…...

Linux/Windows中根据端口号关闭进程及关闭Java进程

目录 Linux 根据端口号关闭进程 关闭Java服务进程 Windows 根据端口号关闭进程 Linux 根据端口号关闭进程 第一步&#xff1a;根据端口号查询进程PID&#xff0c;可使用如下命令 netstat -anp | grep 8088&#xff08;以8088端口号为例&#xff09; 第二步&#xff1a;…...

基于springboot实现了后台定时统计数据报表并将数据生成excel文件作为附件,然后通过邮件发送通知的功能

概述 本例子基于springboot实现了后台定时统计数据报表并将数据生成excel文件作为附件&#xff0c;然后通过邮件发送通知的功能。 详细 一、准备工作 1、首先注册两个邮箱&#xff0c;一个发送邮箱&#xff0c;一个接收邮箱。 2、发送邮箱开启IMAP/SMTP/POP3服务&#xff0c…...

opencv 提取选中区域内指定hsv颜色的水印

基于《QT 插件化图像算法研究平台》做的功能插件。提取选中区域内指定hsv颜色的水印。 《QT 插件化图像算法研究平台》有个HSV COLOR PICK功能&#xff0c;可以很直观、方便地分析出水印 的hsv颜色&#xff0c;比如, 蓝色&#xff1a;100,180,0,255,100,255。 然后利用 opencv …...

如何突破信息壁垒?Bypass Paywalls Clean让优质内容触手可及

如何突破信息壁垒&#xff1f;Bypass Paywalls Clean让优质内容触手可及 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代&#xff0c;学术论文、深度报道和专业分…...

nlp_structbert_sentence-similarity_chinese-large赋能智能客服:精准匹配用户问题与知识库

nlp_structbert_sentence-similarity_chinese-large赋能智能客服&#xff1a;精准匹配用户问题与知识库 你有没有遇到过这样的情况&#xff1f;在某个App里找客服&#xff0c;输入了一大段问题&#xff0c;结果机器人回复的答案要么是“牛头不对马嘴”&#xff0c;要么就是让你…...

RexUniNLU案例集:制造业设备报修场景中,‘异响’‘漏油’‘停机’故障标签识别效果

RexUniNLU案例集&#xff1a;制造业设备报修场景中&#xff0c;‘异响’‘漏油’‘停机’故障标签识别效果 1. 引言&#xff1a;当设备“说话”时&#xff0c;我们如何听懂&#xff1f; 想象一下这个场景&#xff1a;在一条繁忙的生产线上&#xff0c;一台关键设备突然发出“…...

Windows下用MSYS2编译axel多线程下载工具的保姆级教程(附常见错误解决方案)

Windows下MSYS2编译axel多线程下载工具全指南 如果你厌倦了商业下载工具的臃肿和限制&#xff0c;又对Python多线程下载的稳定性不满&#xff0c;那么编译一个原生的axel多线程下载工具可能是最佳选择。本文将带你从零开始在Windows环境下&#xff0c;通过MSYS2完整编译axel&a…...

若依框架多数据源实战:如何用@DataSource注解轻松切换MySQL主从库

若依框架多数据源实战&#xff1a;用DataSource注解实现MySQL主从库智能切换 当系统流量逐渐攀升&#xff0c;数据库的读写压力开始显现时&#xff0c;很多开发者都会面临一个关键决策&#xff1a;如何在保证数据一致性的前提下&#xff0c;有效分散数据库负载&#xff1f;若依…...

BMAD 开发者的日常如果你正在用

BMAD 开发者的日常如果你正在用 BMAD 方法论做开发&#xff0c;这套流程一定很熟悉&#xff1a;/bmad-bmm-create-story 1.1 # 创建故事 /bmad-bmm-dev-story 1.1 # 开发实现 /bmad-bmm-qa-automate 1.1 # 运行测试 /bmad-bmm-code-review 1.1 # 代码审查 # 发现 …...

通过爱毕业AI的智能改写功能,五个方法助你快速降低论文重复率

嘿&#xff0c;大家好&#xff01;我是AI菌。今天咱们来聊聊一个让无数学生头疼的问题&#xff1a;论文重复率飙到30%以上怎么办&#xff1f;别慌&#xff0c;我这就分享5个实用降重技巧&#xff0c;帮你一次搞定&#xff0c;轻松压到合格线以下。这些方法都是我亲身试验过的&a…...

DDR5信号完整性解析:JESD79-5标准下的AC/DC输入测量关键指标

1. DDR5信号完整性的核心挑战 DDR5作为新一代内存标准&#xff0c;将数据传输速率推向了前所未有的高度。但随之而来的信号完整性问题&#xff0c;却让不少硬件工程师头疼不已。想象一下&#xff0c;当数据速率突破6400MT/s时&#xff0c;信号在传输线上就像是在走钢丝&#xf…...

别再傻傻用远程桌面了!手把手教你用华为服务器自带的KVM工具(附初始IP和密码)

华为服务器KVM工具实战指南&#xff1a;解锁高效运维新姿势 第一次接触华为服务器时&#xff0c;我和大多数运维新手一样&#xff0c;本能地打开远程桌面连接工具&#xff0c;输入IP地址准备登录。直到某次机房网络故障&#xff0c;我才发现华为早已在服务器中内置了一把"…...

老旧Mac升级指南:OpenCore Legacy Patcher实现Monterey系统适配

老旧Mac升级指南&#xff1a;OpenCore Legacy Patcher实现Monterey系统适配 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着macOS系统不断迭代&#xff0c;许多经典Ma…...