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

使用IP自签名SSL证书

最近需要创建WebSocket服务器并使用SSL证书,由于是内网测试,所以需要使用指定IP的自签SSL证书。
其实笔者前面博文
使用nexus3作为Docker镜像仓库
解决nexus3登录x509: certificate has expired or is not yet valid
中有创建过相应的证书,这里再记录一下:

以下命令都在Windows命令行下或者Linux终端下输入运行。

一、生成CA根证书私钥

$ openssl genrsa -out ca.key 2048

二、生成CA证书

$ openssl req -x509 -new -nodes -key ca.key -days 365 -out ca.crt

在这里插入图片描述

如果不想交互输入证书的国家,城市,组织名等等信息,可以在上面的命令加上参数:-subj "/CN=*"

三、生成服务器私钥

与生成CA证书私钥一样:

$ openssl genrsa -out server.key 2048

四、生成服务器证书签名请求文件

证书签名请求文件,即CSR(Certificate Signing Request)文件,这里直接使用参数-subj "/CN=*"跳过交互输入信息:

$ openssl req -new -key server.key -subj "/CN=*" -out server.csr

当然,也可以像前面一样来使用参数-subj "/CN=*",手动输入各信息。

五、使用CA证书生成服务器签名证书

1. 创建辅助文件

为了使用IP进行自签名,需要创建一个辅助文件:

$ echo subjectAltName=IP:192.168.0.8 > extfile.cnf

这样做只能允许一个IP地址,如果需要有多个IP地址,需要编辑extfile.cnf

subjectAltName = @alt_names[alt_names] 
IP.1 = 192.168.0.8
IP.2 = 127.0.0.1

还可以设置DNS:

subjectAltName = @alt_names[alt_names] 
IP.1 = 192.168.0.8
IP.2 = 127.0.0.1
DNS.1 = localhost

2. 生成服务器签名证书

$ openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out server.crt -days 365

六、测试

在服务器中需要使用server.keyserver.crt文件启动https或者wss服务,客户端则需要使用ca.crt证书来连接服务器,这样就可以正常通信了。

下面给出一个JS的wss客户端代码,main.js

const fs = require("fs");
const ca = fs.readFileSync('ca.crt','utf8');
const WebSocket = require("ws");
//const url = "wss://192.168.0.8:8300";
const url = "wss://127.0.0.1:8300";
//const url = "wss://localhost:8300";
const client = new WebSocket(url,{ca: ca}
);client.on("connectFailed", function (error) {console.log("连接失败:", error.toString());
});client.on("error", function (error) {console.log("连接错误:", error.toString());
});client.on("close", function () {console.log("连接关闭");
});client.on("message", function (message) {if (message.type === "utf8") {console.log("接收到消息:", message.utf8Data);}
});client.on("open", function () {console.log("WebSocket 客户端已连接");
});

需要先使用npm安装ws

npm install ws

在这里插入图片描述

如果对你有帮助,欢迎点赞收藏!!!

相关文章:

使用IP自签名SSL证书

最近需要创建WebSocket服务器并使用SSL证书,由于是内网测试,所以需要使用指定IP的自签SSL证书。 其实笔者前面博文 使用nexus3作为Docker镜像仓库 解决nexus3登录x509: certificate has expired or is not yet valid 中有创建过相应的证书,这…...

数据库中的运算符

