openssl RSA 密钥(key)、证书签名请求(csr)、证书(cer)的生成和例子

2024-09-02 12:04

本文主要是介绍openssl RSA 密钥(key)、证书签名请求(csr)、证书(cer)的生成和例子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. RSA 密钥(key)、证书签名请求(csr)、证书(cer)的生成顺序

在这里插入图片描述

2. 具体操作

a. 生成 RSA 密钥(私钥)

openssl genrsa -aes256 -out ca.key 2048

b. 生成证书签名请求(csr)

# C-----国家(Country Name)
# ST----省份(State or Province Name)
# L----城市(Locality Name)
# O----公司(Organization Name)
# OU----部门(Organizational Unit Name)
# CN----产品名(Common Name)
# emailAddress----邮箱(Email Address)
openssl req -new -sha256 -key ca.key -out ca.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.yong.com/CN=CA/emailAddress=yong@163.com"

可选:如果遇到报错:

Enter pass phrase for ca.key:
Can't load /home/swd/.rnd into RNG
139882871017920:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/home/swd/.rnd

那么执行:

cd /home/swd
openssl rand -writerand .rnd
cd -

c. 生成自签署证书(cer)

openssl x509 -req -days 90 -sha256 -extensions v3_ca -signkey ca.key -in ca.csr -out ca.cer

以上就是生成一个证书的流程

3. 一个案例(生成服务器证书和客户端证书)

(二)生成服务器证书
1、创建服务器私钥

openssl genrsa -aes256 -out server.key 2048

2、请求证书

openssl req -new -sha256 -key server.key -out server.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.test.com/CN=SERVER/emailAddress=yong@163.com"

3、使用CA证书签署服务器证书

openssl x509 -req -days 36500 -sha256 -extensions v3_req -CA ca.cer -CAkey ca.key -CAserial ca.srl -CAcreateserial -in server.csr -out server.cer

(三)生成客户端证书
1、生成客户端私钥

openssl genrsa -aes256 -out client.key 2048

2、申请证书

openssl req -new -sha256 -key client.key -out client.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.test.com/CN=CLIENT/emailAddress=yong@163.com"

3、使用CA证书签署客户端证书

openssl x509 -req -days 36500 -sha256 -extensions v3_req -CA ca.cer -CAkey ca.key -CAserial ca.srl -CAcreateserial -in client.csr -out client.cer

4. TLS 连接测试

a. 单向认证命令行:

服务器:

openssl s_server -CAfile ca.cer -cert server.cer -key server.key -accept 22843

客户端:

openssl s_client -CAfile ca.cer -cert client.cer -key client.key -connect 127.0.0.1 -port 22843

b. 双向认证:

服务器:

openssl s_server -CAfile ca.cer -cert server.cer -key server.key -accept 22843 -Verify 1

客户端:

openssl s_client -CAfile ca.cer -cert server.cer -key server.key -cert client.cer -key client.key -connect 127.0.0.1 -port 22843

5. tcpdump 抓包

我们访问的是 127.0.0.1:22843 ,所以抓包的时候抓的环回接口 lo
在这里插入图片描述
输入 tcpdump -i lo tcp -w lo.pcap 抓包后过滤 TCP 流。

在这里插入图片描述

5. end

上面就是openssl 关于创建证书以及使用它的例子

这篇关于openssl RSA 密钥(key)、证书签名请求(csr)、证书(cer)的生成和例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

java中判断json key是否存在的几种方法

《java中判断jsonkey是否存在的几种方法》在使用Java处理JSON数据时,如何判断某一个key是否存在?本文就来介绍三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目http://www.chinasem.cn录第一种方法是使用 jsONObject 的 has 方法

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va