openssl 生成自签名证书步骤

1,引入

生成自签名证书有,① 只生成根证书和根密钥 ② 用生成的根证书和跟密钥,签发server端和客户端证书,下文介绍这两种方法生成证书文件

2,方法一 (只生成根证书和根密钥)

① openssl genrsa -out cakey.pem 2048 :生成一个2048bit密钥长度的私钥

注: genrsa :产生RSA私钥 支持bit位:1024 , 2048

② openssl req -new -key cakey.pem -out ca.csr :通过cakey.pem生成证书签名文件

注:

req -new :表示创建一个新的证书请求

-key cakey.pem :指定用于签署证书请求的私钥文件。这里使用的是cakey.pem。

这一步需要交互生成(如图):

复制代码
Country Name : 国家码,2个大写字符 [C]

State or Province Name (full name) : 省份或州的完整名称  [S]

Locality Name :地区或城市名  [L]

Organization Name :公司或组织名称   [O]

Organizational Unit Name : 单位或部门名称  [OU]

Common Name :通用名称,     [CN]
    服务器证书:必须是域名(如www.example.com)

    CA证书:通常是机构名称

    个人证书:个人姓名

Email Address :使用者邮箱地址   [E]

A challenge password : 保护csr的密钥,通常不写:

[x] : 表示缩写,简称

以上操作之后会得到: ca.csr 和 cakey.pem

③ openssl x509 -req -days 10950 -sha1 -extensions v3_ca -signkey cakey.pem -in ca.csr -out ca.crt 使用cakey.pem和ca.csr生成自签名根证书 -ca.crt

注:

复制代码
    x509 -req:处理X.509证书,输入为CSR请求

    -days 10950:设置证书有效期为10950天(约30年)

    -sha1:使用SHA-1哈希算法进行签名(注意:现在推荐使用SHA-256)

    -extensions v3_ca:应用v3_ca扩展,标记此为CA证书

    -signkey cakey.pem:使用指定的私钥进行自签名

    -in ca.csr:输入文件为证书签名请求

    -out ca.crt:输出证书文件

以上在该目录下会生成: ca.crt ca.csr cakey.pem (标红的为一对证书和私钥) ,完成!!!

注: 也可调过步骤二,直接使用如下命令生成证书文件。

**openssl req -new -x509 -key cakey.pem -out cacert.pem -days 10950 :**该命令任然会触发第二部的交互

3,方法二 (通过生成的根证书完成server端和client端证书的生成)

① 生成服务端私钥

openssl genrsa -out server-key.pem 2048

② 生成服务端证书签名文件(触发交互)

openssl req -new -key server-key.pem -out server.csr

③ 通过根ca.crt 和cakey.pem 签发服务端证书(serverCert.pem)

openssl x509 -req -days 10950 -sha1 -extensions v3_req -CA ca.crt -CAkey cakey.pem -CAserial ca.srl -CAcreateserial -in server.csr -out serverCert.pem

注: -out 带的参数名字可更改
①生成客户端私钥

openssl genrsa -out client-key.pem 2048

② 生成客户端证书签名文件(触发交互)

openssl req -new -key client-key.pem -out client.csr

③ 通过根ca.crt 和cakey.pem 签发客户端证书( clientCert.pem)

openssl x509 -req -days 10950 -sha1 -extensions v3_req -CA ca.crt -CAkey cakey.pem -CAserial ca.srl -in client.csr -out clientCert.pem

-CAserial :表示证书的序列号,没有就随机生成,在ca.srl文件中,与下文,查看证书的Serial number 对应

以上:

服务端使用: server-key.pem 和 serverCert.pem

客户端使用: client-key.pem 和 clientCert.pem

通过以下命令:

复制代码
openssl verify -CAfile ca.cer serverCert.pem 验证证书链

4,查看证书信息

openssl x509 -in ca.crt -dates -noout :查看证书过期时间

openssl x509 -in ca.cer -text -noout :查看证书内容

5,总结

介绍了使用openssl 生成自签名证书的两种方法,最后只用于测试环境,第一种方法较为推荐,其中sha1 可替换为-sha256 更安全。

相关推荐
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ7 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔8 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密8 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
woho77889910 小时前
不同网段IP的网络打印机,打印、扫描设置
运维·服务器·网络
耗子会飞10 小时前
小白学习固定VM虚拟机的centos服务器的IP
运维·服务器·centos
阿达_优阅达11 小时前
告别手工对账:xSuite 如何帮助 SAP 企业实现财务全流程自动化?
服务器·数据库·人工智能·自动化·sap·企业数字化转型·xsuite
IMPYLH12 小时前
Linux 的 chroot 命令
linux·运维·服务器
克莱因35812 小时前
Linux Cent OS7 at定时任务
linux·运维·服务器
程序员小董13 小时前
从 RocksDB 定时器出发:手写一个通用的 Linux 高精度定时器
linux·服务器
2501_9160074713 小时前
HTTPS 抓包的流程,代理抓包、设备数据线直连抓包、TCP 数据分析
网络协议·tcp/ip·ios·小程序·https·uni-app·iphone