1.算术运算符 算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加()、减(-)、乘(*)、除(/)和取模(%&…...

定制erp真的很贵吗?

定制ERP真的很贵吗?这个问题,相信很多企业在考虑是否实施ERP系统时,都会纠结。特别是对于一些中小型企业,预算有限,心里总会有个疑问:花大价钱定制一个系统,真的值得吗?其实&#xf…...

Java Integer的数值比较

文章目录 环境问题答案说明解决办法其它总结 环境 Windows 11 专业版Java 21 问题 下面这段代码的运行结果是什么&#xff1f; Integer i1 0;int i2 0;for (int n 0; n < 200; n) {if (i1 ! i2) {System.out.println("i1 " i1 ", i2 " i2);b…...

QGroundControl之5-AppSettings.cc

介绍 应用程序设置 Application Settings &#xff0c;这里看下语言选择功能&#xff0c;它是怎么和json文件关联起来的&#xff0c;刚刚看的时候&#xff0c;很是奇怪这么多的json文件作用。 1.AppSettings.cc 文件怎么和App.SettingsGroup.json关联 在AppSettings.cc文件没…...

Django Fixtures 使用指南:JSON 格式详解

在Django开发中&#xff0c;fixtures是一种非常有用的工具&#xff0c;它们可以帮助我们序列化数据库内容&#xff0c;并在不同的环境或测试中重用这些数据。本文将详细介绍Django fixtures的概念、如何生成和使用JSON格式的fixtures。 什么是Fixtures&#xff1f; Fixtures是…...

单元测试SpringBoot

添加测试专用属性 加载测试专用bean Web环境模拟测试 数据层测试回滚 测试用例数据设定...

邮件营销平台应如何提升外贸开发信的效果?

邮件营销平台在外贸中优势包括高效市场定位、成本效益、增强客户关系、实时反馈优化、全球覆盖及时区优化、环保可持续性。Geeksend邮件营销是强大平台&#xff0c;高效管理&#xff0c;精准销售&#xff0c;把握外贸市场的每一个机遇&#xff0c;助力外贸企业精准定位、简化管…...

绘制折线图遇到问题记录

绘制折线图 主要参考&#xff1a;https://blog.csdn.net/qq_38029916/article/details/121611066 对应代码 import csv import matplotlib.pyplot as plt import pandas as pd import numpy as np plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[font.family] sans…...

python 调Qt C++ 写法配置和坑点

python 示例写法 和调c动态库一样 通过回调函数方式 将python函数注册到c 动态库中 from ctypes import *def DllCall(nParam, nFlag):print(nParam, nFlag)z2 0.6z3 0.4z4 0.0z5 0.3z6 0.5z7 0.8z8 0.3z9 0.9strData str(z2) str(z3) str(z4) str(z5)…...

css设置透明的几种办法

在CSS中&#xff0c;有几种方法可以设置元素的透明度。以下是主要的几种方式&#xff1a; 1. 使用 opacity 属性 定义&#xff1a;opacity 属性用于设置元素的整体透明度&#xff0c;包括其内容和背景。取值范围&#xff1a;取值从0&#xff08;完全透明&#xff09;到1&…...

刷题日志【4】

目录 1、猜数字大小 1、猜数字大小 题意有点抽象&#xff0c;我大概讲一下&#xff0c;就是在1——n里面会有一个目标数&#xff0c;我们通过猜数字的方式逼近这个数字&#xff0c;直到解出这个数&#xff0c;之前我们是用二分法求最快达到求解的问题&#xff0c;这道题多了每…...

如何制作自己的字体文件.ttf

日常编程中&#xff0c;一些常用的符号可以直接用来当做图标使用&#xff0c;不需要引入过多的资源文件&#xff08;例如&#xff1a;ico、png、svg等&#xff09;十分方便&#xff01; 笔者发现iconfont网站可以选择自己需要的图标&#xff0c;制作成.ttf文件来直接使用&…...

gradle在IDEA 中无法使用的启动守护线程的问题

最近打开一个比较早的项目&#xff0c;Gradle 配置没有问题&#xff0c;IDEA 打开Java项目却不能初始化守护线程&#xff0c;UI 上只能看到失败&#xff0c;看不到具体原因。 首先尝试了升级最新的gradle 版本8.11, 实际上这个版本在本地命令行都不能正常工作&#xff0c;没有…...

Spring Boot 配置多数据源并手动配置事务

Spring Boot 配置多数据源并手动配置事务 一、为什么多数据源需要手动配置&#xff1f;二、配置多数据源1. 数据源配置类 (DataSourceConfig)2. 主数据库 MyBatis 配置类 (PrimaryDbMyBatisConfig)3. 从数据库 MyBatis 配置类 (SecondaryDbMyBatisConfig)4. application.yml 配…...

YashanDB 23.2 YAC 共享集群部署和使用自带YMP迁移工具进行数据迁移,效果很city

1. 环境准备 本文以经典架构&#xff08;2 台服务器&#xff0c;1 共享存储且包含 3 个及以上 LUN&#xff09;为例&#xff0c;搭建双实例单库的共享集群环境。 主机名 IP 版本 CPU 内存 硬盘 用途 yac1 192.168.50.60 Kylin-Server-V10-SP3 4C 8G 100G YAC 集群…...

【数学】矩阵的逆与伪逆 EEGLAB

文章目录 前言matlab代码作用EEGLAB 中的代码总结参考文献 前言 在 EEGLAB 的使用中&#xff0c;运行程序时出现了矩阵接近奇异值&#xff0c;或者缩放错误。结果可能不准确。RCOND 1.873732e-20 的 bug&#xff0c;调查 EEGLAB 后发现是 raw 数据的问题。 matlab代码 A_1 …...

狐猬编程 C++ L3 第7课 字符串入门 元音字母

给你一个所有字符都是字母的字符串&#xff0c; 请输出其中元音字母的个数。&#xff08;提示&#xff1a; 二十六个字母中的五个元音字母是 a&#xff0c; e&#xff0c; i&#xff0c; o&#xff0c; u; 所有字符有大小写区别。&#xff09; 输入格式 仅一行&#xff0c; 包…...

APP UI自动化测试的思路小结

在移动互联网飞速发展的今天&#xff0c;APP质量直接影响用户体验。为了保障UI功能的稳定性和一致性&#xff0c;APP UI自动化测试已经成为各大企业必不可少的一环。那么如何设计一套高效的测试方案&#xff1f;本篇为你总结关键思路&#xff01; 如何从零构建UI自动化测试&am…...

2412d,d的7月会议

原文 总结 卡斯滕 Carsten说,Decard一直在大量试验WebAssembly.他们一直在把d运行时挖出来,直到它工作.他们在浏览器中运行了一些库函数,并试了不同虚机. 他们在移动方面遇见了很多问题,因为不同芯片按不同方式工作.他们想让他们的整个SDK在WASM上运行,但可能需要一年时间才…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...