企业网站模板源代码下载/百度知道官网手机版
什么是OpenSSL
OpenSSL是一个开源的软件库和工具套件,用于安全地处理网络数据传输中的加密、解密、安全套接层(SSL)以及传输层安全(TLS)协议等功能。它广泛应用于网站和互联网服务中,以确保数据传输的安全性和隐私性。OpenSSL可以运行在多种操作系统上,并为程序员提供了用C、C++、Python等语言编写的应用程序接口(API)。官网:https://www.openssl.org/
安装OpenSSL
参考:https://www.feistyduck.com/library/openssl-cookbook/online/openssl-command-line/building-openssl.html
使用OpenSSL生成自签证书
创建ca根证书及其私钥
ca证书及其私钥是后续创建其他证书的前提,相当于其他证书是经过ca证书认证后颁发的。
分2步:
创建ca私钥
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out ca_private_key.pem
用私钥创建ca根证书
openssl req -x509 -days 3650 -new -key ca_private_key.pem -subj "/CN=kubernetes" -out ca_root_certificate.pem
根据CA根证书及其私钥生成自签名证书
生成服务器(或客户端)私钥
openssl genpkey -algorithm RSA -out server_private_key.pem -pkeyopt rsa_keygen_bits:2048
创建服务器证书签名请求(CSR)
openssl req -new -key server_private_key.pem -subj "/CN=www.zptest.com/C=CN/L=ShenZhen/ST=GuangDong" -out server_csr.pem
注意:-subj的格式:/type0=value0/type1=value1/type2=…
例如:-subj "/CN=www.zptest.com/C=CN/L=ShenZhen/ST=GuangDong"
或者如下用配置文件代替命令行-subj "/CN=www.zptest.com"
的方式:
- step1:先创建csr配置文件:csr.conf;
- step2:再使用
-config
选项创建csr
如下:
# step1
cat > csr.conf <<EOF
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn[ dn ]
C = CN
ST = GuangDong
L = ShenZhen
CN = www.zptest.com[ req_ext ]
subjectAltName = @alt_names[ alt_names ]
IP.1 = 127.0.0.1
EOF# step2
openssl req -new -key server_private_key.pem -out server_csr.pem -config csr.conf
使用ca根证书签发服务器(或客户端)证书
openssl x509 -req -days 365 -in server_csr.pem -CA ca_root_certificate.pem -CAkey ca_private_key.pem -set_serial 01 -out server_certificate.pem
-set_serial 01
:选项是为证书分配的唯一表示标识号,类似于身份证。值类型可以为十进制或者十六进制(通过前缀加0x)。每个X.509证书的序列号必须唯一,以便在需要时轻松确定、追踪和管理特定证书。例如,在撤销证书时,可以使用序列号查询或标记证书已撤销
可以通过如下方式查询到证书的序列号:
openssl x509 -in server_certificate.pem -noout -text | grep -i "Serial Number"
验证服务器(或客户端)证书
openssl verify -CAfile ca_root_certificate.pem server_certificate.pem
输出server_certificate.pem: OK
则表明证书验证成功。
补充:
查看证书的详细信息:
[root@k8s-master openssl_test]# openssl x509 -noout -text -in server_certificate.pem
Certificate:Data:Version: 1 (0x0)Serial Number: 1 (0x1)Signature Algorithm: sha256WithRSAEncryptionIssuer: CN=kubernetesValidityNot Before: Oct 11 07:03:51 2023 GMTNot After : Oct 10 07:03:51 2024 GMTSubject: C=CN, ST=GuangDong, L=ShenZhen, CN=www.zptest.comSubject Public Key Info:Public Key Algorithm: rsaEncryptionPublic-Key: (2048 bit)Modulus:00:a1:36
……
总结
-
创建自签名证书需要先创建一个“自认权威”的ca,充当第三方CA的角色。这就涉及到创建ca私钥和创建ca根证书
-
通过证书签名请求中的
-subj
来指定证书绑定哪个(哪些)域名 -
使用证书时,域名要和证书中的域名对应上
-
使用curl访问域名时,要手动指定ca证书来进行校验,通过
--cacert
选项来指定比如:
[root@k8s-master cfssl_test]# curl -L www.zptest.com/index.html --cacert ca.pem hello nginx
知识补充
openssl中genpkey和genrsa命令有啥区别?
genrsa
和genpkey
命令都可以在OpenSSL中生成RSA私钥,但二者之间存在一些区别:
- 可生成的密钥类型:
genrsa
命令仅用于生成RSA私钥。genpkey
更通用,可以生成不仅仅是RSA类型的私钥,还可以生成其他如DSA、EC(Elliptic Curve)等多种类型的私钥。
- 算法参数和选项:
genrsa
只支持一部分RSA相关的选项。genpkey
支持各种密钥类型的全部参数和选项,并拥有更多的灵活性。
OpenSSL版本:
genrsa
命令在早期的OpenSSL版本已经存在,所以对于使用较旧版本的OpenSSL的用户来说,genrsa
可能是更常用的命令。genpkey
命令在OpenSSL中引入较晚,但由于其通用性和灵活性,现在被官方推荐使用,尤其在生成非RSA密钥时。
总结:尽管genrsa
和genpkey
都可以生成RSA私钥,但genpkey
命令更为通用且灵活,适用于生成各种密钥类型。因此,建议在现代应用中使用genpkey
命令生成私钥
附录
OpenSSL官网
OpenSSL cookbook
相关文章:

