开源CA搭建-基于openssl实现数字证书的生成与分发

news2025/6/9 14:51:47

目录

一、前言

二、openssl介绍

三、openssl的常用用法

(一)单向加密

(二)生成随机数

(三)生成公钥,私钥

1.生成私钥

2.提取公钥

四、搭建CA

(一)创建根CA私钥:

(二)生成自签名证书

(三)创建数据库以及新颁发证书数字

(四)设置证书的起始编号

(五)创建文件夹储存用户信息

五、颁发证书

(一)生成服务器自己的私钥

(二)为服务器申请证书

(三)CA签署服务器的证书

(四)验证证书是否有效

六、吊销证书


一、前言

数字证书与CA的介绍:

证书是建立公共密钥和某个实体之间联系的数字化的文件。它包含的内容有:版本信息(X.509也是有三个版本的)、系列号、证书接受者名称、颁发者名称、证书有效期、公共密钥、一大堆的可选的其他信息、CA的数字签名。证书由CA颁发,由CA决定该证书的有效期,由该CA签名。每个证书都有唯一的系列号。证书的系列号和证书颁发者来决定某证书的唯一身份。
 CA是第三方机构,被你信任,由它保证证书的确发给了应该得到该证书的人。CA自己有一个庞大的public key数据库,用来颁发给不同的实体。CA也是一个实体,它也有自己的公共密钥和私有密钥。

openssl可以生成CA的证书文件,私钥,可实现加解密以及数字签名的功能。

二、openssl介绍

openssl是一款开放源代码软件包,通过命令行形式执行,包含了ssl协议库,应用程序以及密码算法库,集成了安全套接字层密码库,囊括主要的密码算法、常用密钥、证书封装管理功能及实现ssl协议。

三、openssl的常用用法

(一)单向加密

openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] [-c] [-d] [-hex] [-binary] [-out filename]

[-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] : 指可以用来加密的内容

-out filename指可以把加密内容保存到特定文件中

(二)生成随机数

openssl rand -base64|-hex NUM

可选base64或hex(十六进制)    

NUM:生成随机数的字节长度

(三)生成公钥,私钥

1.生成私钥

需要使用genrsa命令生成私钥,然后从生成的私钥中提取公钥

openssl genrsa [-out filename] [-des | -des3 | -idea] [numbits]

-out filename : 将生成的私钥保存至特定文件中

-des | -des3 | -idea : 可选用的密码学算法

numbits :生成的私钥长度,单位是字节,一般是2048

2.提取公钥

openssl rsa [-in filename] [-out filename] [-pubout]

-in filename : 公钥对应的私钥存储文件

-out filename : 提取出公钥后储存的文件

-pubout :公钥

四、搭建CA

(一)创建根CA私钥:

openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048

(二)生成自签名证书

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem  -out /etc/pki/CA/cacert.crt  -days 3650

(三)创建数据库以及新颁发证书数字

touch /etc/pki/CA/index.txt
touch /etc/pki/CA/serial

(四)设置证书的起始编号

echo 01 > /etc/pki/CA/serial

(五)创建文件夹储存用户信息

cd /etc/pki/CA
mkdir data

五、颁发证书

(一)生成服务器自己的私钥

openssl  genrsa -out /etc/pki/CA/data/server.key 2048

(二)为服务器申请证书

openssl req -new -key /etc/pki/CA/data/server.key -out /etc/pki/CA/certs/server.csr

注意:前四项填写必须和CA相同,且server' s hostname必须是申请服务器的ip地址或者域名

(三)CA签署服务器的证书

openssl ca -in /etc/pki/CA/certs/server.csr -cert /etc/pki/CA/cacert.crt -keyfile /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/certs/server.crt -days 36500

(四)验证证书是否有效

openssl verify -verbose -CAfile /etc/pki/CA/cacert.crt /etc/pki/CA/certs/server.crt

显示ok的话就可以了

将得到的server.crt和server.key发给服务器,在其ssl配置文件中导入即可实现http到https的转换。如果需要浏览器通过https安全访问web服务的话,还需要在浏览器中导入CA的自签名证书

