openssl 生成证书步骤

本地测试RSA非对称加密功能时,需要用到签名证书。本文记录作者使用openssl本地生成证书的步骤,并没有深入研究openssl,难免会有错误,欢迎指出!!!

生成证书标准流程:

1、生成私钥(.key)

2、用私钥生成证书请求(.csr)

3、将证书请求文件(.csr)提交给证书颁发机构(CA),CA会对提交的证书请求中的所有信息生成一个摘要,然后使用CA根证书对应的私钥进行加密,这就是所谓的"签名"操作,完成签名后就会得到真正的签发证书(.cer或.crt)

一、openssl生成证书

1、生成一个 2048 位的 RSA 私钥

复制代码
openssl genrsa -out private.key 2048

2、使用私钥来生成新的证书签名请求(.csr)

复制代码
openssl req -new -key private.key -out private.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"
  • -new 表示创建一个新的证书请求;
  • -key 后面跟着的是私钥文件;
  • -out 后面是输出的CSR文件;
  • -subj 是请求中的主题信息。你将被要求提供一些信息,如你的国家、省份、城市、组织名称等。这些信息将包含在你的证书中。
    • /C= 是证书的国家代码。
    • /ST= 是州或省份名称。
    • /L= 是城市名称。
    • /O= 是组织名称。
    • /OU= 是组织单位名称。
    • /CN= 是通用名称,通常是域名。
    • /emailAddress= 是电子邮件地址。

3、有了私钥和证书签名请求后,我们可以选择做3件事:

3.1 标准CA签发流程

  • 将证书请求(.csr)提交给CA认证机构申请证书(.crt);
  • CA机构会用他的根证书对应的私钥来签名(由CA机构操作);

3.2 生成自签名证书

可以看到标准CA签发流程是用CA机构的私钥去签名。而自签名证书是用自己的私钥签署自己的证书请求,生成自签名SSL证书。

注意:自签名证书不会被浏览器信任,只能用于内部或测试用途。如果你需要一个可被浏览器信任的证书,你需要从受信任的证书颁发机构(CA)获取签名证书。

复制代码
openssl x509 -req -in private.csr -out private.crt -signkey private.key -days 365
  • openssl x509 -req 表示签名请求,生成证书。
  • -in private.csr 表示输入的CSR文件名。
  • -out private.crt 表示输出的CRT文件名。
  • -signkey private.key 表示用于签名的私钥文件名。
  • -days 表示证书的有效期。

生成的证书格式默认是 PEM,即 Privacy Enhanced Mail,它是 Base64 编码的 ASCII 码文件,常用于存储证书和密钥。PEM 格式的证书通常以 -BEGIN CERTIFICATE- 开始,以 -END CERTIFICATE- 结束,如图:

3.3 私有CA签发证书

如果我们把3.2生成自签名证书(ca.crt)和私钥(ca.key)当作私有的CA机构,然后签署其他的证书签名请求,生成私有CA签名的证书,这个过程,可以理解为是私有CA签发证书。

CA签名证书命令:

  • ca.key就是3.2的private.key;

  • ca.crt就是3.2的private.crt;

  • server.csr就是我们需要签名的证书请求

    openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365

  • -req 表示要处理的输入文件是一个证书签名请求(CSR)。

  • -in server.csr 表示要处理的CSR文件名为server.csr。

  • -CA ca.crt 表示CA的证书文件名为ca.crt。

  • -CAkey ca.key 表示CA的私钥文件名为ca.key。

  • -CAcreateserial 表示如果CA的证书和私钥不存在,则创建它们。

  • -out server.crt 表示生成的服务器证书输出文件名为server.crt。

二、命令简化

生成 私钥(.key) 和 证书签名请求(.csr) 可以用一条命令实现:

复制代码
openssl req -new -newkey rsa:2048 -nodes -keyout my.key -out my.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"

生成 私钥(.key) 和 证书签名请求(.csr) 再生成 签名证书(.crt)可以用一条命令实现:

复制代码
openssl req -x509 -newkey rsa:2048 -nodes -keyout my.key -out my.crt -days 3650  -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"

三、其他命令

使用私钥生成对应的公钥:

复制代码
openssl rsa -in private.key -pubout -out public.pub

从证书中提取公钥:

复制代码
openssl x509 -in private.crt -pubkey -outform PEM -out public_key.pem
相关推荐
小宋00110 小时前
在Ubuntu上安装配置 LLaMA-Factory
ubuntu·计算机视觉
wwwlyj12332110 小时前
arm架构,arm内核,处理器之间的关系
arm开发
kfepiza11 小时前
Netplan 配置网桥(Bridge)的模板笔记250711
linux·tcp/ip·ubuntu
kfepiza11 小时前
用Netplan配置网桥bridge笔记250711
linux·ubuntu·debian
x县豆瓣酱16 小时前
ubuntu server配置静态IP
linux·运维·ubuntu
__只是为了好玩__17 小时前
Apache http 强制 https
http·https·apache·ssl
x县豆瓣酱19 小时前
ubuntu server远程连接
linux·运维·ubuntu
0wioiw019 小时前
Ubuntu基础(Python虚拟环境和Vue)
linux·python·ubuntu
史不了19 小时前
无 sudo 运行:让你的程序在 Ubuntu 低端口监听
linux·运维·ubuntu
代码改变世界ctw19 小时前
1.4 ARM安全参考架构(PSA Certified)
arm开发·安全·arm·trustzone·atf·optee·安全启动