使用OpenSSL生成自签证书
什么是OpenSSL OpenSSL是一个开源的软件库和工具套件,用于安全地处理网络数据传输中的加密、解密、安全套接层(SSL)以及传输层安全(TLS)协议等功能。它广泛应用于网站和互联网服务中,以确保数据传输的安全…...

Spring源码解析——Spring事务是怎么通过AOP实现的?
正文 此篇文章需要有SpringAOP基础,知道AOP底层原理可以更好的理解Spring的事务处理。最全面的Java面试网站 自定义标签 对于Spring中事务功能的代码分析,我们首先从配置文件开始人手,在配置文件中有这样一个配置:<tx:annot…...

机器人革命:脑洞大开的前沿机器人技术!
原创 | 文 BFT机器人 01 由生物启发的多模式移动形态机器人 在一个不断运动的世界中,一种新开发的名为M4(多模式移动形态机器人)的机器人展示了在包括滚动、飞行和行走在内的八种不同运动模式之间切换的能力。这款机器人由加州理工学院自主…...

微信小程序动态海报
参考文献: 微信小程序生成分享海报(附带二维码生成) - 简书 需求背景: 微信小程序固定图片,无法自动链接,分享页面内容 解决方案: 拆分海报内容,由以下几个组成 1、用户图像 …...

手写单例模式
一、单例模式的定义 定义: 确保一个类只有一个实例,并提供该实例的全局访问点。 这样做的好处是:有些实例,全局只需要一个就够了,使用单例模式就可以避免一个全局使用的类,频繁的创建与销毁,耗…...

介绍6种解决电脑找不到vcomp140.dll,无法继续执行代码的方法。
在编程和软件开发领域,我们经常会遇到各种错误和问题。其中,找不到vcomp140.dll文件导致无法继续执行代码是一个非常常见的问题。这个问题可能会影响到软件的正常运行,甚至导致整个项目延期。因此,我们需要找到解决方案来解决这个…...

mysql数据物理迁移
文章目录 一、mysql数据物理迁移1.1 物理迁移 一、mysql数据物理迁移 1.1 物理迁移 速度快,需要停机 进入数据库,查看数据存放位置: select datadir; 一般默认存放在/var/lib/mysql 停机数据库,防止有写入数据 systemctl stop …...

构建图像金字塔:探索 OpenCV 的尺度变换技术
构建图像金字塔:探索 OpenCV 的尺度变换技术 引言什么是图像金字塔?为什么需要图像金字塔?构建高斯金字塔构建拉普拉斯金字塔图像金字塔的应用示例:在不同尺度下检测图像中的边缘 结论 引言 在计算机视觉领域,图像金字…...

ios app开发环境搭建
Xcode是Apple iOS的应用市场app store移动应用的开发工具,支持不同设备、不同应用场景的开发,本文主要描述xcode开发工具开发环境的搭建。 如上所示,在macos中,使用app store安装xcode开发工具 如上所示,在macos中&…...

mysql面试题45:读写分离常见方案、哪些中间件可以实现读写分离
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说一说你知道的读写分离常见方案 读写分离是一种常见的数据库架构方案,旨在分担数据库的读写压力,提高系统的性能和可扩展性。以下是两种常见的…...

【数字IC设计】DC自动添加门控时钟
简介 数字电路的动态功耗主要是由于寄存器翻转带来的,为了降低芯片内部功耗,门控时钟的方案应运而生。作为低功耗设计的一种方法,门控时钟是指在数据无效时将寄存器的时钟关闭,以此来降低动态功耗。 在下图中,展示了…...

前端开发工具vscode
一、下载安装 https://code.visualstudio.com/ 二、安装插件 三、使用 ①、创建一个空目录 ②、利用vscode工具打开该目录 ③、将该目录设置为工作区 在工作区中添加文件,还可以进行浏览器访问(提前安装了Live Server插件) 为工具…...

网络基础2(1)
HTTP 1.应用层协议2.send和recv单独使用不安全3.URL4.urlencode和urldecode5.HTTP协议格式6.HTTP中的常见请求方法POST&&GET7.HTTP的状态码8.HTTP常见Header 🌟🌟hello,各位读者大大们你们好呀🌟🌟 Ƕ…...

系统文件IO、文件描述符fd、重定向、文件系统、动态库和静态库
目录 C文件接口系统文件I/O系统调用和库函数文件描述符0 & 1 & 2FILE和fd的关系文件描述符的分配规则 重定向重定向的本质输出重定向输入重定向追加重定向 dup2函数 FILE理解文件系统了解磁盘的物理结构逻辑抽象文件系统文件系统的图解和解析通过文件系统来理解ls -al通…...