六、吊销证书

由于撤销证书的命令在openssl配置文件中指定了CA字签名证书的名称,所以在撤销证书前,需要先改一下CA自签名证书的后缀名:

mv /etc/pki/CA/cacert.crt /etc/pki/CA/cacert.pem

  (一)查看证书serial信息

openssl x509 -in /etc/pki/CA/cacert.pem -noout -serial -subject

 比对成功后,进行撤销

(二)吊销证书

openssl ca -revoke /etc/pki/CA/newcerts/01.pem

(三)查看证书状态

openssl ca -status 01

(四)定义证书撤销列表的起始编号

echo 01 > /etc/pki/CA/crlnumber

(五)更新证书撤销列表  

openssl ca -gencrl -out /etc/pki/CA/crl.pem

(六)查看证书撤销列表

openssl crl -in /etc/pki/CA/crl.pem -noout -text

参考链接:

【CentOS 7+Apache】5分钟完成服务器搭建+全站HTTP转HTTPS_哔哩哔哩_bilibili

CentOS搭建基于Apache与OpenSSL自签名证书的HTTPS服务并解决客户端浏览器信任问题_aptx4869_li的博客-CSDN博客_centos httpd openssl

Centos7创建CA和申请证书 - mingzhang - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104970.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux的camera驱动 摄像头调试方法

