帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
mac制作ssl证书-生成自签名证书,nodejs+express在mac上搭建https+wss(websocket)服务器
发布时间:2024-02-29 19:52:43   分类:帮助文档
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 以及 客户端传惨 query io.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 pipe return val; } if (port >= 0) { // port number return 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 messages switch (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); } 创建个客户端测试 Document
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价