构建私有CA和证书

news/2024/9/17 2:13:37/ 标签: https, CA

一、准备

两台虚拟机

192.168.252.148 CA

192.168.252.149 客户端

二、构建私有CA

192.168.252.148 CA

安装openssl

1.检查是否存在
rpm -qa openssl
2.安装或者更新openssl
yum install openssl openssl-devel -y

查看CA相关配置

/etc/pki/tls/openssl.cnf这个文件是CA的配置文件。

此文件对于是证书签署者的身份会使用到此文件

此文件对于证书的申请者的身份是无用的。

根证书服务器目录:

CA服务器:/etc/pki/CA 192.168.252.148

网站服务器:/etc/pki/tls 192.168.252.149

查看文件
cat  /etc/pki/tls/openssl.cnf

创建所需文件

cd /etc/pki/CA/
ls
certs  crl  newcerts  private1.创建生成证书索引数据库文件
touch index.txt
2.指定第一个颁发证书的序列号
echo 01 > serialls
certs  crl  index.txt  newcerts  private  serial

创建秘钥

1.使用openssl创建秘钥
cd /etc/pki/CA/
(umask 066; openssl genrsa -out private/cakey.pem 2048)Generating RSA private key, 2048 bit long modulus
.....................+++
...............................+++
e is 65537 (0x10001)2.在private中查看
ls private/
cakey.pem

https://img-blog.csdnimg.cn/img_convert/0de211d21605e254111ab1d555384658.png" width="1016" />

生成自签名的证书

CA自签名证书,根CA是最顶级的认证机构,没有人能够认证他,所以只能自己认证自己生成自签名证书。