CameraInfo类用来描述相机信息,通过Camera类中getCameraInfo(int cameraId, CameraInfo cameraInfo)方法获得, 主要包括以下两个成员变量facing,facing 代表相机的方向, 它的值只能是CAMERA_FACING_BACK(后置摄像头&am…

Golang 【basic_leaming】1 基本语法

阅读目录Go 语言变量Go 语言 - 声明变量1. 标准格式2. 批量格式Go 语言 - 初始化与定义变量1. 标准格式2. 编译器推导类型格式3. 短变量声明与初始化Go语言 - 多变量同时赋值Go 语言 - 匿名变量参考资料Go 语言整型(整数类型)1 自动匹配平台的 int 和 un…

新项目为什么决定用 JDK 17了

大家好,我是风筝。公众号「古时的风筝」,专注于后端技术,尤其是 Java 及周边生态。文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面。 最近在调研 JDK 17,并且试着将之前…

阴差阳错,阴阳之变

北京的第一批“杨康”们已经返回到工作岗位,这其中就包括我。简单总结一下我的感染和康复过程,给大家做个样本吧。我属于北京放开的第一波感染者,12.9日当天感觉嗓子干,毫不犹豫,果然是中招了;周末开始发烧…

特朗普发行NFT惹群嘲,上线售罄现“真香定律”

文/章鱼哥出品/陀螺财经特朗普14日在其创建的社交平台truth social上发帖称,“美国需要一个超级英雄”。他还预告自己将于当地时间15日宣布“重大消息”。据《新闻周刊》报道,特朗普当日在其社交平台上发了一段十几秒的视频,里面有一个他站在…

Windows实时运动控制软核(三):LOCAL高速接口测试之C++

今天,正运动小助手给大家分享一下MotionRT7的安装和使用,以及使用C对MotionRT7开发的前期准备。 01 MotionRT7简介 MotionRT7是深圳市正运动技术推出的跨平台运动控制实时内核,也是国内首家完全自主自研,自主可控的Windows运动控…

Linux搭建测试环境详细步骤

本文讲解如何在Linux CentOS下部署Java Web项目的步骤 环境准备 (1)Linux系统(2)JDK(3)Tomcat (4)MySQL工具下载 一、Linux系统 本文主要是Linux CentOS7为例 自己在家练习小项…

[拆轮子] PaddleDetection 中的 COCODataSet 是怎么写的

今日,辗转反侧,该💩的代码就是跑不成功,来看看 COCODataSet 到底是怎么写的,本文只参考当前版本的代码,当前版本 PaddleDetection2.5 COCODataSet 源码见附录 COCODataSet 类内部就三个函数: …

词义和词义消歧

Synsets(“synonym sets”, effectively senses) are the basic unit of organization in WordNet.同义词集 对于许多应用程序,我们希望消除歧义 • 我们可能只对一种含义感兴趣 • 在网络上搜索chemical plant 化工厂,我们不想搜到香蕉中的化学物质 所以…

【SpringBoot扩展点】 容器刷新前回调ApplicationContextInitializer

本文将作为Spring系列教程中源码版块的第一篇,整个源码系列将分为两部分进行介绍;单纯的源码解析,大概率是个吃力没人看的事情,因此我们将结合源码解析,一个是学习下别人的优秀设计,一个是站在源码的角度看…

【MySQL】索引和事务重点知识汇总

目录1.索引:1.1 索引的使用:1.2 索引背后的核心数据结构:1.2.1 先认识 B 树(N叉搜索树):1.2.2 再认识 B 树(N叉搜索树):2.事务:2.1 隔离性:2.1.1 脏读问题:2.1.2 不可重复读问题:2.1.3 幻读问题:2.1.4 总结:2.1.5 隔离级别:1.索引: 索引存在的意义就是为了提高查询到效率.索引…

【AI理论学习】Python机器学习中的特征选择

Python机器学习中的特征选择特征选择方法特征选择的Python库使用Scikit-learn实现特征选择方差卡方检验ANOVALasso正则化递归特征消除使用Feature-engine进行特征选择单变量特征选择相关性Python 中的更多特性选择方法参考资料任何数据科学项目的一个重要步骤是选择最具预测性的…

vue实现文件下载

引言 最近在自己做项目的需求的过程中,需要vuespringboot实现文件的下载功能(导出博客文件)。 问题重现 在我后端文件下载接口开发完成后,使用vue前端去进行对接时出现了问题。 我是直接使用的axios去进行请求接口&#xff0c…

Python 炫技操作:条件语句的七种写法

原代码 这是一段非常简单的通过年龄判断一个人是否成年的代码,由于代码行数过多,有些人就不太愿意这样写,因为这体现不出自己多年的 Python 功力。 if age > 18:return "已成年" else:return "未成年"下面我列举了六…

SwiftUI 中创建谷歌字体浏览器

Google Fonts是设计用户界面时使用的免费字体的转到站点。本教程将展示如何编写一个简单的工具来预览这些字体,而无需在系统中注册每种字体。 该应用程序包含一个拆分视图,该视图在左侧面板中包含字体列表。右侧面板将显示字体样式选项的预览。 项目设置 创建一个名为 Googl…

Vue2之webpack篇(一)

目录 前言 1、什么是webpack? 2、传统开发模式 一、传统开发模式 1、场景 2、问题 3、原因 4、解决方案 二、ES6模块化 1、ES6的解决方案 3、拓展 4、取别名 5、*搭配取别名 6、导出default{} 三、CommonJS规范 1、推荐文档 2、使用CommonJS规范解决方…

十二、DockerFile构建过程解析

1、概述 Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。 在Docker 常用命令篇中,我们已经知道了2中构建镜像的方式 export\import 和 commit方式。这两种方式都需要先运行并创建容器,然后在容器…

python自学之《21天学通Python》(5)

第8章 复杂程序组织 当一个应用程序简单时,将程序代码写入一个文件即可。但随着应用程序或项目复杂度增加时,如果将所有代码都写入同一个文件中时,会出现文件过长或过大,即不方便代码浏览,也不方便代码的管理、使用与维…

人工智能人才缺口暴增,想转行的你赶紧把Python学起来...

当前AI人才极度紧缺,据《中国ICT人才生态白皮书》研究分析,到2018年底,我国人工智能人才缺口将突破100万,到2020年,这一数字将攀升到226万。 在过去的几年中,Python已经成为现代软件开发,基础设…

Web测试的各个测试点,居然这么全!(文末送web测试方法大全一份)

1 什么是Web测试? Web测试测试Web或Web应用程序的潜在错误。它是在上线前对基于网络的应用程序进行完整的测试。 UI测试功能测试数据库测试性能测试兼容性测试安全测试自动化测试 2 WEB测试主要测试场景 1.UI测试 界面是否美观,风格、字体、样式是否…