使用OpenSSL生成自签名证书和格式转换

OpenSSL安装:https://blog.csdn.net/qq_44734154/article/details/125995475

一、生成证书私钥

genrsa 介绍:https://www.openssl.org/docs/man1.1.1/man1/genrsa.html

1.生成私钥key

在这里插入图片描述

openssl genrsa -aes128 -passout pass:Test@2022 -out test_private.key 2048

在这里插入图片描述

2.私钥key转成pem格式
openssl rsa -in test_private.key -outform PEM -out test_private.pem -passin pass:Test@2022

在这里插入图片描述

3.获取私钥的pkcs8编码pem文件

saml程序中privatekey配置此文件中的base64字符串
私钥在使用前为pkcs1格式,而java在不引用第三方包的情况下无法直接使用pkcs1格式的秘钥,需要将其转化为pkcs8编码
pkcs8介绍:https://www.openssl.org/docs/man1.1.1/man1/openssl-pkcs8.html

openssl pkcs8 -topk8 -inform PEM -in test_private.pem -outform PEM -out test_private_pkcs8.pem -nocrypt

在这里插入图片描述

二、生成证书请求

req介绍: https://www.openssl.org/docs/man1.1.1/man1/openssl-req.html

openssl req -new -key test_private.key -passin pass:Test@2022 -out test_req.csr -days 7300

执行过程:

# -key test_private.key 指定私钥
# -passin pass:Test@2022 指定私钥密码
# -days 7300 指定证书有效期
[root@node0 test-cert]# openssl req -new -key test_private.key -passin pass:Test@2022 -out test_req.csr -days 7300
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]:    
Organizational Unit Name (eg, section) []:
# 输入域名
Common Name (eg, your name or your server's hostname) []:
# 输入邮箱
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
# 输入验证密码
A challenge password []:Test@2022
# 输入可选的公司名称
An optional company name []:

三、生成crt格式的自签名根证书(CA根证书)

1.生成crt格式的自签名根证书

crt证书在window环境下安装之后,可以导出对外的自签名der公钥证书文件

openssl req -x509 -key test_private.key -in test_req.csr -out test_root.crt -days 7300 -passin pass:Test@2022

在这里插入图片描述

2.获取证书指纹
openssl x509 -fingerprint -sha256 -in test_root.crt

在这里插入图片描述

四、生成pem格式的自签名根证书

saml程序中使用的x509证书,x509cert配置此文件中的base64字符串

openssl req -x509 -key test_private.key -in test_req.csr -out test_root.pem -days 7300 -passin pass:Test@2022

在这里插入图片描述

五、导出根证书pfx格式的私钥文件

对外提供自签名的私钥文件
pkcs12 介绍:https://www.openssl.org/docs/man1.1.1/man1/openssl-pkcs12.html

openssl pkcs12 -export -inkey test_private.key -in test_root.crt -out test_root_private.pfx -passin pass:Test@2022

操作交互:

[root@node0 test-cert]# openssl pkcs12 -export -inkey test_private.key -in test_root.crt -out test_root_private.pfx -passin pass:Test@2022
# 输入导出的私钥密码Test@2022private
Enter Export Password:
# 再次输入Test@2022private,两次输入保持一致
Verifying - Enter Export Password:

OpenSSL生成CA自签名根证书和颁发证书:https://blog.csdn.net/qq_44734154/article/details/126167945

### 如何使用 OpenSSL 生成自签名证书 #### 准备工作 确保已安装并配置好 OpenSSL 工具。可以通过命令 `openssl version` 来验证是否成功安装。 #### 创建私钥文件 为了安全起见,先创建一个用于存储密钥的目录,并进入该目录: ```bash mkdir ~/ssl && cd ~/ssl ``` 接着可以利用下面这条指令来生成 RSA 私钥(默认长度为2048位),并将它保存到名为 `server-key.pem` 的文件里[^1]: ```bash openssl genrsa -des3 -out server-key.pem 2048 ``` 此过程会提示设置加密口令保护私钥的安全性;如果希望省去这一步,则可去掉 `-des3` 参数以不带密码的方式生成私钥。 #### 构建自签发 X.509 数字证书请求(CSR) 有了上述准备好的私钥之后,就可以着手构建 CSR 文件了。这里采用交互模式填写必要信息,最终产出的结果会被写入至 `server.csr` 中: ```bash openssl req -new -key server-key.pem -out server.csr ``` 在执行过程中需依次提供国家名、省份名称等细节资料给即将颁发出来的虚拟身份证明书所用。 #### 执行自签署操作得到公有证书 最后一步就是让刚才建立起来的那个实体自己给自己发放一张有效期一年的有效凭证——即所谓的“自签名证书”。具体做法如下所示: ```bash openssl x509 -req -days 365 -in server.csr -signkey server-key.pem -out server-cert.pem ``` 此时便完成了整个流程,在当前路径下应该能看到新产生的两个重要文档:一个是之前提到过的 `.csr` 请求表单副本;另一个则是至关重要的 `.pem` 结构化编码形式呈现出来的公开认证材料。 对于某些应用场景而言,可能还需要进一步换成其他格式比如 PFX/PEM 等以便于部署应用环境之中[^2]。例如要将现有的 PEM 类型存为 Windows 平台常用的 PKCS#12 归档包时可以用这样的语句实现: ```bash openssl pkcs12 -export -out server.pfx -inkey server-key.pem -in server-cert.pem ``` 以上便是完整的基于 OpenSSL 实现自定义 SSL/TLS 自签名证书制作全过程介绍。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值