1.生成自签名证书通过秘钥
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem -days 7300You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN                         //签发国家  
State or Province Name (full name) []:BEIJING                //签发省份
Locality Name (eg, city) [Default City]:BEIJING              //签发城市
Organization Name (eg, company) [Default Company Ltd]:CA     //签发公司
Organizational Unit Name (eg, section) []:OPT                //签发部门
Common Name (eg, your name or your server's hostname) []:www.syh.com   //签发域名
Email Address []:3146359748@qq.com                           //签发邮件                         2.查看文件
ls
cacert.pem  certs  crl  index.txt  newcerts  private  serial

https://img-blog.csdnimg.cn/img_convert/a1a6c616ef33f82137d3ed4563b764be.png" width="1200" />

https://img-blog.csdnimg.cn/img_convert/3953220f63cda6c905437a04fa12da84.png" width="736" />

参数解释:

-new 			生成新证书签署请求
-x509 		专用于CA生成自签证书
-key 			生成请求时用到的私钥文件
-days 		证书的有效期限
-out 		 	证书的保存路径

下载安装证书

yum install -y lrzsz
sz /etc/pki/CA/cacert.pem

https://img-blog.csdnimg.cn/img_convert/622762f9826a255e84b9e180b24cd1c7.png" width="182" />

以谷歌浏览器为例:

点击设置

https://img-blog.csdnimg.cn/img_convert/c561a5a8c6adb9b5e15862e71f25e01a.png" width="1200" />

点击安全和隐私

https://img-blog.csdnimg.cn/img_convert/a763b124a6e81b975ef11ecdc298c274.png" width="1200" />

向下滑

https://img-blog.csdnimg.cn/img_convert/2d44c21becdef3fab99221fd46065751.png" width="1200" />

找到证书管理会出现一个弹窗

https://img-blog.csdnimg.cn/img_convert/7a668c84f7356efcba0c847dabd87471.png" width="1200" />

导入刚才上传电脑的证书

https://img-blog.csdnimg.cn/img_convert/18f84c4938be74dd5cf9ae92bb721902.png" width="754" />

根据向导导入证书

https://img-blog.csdnimg.cn/img_convert/f043c3ae0f8194dddf28cbf1825c85be.png" width="785" />

导入刚才上传的证书

https://img-blog.csdnimg.cn/img_convert/76450bf3a9139a98a1ca87fb59cfa838.png" width="785" />

完成

三、服务器端进行CA证书申请和签名

192.168.252.149 客户端

安装openssl

1.检查是否存在
rpm -qa openssl
2.安装或者更新openssl
yum install openssl openssl-devel -y

生成私钥文件

1.生成私钥
(umask 066; openssl genrsa -out /etc/pki/tls/private/www.syh.com.key 2048)Generating RSA private key, 2048 bit long modulus
...........................................................................................+++
.....+++
e is 65537 (0x10001)2.查看私钥
ls /etc/pki/tls/private/
localhost.key  www.syh.com.key

https://img-blog.csdnimg.cn/img_convert/a984d3f5fa1603487397ca52b1c30f84.png" width="1200" />

私钥加密生成证书

1.私钥加密生成证书
openssl req -new -key /etc/pki/tls/private/www.syh.com.key -days 365 -out /etc/pki/tls/www.syh.com.csrww.syh.com.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BEIJING
Locality Name (eg, city) [Default City]:BEIJING
Organization Name (eg, company) [Default Company Ltd]:CA
Organizational Unit Name (eg, section) []:OPT
Common Name (eg, your name or your server's hostname) []:www.syh.com
Email Address []:3146359748@qq.comPlease enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []://此处的信息要一定与在生成自签名的证书的信息一致2.查看证书的生成
ls  /etc/pki/tls/
cert.pem  certs  misc  openssl.cnf  private  www.syh.com.csr

四、证书签署

客户端的证书传输到CA端上

传输这个证书/etc/pki/tls/www.qf.com.csr到CA

192.168.252.149:
cd  /etc/pki/tls/
scp  www.syh.com.csr  192.168.252.148:/etc/pki/CA/private192.168.252.148:
cd /etc/pki/CA/private
ls
cakey.pem  www.syh.com.csr

https://img-blog.csdnimg.cn/img_convert/c82ed84e44a7abd6098a982eca5a9f47.png" width="1200" />

https://img-blog.csdnimg.cn/img_convert/0a59cb0f04b606972f0d0074e703d1a7.png" width="411" />

证书签署

1.修改配置文件/etc/pki/tls/openssl.cnf,修改organizationName=supplied

192.168.252.148:
1.编辑配置文件
vim /etc/pki/tls/openssl.cnf
/organizationName搜索这个
找到这个模块修改:
# For the CA policy
[ policy_match ]
countryName             = match
stateOrProvinceName     = match
organizationName        = supplied
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

https://img-blog.csdnimg.cn/img_convert/24d85467a113949d00d0b51595257012.png" width="1105" />

2.CA签署

192.168.252.148:
1.签署证书
openssl ca -in /etc/pki/CA/private/www.syh.com.csr -out /etc/pki/CA/certs/www.syh.com.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnfUsing configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:Serial Number: 1 (0x1)ValidityNot Before: Sep  3 12:09:17 2024 GMTNot After : Sep  3 12:09:17 2025 GMTSubject:countryName               = CNstateOrProvinceName       = BEIJINGorganizationName          = CAorganizationalUnitName    = OPTcommonName                = www.syh.comemailAddress              = 3146359748@qq.comX509v3 extensions:X509v3 Basic Constraints: CA:FALSENetscape Comment: OpenSSL Generated CertificateX509v3 Subject Key Identifier: FA:A5:D7:6B:7D:8A:C2:BA:06:BA:7B:DF:71:35:40:5E:A1:AF:3A:F1X509v3 Authority Key Identifier: keyid:AF:0C:F8:02:B7:C0:51:E3:B7:AB:3A:A0:15:EE:0A:39:8A:03:AB:6ACertificate is to be certified until Sep  3 12:09:17 2025 GMT (365 days)
Sign the certificate? [y/n]:y1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated2.查看证书
ls /etc/pki/CA/certs/
www.syh.com.crt

https://img-blog.csdnimg.cn/img_convert/a7025214d0d483bea54afaa0c10cd206.png" width="1200" />

https://img-blog.csdnimg.cn/img_convert/e365ce0072d1a37f96774a0067a4fe4b.png" width="362" />

发送签署后的证书

192.168.252.148:
1.发送证书
cd /etc/pki/CA/certs/
scp www.syh.com.crt 192.168.252.149:/etc/pki/CA/certs/192.168.252.149:
1.查看证书
ls /etc/pki/CA/certs/
www.syh.com.crt

https://img-blog.csdnimg.cn/img_convert/41e3f782457c4199e539745fc89f9afd.png" width="1200" />

https://img-blog.csdnimg.cn/img_convert/4a70c9c3d755938e87b71a8f7e93ce9c.png" width="555" />

五、测试

证书文件和密钥文件

证书文件路径:
/etc/pki/CA/certs/www.syh.com.crt
密钥文件路径:
/etc/pki/tls/private/www.syh.com.key

https://img-blog.csdnimg.cn/img_convert/20b49db86a1fe51c90c7afacb0790605.png" width="780" />

配置Nginx配置文件

1.编辑配置文件:
vim /etc/nginx/conf.d/nginx_ca.confserver {listen       443 ssl;server_name  www.syh.com;ssl_certificate      /etc/pki/CA/certs/www.syh.com.crt;                 #指定证书路径ssl_certificate_key  /etc/pki/tls/private/www.syh.com.key;              #指定私钥路径ssl_session_timeout  5m;                                                #配置用于SSL会话的缓存ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;  							#如果出现无法访问的连接就将此注释注释掉ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; #密码指定为OpenSSL支持的格式ssl_prefer_server_ciphers   on;                                         #设置协商加密算法时,优先使用服务端的
加密,而不是客户端浏览器的。location / {root /jump/html;index index.html index.htm;}
}2.创建发布目录
mkdir -p  /jump/html
发布一个跳一跳3.重启
nginx -t
systemctl restart nginx

配置windows解析

https://img-blog.csdnimg.cn/img_convert/c8d06a2805cd98cf79b6e415faf5eb03.png" width="511" />

https://img-blog.csdnimg.cn/img_convert/f9975ed512224b7762a200477548dca8.png" width="1200" />

https://img-blog.csdnimg.cn/img_convert/56f5d76f08db1921323ea4b5cff9ac8a.png" width="1200" />

https://img-blog.csdnimg.cn/img_convert/2e51d04b72c1975e2dc7b2c2f333ab9a.png" width="1200" />

https://img-blog.csdnimg.cn/img_convert/8fda41c03dd9171a68d18aef2111a9d1.png" width="1200" />

访问

https://www.syh.com

https://img-blog.csdnimg.cn/img_convert/f42930de21183dc85b92478e512cc0b8.png" width="1200" />

因为私有证书不受此浏览器信任所以会出现不安全的https连接


http://www.ppmy.cn/news/1521570.html

相关文章

Golang | Leetcode Golang题解之第391题完美矩形

题目: 题解: func isRectangleCover(rectangles [][]int) bool {type point struct{ x, y int }area, minX, minY, maxX, maxY : 0, rectangles[0][0], rectangles[0][1], rectangles[0][2], rectangles[0][3]cnt : map[point]int{}for _, rect : range…

基于Vector Davinci SIP的标定实现方法

标定是什么 在汽车软件开发过程中,软件做好之后一般都需要在实车上进行调试,尤其是底盘领域,软件的性能与实车参数、状态有很大的关系,很多参数在开发阶段没办法直接确定最优值,只能是先定一个大概的默认值&#xff0…

maven-helper插件解决jar包冲突实战

经常遇到jar包冲突问题,今天梳理一下: 1、打开idea 2、安装后 打开pom文件 点击 3、 4、 5、 6、 7、 8、 9、 可参考的类似文章

Day 8:77 组合

77 组合 1. 题目描述2. 解题思路3. 代码实现4. 回溯模板 1. 题目描述 77 组合 2. 解题思路 该题可以使用回溯类型的模板来解决&#xff0c;注意到可以进行剪枝操作。 3. 代码实现 class Solution {vector<vector<int>> res;vector<int> path; public:ve…

nodejs发邮件如何实现自动化邮件发送功能?

nodejs发邮件的安全性探讨&#xff1f;使用nodejs发邮件的教程&#xff1f; 在处理邮件发送这类重复性任务时&#xff0c;使用Node.js发邮件的功能可以极大地简化工作流程。AokSend将详细探讨如何利用Node.js发邮件来实现自动化邮件发送功能&#xff0c;确保您的邮件发送任务既…

双指针法01

习题1 27. 移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k&#xff0c;要通过此题&#xff0c;您需要执行以下…

2024高教社杯全国大学生数学建模竞赛C题原创python代码

2024高教社杯全国大学生数学建模竞赛C题原创python代码 C题题目&#xff1a;农作物的种植策略 思路可以参考我主页之前的文章 以下均为python代码&#xff0c;推荐用anaconda中的notebook当作编译环境 from gurobipy import Model import pandas as pd import gurobipy as g…

探索TinyDB:轻量级数据库的优雅之旅

文章目录 探索TinyDB&#xff1a;轻量级数据库的优雅之旅背景&#xff1a;为何选择TinyDB&#xff1f;TinyDB是什么&#xff1f;如何安装TinyDB&#xff1f;简单库函数使用方法场景应用常见Bug及解决方案总结 探索TinyDB&#xff1a;轻量级数据库的优雅之旅 背景&#xff1a;为…

记一次MES项目上线失败总结--数据库层面+代码层面优化方案

难熬三个夜晚&#xff01;&#xff01;&#xff01;按原计划将ERP的生产订单、排程单、牌卡计划、小包装、装箱单等生产数据通过接口的形式同步到MES系统&#xff0c;其中生产订单、排程单和小包装、装箱单的数据量相对较少&#xff0c;合计大概50w条左右的数据&#xff0c;同步…

免费开源的低代码表单FormCreate安装教程,支持可视化设计,适配移动端

低代码表单FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。它支持 6 个 UI 框架&#xff0c;适配移动端&#xff0c;并且支持生成任何 Vue 组件。内置 20 种常用表单组件和自定义组件&#xff0c;再复杂的表单都可以轻松搞定 源码…

Laravel 中间件与事件应用教程

前言 在 Laravel 框架中&#xff0c;中间件&#xff08;Middleware&#xff09;和事件&#xff08;Events&#xff09;是两种强大的机制&#xff0c;用于处理 HTTP 请求和应用程序中的特定动作。它们各自有独特的应用场景和优势。本教程将详细介绍中间件和事件的基本概念、区别…

TriforceAFL部署、使用与原理分析

文章目录 前言1、概述1.1、工作原理1.2、工作流程1.2.1、编译TriforceAFL1.2.2、编译TriforceLinuxSyscallFuzzer1.2.3、初始化资源1.2.3.1、种子初始化1.2.3.2、GuestOS初始化 1.2.4、afl-fuzz调度1.2.5、启动待Fuzz目标 2、安装与使用2.1、安装方法2.1.1、部署系统依赖组件2.…

​如何通过Kimi强化论文写作中的数据分析?

在学术研究领域&#xff0c;数据分析是验证假设、发现新知识和撰写高质量论文的关键环节。Kimi&#xff0c;作为一款先进的人工智能助手&#xff0c;能够在整个论文写作过程中提供支持&#xff0c;从文献综述到数据分析&#xff0c;再到最终的论文修订。本文将详细介绍如何将Ki…

11 Java 方法引用、异常处理、Java接口之函数式编程(接口知识补充Function<T,R>、BiFunction<T, U, R>和自定义泛型接口)

文章目录 前言一、Java接口之函数式编程 --- 接口知识补充1 Function<T,R>泛型接口2 BiFunction<T, U, R>泛型接口3 自定义泛型函数式编程接口4 使用lambda表达式、方法引用进行函数式编程二、方法引用1 方法引用初体验(以Array.sort()方法为例)(1)什么是方法引…

GNU/Linux - 进程关联的控制终端

Controlling terminal 在类 Unix 操作系统中&#xff0c;控制终端是与进程组相关联的终端设备&#xff0c;它控制着进程与终端输入和输出的交互。控制终端通常是启动进程的终端。它负责处理进程的输入&#xff08;如键盘输入&#xff09;和输出&#xff08;如显示文本&#xff…

应用方案 | D6299B马达驱动电路

概述&#xff1a; D6299B是一款功能强大的马达驱动芯片&#xff0c;专为各种应用场景设计。其宽工作电压范围、微小待机电流以及多重保护功能&#xff0c;使其在众多马达驱动芯片中脱颖而出。以下是对D6299B的详细概述。 首先&#xff0c;D6299B具有3-25…

【知识点】图论续篇 - 最短路算法合集

我不会跟大家说我两个月前就写好了&#xff0c;只是今天才发出来。 本文概述 最短路算法&#xff0c;见名知意&#xff0c;就是用于求出图中从某个顶点到另一个顶点最短距离的算法。最短路算法的应用极其广泛。本文将会以求解最短路为中心&#xff0c;围绕着展开叙述一些常见的…

搭建大模型知识库流程,以及基于langchain实现大模型知识库案例

“ RAG检索增强生成是为了解决大模型知识不足的问题 ” 大模型主要面临三个问题&#xff1a; 垂直领域内的知识不足‍‍‍‍‍ 大模型知识有时间限制‍ 大模型幻觉问题 第一个问题产生的原因是因为&#xff0c;没有经过垂直领域数据训练的大模型普遍表现不好&#xff1b;其…

使用Gin框架实现HTTP重定向

在Web开发中&#xff0c;重定向是一种常见的需求&#xff0c;它允许开发者将客户端从一个URL重定向到另一个URL。Gin是一个用Go语言编写的Web框架&#xff0c;它提供了简单而强大的方法来处理HTTP请求&#xff0c;包括重定向。本文将介绍如何在Gin框架中实现HTTP重定向&#xf…

【动态规划问题(2)】路径问题

文章目录 一、不同路径二、不同路径II三、珠宝的最高价值四、下降路径最小和五、整数拆分六、不同的二叉搜索树七、最小路径和八、地下城游戏 一、不同路径 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能…