利用OpenSSL 自签CA证书制作链式SSL证书

2023-10-17 16:10

本文主要是介绍利用OpenSSL 自签CA证书制作链式SSL证书,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文描述的是利用自签CA制作链式证书的步骤,主要是制作中间证书的关键步骤。

目前CA证书基本均为链式证书,其主要目的是利用中间证书的特性,既可以保护根证书的密钥安全性,又可以方便进行吊销操作。

0x00 制作根证书密钥(root.key):

openssl genrsa -aes256 -out root.key 4096

参数含义:

genrsa:  生成RSA密钥

4096: 指定密钥长度

命令执行后会要求输入密码,切记此密码为root.key专有。eg.若没有aes256选项则可以免密码。

0x01 制作根证书|自签CA(root.crt):

此步骤有两种方式 一种是按部就班的生成证书申请文件csr,利用csr继续生成crt格式证书;另一种方式直接生成crt,省去csr。

生成csr方式:

openssl req -new -key root.key -out root.csr

输入完成后需要输入0x00中的密码 和xxxx信息:

Enter pass phrase for root.key:
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) []:Shanghai
Locality Name (eg, city) [Default City]:Shanghai
Organization Name (eg, company) [Default Company Ltd]:LDW
Organizational Unit Name (eg, section) []:LDW STD
Common Name (eg, your name or your server's hostname) []:LDW self sign CA

重点:Common Name此项目输入的是本证书的标志,除此之外的C L O OU项目一定要记得自己输入的什么,另外C L O OU CN大小写敏感。

之后就会得到证书申请文件(root.csr)。之后利用csr获得根证书(root.crt):

openssl x509 -req -days 3650 -sha256 -extfile root.ext -extensions v3_ca -in root.csr -signkey root.key -out root.crt

参数含义:

days: 证书有效期

in: 上一步生成的csr文件 -signkey/-key 0x00生成的密钥 out:生成证书

关键参数:

0.1.1 -extfile root.ext 此参数指定了含有 0.1.2配置的配置文件位置

0.1.2 -extensions v3_ca 此参数指定了一个在extfile配置文件里的[v3-ca]配置:

[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true

此参数可省略,如果要制作链式证书我劝你最好加上。

直接生成root.crt方式:

openssl req -new -x509 -days 3650 -sha256 -extensions v3_ca -key root.key -out root.crt -subj "/C=CN/L=Shanghai/O=LDW/OU=LDW STD/CN=LDW sign CA"

0x02 制作中间证书:

首先生成中间证书密钥(middle.key)

openssl genrsa -out middle.key 4096

关键步骤:

生成一个如下内容ext文件

[ v3_intermediate_ca ]
# Extensions for a typical intermediate CA (`man x509v3_config`).
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:0
keyUsage = critical, digitalSignature, cRLSign, keyCertSign

命名为ca_intermediate.ext 

之后生成中间证书请求文件(middle.csr)

openssl req -new -key middle.key -out middle.csr -subj "/C=CN/L=Shanghai/O=LDW/OU=LDW STD/CN=LDW middle CA"

利用middle.csr和ca_intermediate.ext生成中间证书:

openssl x509 -req -extfile ca_intermediate.ext -extensions v3_intermediate_ca -days 1800 -sha256 -CA root.crt -CAkey root.key -CAcreateserial -CAserial serial -in middle.csr -out middle.crt

之后可以使用openssl verify命令验证:

openssl verify -CAfile root.crt middle.crt 

正确应该输出:

middle.crt: OK

此时证明我们的中间证书已经可以链到我们的根证书上了,之后需要验证middle.crt的一个关键配置项:

openssl x509 -noout -text -in middle.crt

在输出的文本中找到这一句:

X509v3 Basic Constraints: criticalCA:TRUE, pathlen:0

没有的,请从生成中间证书开始重做,此项必须为TRUE

此时中间证书才是生成完毕。

0x03 利用中间证书生成服务端证书

先生成服务端证书密钥(server.key):

openssl genrsa -out server.key 2048

生成请求文件(server.csr):

openssl req -new -key server.key -out server.csr -subj "/C=CN/L=Shanghai/O=LDW/OU=LDW STD/CN=*.useye.cn"

为了适应现代浏览器SSL证书标准还需生成一个ext文件:

[ v3_server ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names[alt_names]
DNS.1 = *.useye.cn
DNS.2 = *.52sexy.net

命名为server.ext。其中DNS.X后面跟的域名为你自己想要生成的域名。

利用中间证书生成服务端证书(server.crt):

openssl x509 -req -extfile server.ext -extensions v3_server -days 365 -sha256 -CA middle.crt -CAkey middle.key -CAserial serial -in server.csr -out server.crt

之后我们需要做一个验证,首先需要生成一个根证书与中间证书的一个复合证书:

cat middle.crt root.crt > middle-chain.crt

之后用复合证书验证服务端证书:

openssl verify -CAfile middle-chain.crt server.crt

只有如下输出才是正确的:

server.crt: OK

此时我们的链式证书最终生成完成。

PS:

将root.crt导入windows可信根证书区域,middle.crt导入可信中间证书区域,即可验证server.crt有效性:

Chrome浏览器访问

这篇关于利用OpenSSL 自签CA证书制作链式SSL证书的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/226511

相关文章

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到

3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)

所谓的协议 协议只是一种规则,你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则,任何人都可以定协议 我们不需要太了解细节,这些制定和完善协议的人去做的,我们只需要知道协议的一个大概 HTTPS 协议 1、概述 HTTPS(Hypertext Transfer Protocol Secure)是一种安全的超文本传输协议,主要用于在客户端和服务器之间安全地传输数据

OpenStack离线Train版安装系列—0制作yum源

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack镜像制作系列5—Linux镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作

OpenStack镜像制作系列4—Windows Server2019镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录  CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系