一、K8S第一步搭建
一、初始化操作 1.1、关闭防火墙 systemctl stop firewalld systemctl disable firewalld关闭交换空间 swapoff -a # 临时 sed -ri s/.*swap.*/#&/ /etc/fstab # 永久重启才能生效 根据规划设置主机名 hostnamectl set-hostname <hostname>映射主机 cat >>…...

pwnable-1-fd
pwn的学习周期确实比较长,需要的前置内容也很多,了解到第一题还算比较简单的,那就先来体验一波~顺带附一波网站链接:👉网站链接 题目 WP 最后一行给出了ssh链接方式,那就先连接一波 第一次连接会有第四行的询问&…...

队列的实现(c语言)
队列也是线性表,也是分为两种的:1、顺序队列 2、链队列 顺序队列 #include <stdio.h> #include <stdlib.h>typedef struct {char *base;int front;int erer;int size; }SqQueue;void initSqQueue(SqQueue *queue,int size){queue->base…...

雷电模拟器上使用第一个frida(五)用python实现逆向分析并模拟登陆
上篇通过hook确定了登录代码的位置,参考雷电模拟器上使用第一个frida(四)第一个HOOK之抓包-CSDN博客 接下来逆向分析一下,并用python实现其功能,并模拟登陆。...

基于Linux上MySQL8.*版本的安装-参考官网
本地hadoop环境安装好,并安装好mysql mysql下载地址及选择包 MySQL :: Download MyS的QL Community Server (Archived Versions) mysql安装步骤 下载与上传解压给权限 #mysql安装包上传到/opt下 cd /usr/local/ #解压到此目录 tar -xvf /opt/mysql-8.0.33-linux-glibc2.12-…...

git 项目管理操作
git stash: 保存当前工作进度 git stash save message... : 添加一些注释。 git stash pop : 恢复最新的进度到工作区 git remote prune origin:将本地分支与已删除的远程分支同步 git branch -d <branch-name> :删除分支 git branch -D <branc…...

数据结构--》掌握数据结构中的排序算法
当我们面对海量数据时,如何高效地将其排序是数据结构领域中一个重要的问题。排序算法作为其中的关键部分,扮演着至关重要的角色。 无论你是初学者还是进阶者,本文将为你提供简单易懂、实用可行的知识点,帮助你更好地掌握排序算法在…...

Kubernetes实战(三)-k8s节点设置cpu高于多少就不调度
1 k8s节点设置的概念和原理 k8s是Google开源的容器集群管理系统,用于自动化部署、扩展和管理容器化应用程序。在k8s中,Node是指容器运行的物理或虚拟机器。Node可以是一个物理机或一个虚拟机器,k8s通过其调度器将Pod调度到每个Node上。对于一…...

数学建模——平稳时间序列分析方法
目录 1、平稳性的Daniel检验 (1)Spearman相关系数假设检验 (2)时间序列平稳性的Danniel假设检验 案例 【模型分析】 1、原始数据at的平稳性检验 2、一阶差分序列的平稳性检验 3、二阶差分序列的平稳性检验 4、建立AR&#…...

Vuex使用方式及异步问题处理
🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 生活的理想,为了不断更新自己 ! 目录 1.Vuex简介: 2.vuex获取值 2.1安装 2.2.菜单栏 2.3.模块 2.4使用 3.改…...

【Vue面试题二十七】、你了解axios的原理吗?有看过它的源码吗?
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:说下你的vue项目的目录结…...

LocalDateTime与时间戳
众所周知,如果想把 LocalDateTime 转为时间戳,需要先指定时区,然后才能转为时间戳,例如: LocalDateTime localDateTime LocalDateTime.now(); ZonedDateTime zonedDateTime localDateTime.atZone(ZoneId.systemDe…...

【Power BI】Power BI 入门指南:版本、下载和报表创建的步骤
文章目录 一、前言二、了解 Power BI 版本三、下载 Power BI Desktop四、如何开始使用 Power BI Desktop五、在 Power BI Desktop 中创建报表六、文末总结 一、前言 Power BI 是微软于 2013 年推出的产品,为一款商业智能与数据可视化工具。它通过引人注目的视觉效果…...

代码随想录算法训练营第23期day21| 235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点
目录 一、(leetcode 235)二叉搜索树的最近公共祖先 二、(leetcode 701)二叉搜索树中的插入操作 三、(leetcode 450)删除二叉搜索树中的节点 一、(leetcode 235)二叉搜索树的最近公…...

小程序页面路由传参的方法?
小程序页面路由传参的方法有三种: 1.URL参数传递:通过在页面跳转的URL中携带参数实现传参。可以使用wx.navigateTo或wx.redirectTo等跳转方法,并在URL中添加参数。 示例: // PageA.wxml <button bindtap"navigateToPage…...

Ubuntu下安装Python
Ubuntu下安装Python 预备知识一、Python安装Python 二、Anaconda安装Anaconda卸载Anaconda 三、Miniconda安装Miniconda 四、异同比较 预备知识 (1) Python是一种编程语言。 (2) Anaconda是一款包管理工具,用来管理Python及其他语言的安装包,预装了很多…...