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

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

2. 具体操作

a. 生成 RSA 密钥(私钥)

bash 复制代码
openssl genrsa -aes256 -out ca.key 2048

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

bash 复制代码
# 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"

可选:如果遇到报错:

bash 复制代码
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

那么执行:

bash 复制代码
cd /home/swd
openssl rand -writerand .rnd
cd -

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

bash 复制代码
openssl x509 -req -days 90 -sha256 -extensions v3_ca -signkey ca.key -in ca.csr -out ca.cer

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

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

(二)生成服务器证书

1、创建服务器私钥

bash 复制代码
openssl genrsa -aes256 -out server.key 2048

2、请求证书

bash 复制代码
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证书签署服务器证书

bash 复制代码
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、生成客户端私钥

bash 复制代码
openssl genrsa -aes256 -out client.key 2048

2、申请证书

bash 复制代码
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证书签署客户端证书

bash 复制代码
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. 单向认证命令行:

服务器:

bash 复制代码
openssl s_server -CAfile ca.cer -cert server.cer -key server.key -accept 22843

客户端:

bash 复制代码
openssl s_client -CAfile ca.cer -cert client.cer -key client.key -connect 127.0.0.1 -port 22843

b. 双向认证:

服务器:

bash 复制代码
openssl s_server -CAfile ca.cer -cert server.cer -key server.key -accept 22843 -Verify 1

客户端:

bash 复制代码
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 关于创建证书以及使用它的例子

相关推荐
晚风予卿云月20 小时前
【linux】进程优先级
linux·运维·服务器
一拳一个娘娘腔20 小时前
从sudo配置到Root Shell:Linux Sudo提权全景深度解析与防御指南
linux·网络·安全
万法若空20 小时前
Cortex-A7的运行模式
linux·arm开发
zhangrelay20 小时前
三分钟云课实践速通--C/C++程序设计--
linux·c语言·c++·笔记·学习·ubuntu
Max_uuc20 小时前
【调度心法】别用 Mutex 制造“人质危机”!撕碎互斥锁的防御幻觉,论优先级反转与火星探测器的史诗级瘫痪
linux·运维·制造
孙同学_20 小时前
【Linux篇】NTA机制与网络地址转换原理详解
linux·网络·智能路由器
小趴菜要进步20 小时前
Kali/Linux 更改国内镜像源
linux·运维·服务器
cookies_s_s21 小时前
C++ 内存模型与无锁编程:从底层原理到实战
linux·服务器·开发语言·c++
郝学胜-神的一滴1 天前
Python 鸭子类型:优雅的多态哲学,让代码更自由
linux·服务器·开发语言·python·网络协议
北冥湖畔的燕雀1 天前
POSIX信号量操作全解析
linux·运维·服务器