使用OpenSSL生成自己CA根证书,和使用CA根证书颁发二级证书

使用OpenSSL生成自己CA根证书,和使用CA根证书颁发二级证书

前言

需要在自己安装好Openssl,网上有很多攻略
本文是以grpc的证书认证为例,用生成的root.crt证书签发两个二级证书client.crtserver.crt

一、生成CA根证书

1.1 在证书存放文件夹下 新建 root.conf

写入内容如下:

[req]
default_bits = 2048
prompt = no
default_keyfile = root.key
distinguished_name = req_distinguished_name


[req_distinguished_name]
C=CN
ST=HuNan
L=ChangSha
O=HuNan University
OU=My Department
CN=root.grpc.io


[root_ext]
basicConstraints = critical,CA:true
keyUsage = critical,keyCertSign,cRLSign

这个配置文件主要用于生成证书签名请求(CSR,Certificate Signing Request)以及定义根证书的扩展信息,通常会配合 OpenSSL 等工具来创建自签名的根证书:

[req] 部分
此部分定义了证书请求生成过程中的一些全局设置:

  • default_bits = 2048
    • 规定了生成密钥对时默认使用的密钥长度为 2048 位。在密码学里,密钥长度是衡量加密强度的关键指标,2048 位的 RSA 密钥目前被认为能提供足够的安全性,可有效抵御常见的攻击手段。
  • prompt = no
    • 当设置为 no 时,意味着在生成证书请求的过程中,系统不会以交互式的方式提示用户输入相关信息。所有必要的信息都将从配置文件中预先指定的内容获取。
  • default_keyfile = root.key
    • 指定了默认的私钥文件名是 root.key。若在生成证书请求时没有特别指定私钥文件,系统就会使用这个文件名来处理私钥。
  • distinguished_name = req_distinguished_name
    • 表明证书中可分辨名称(Distinguished Name,DN)的信息将从配置文件里的 [req_distinguished_name] 部分获取。可分辨名称是用于唯一标识一个实体(如组织、个人等)的一组属性。

[req_distinguished_name] 部分
该部分详细定义了证书中可分辨名称的具体内容:

  • C=CN
    • C 代表国家(Country),CN 是中国的国家代码,这表明该证书所属实体位于中国。
  • ST=HuNan
    • ST 表示州或省份(State or Province),这里指定为湖南。
  • L=ChangSha
    • L 代表城市或地区(Locality),指定为长沙。
  • O=HuNan University
    • O 表示组织(Organization),这里指定为湖南大学,即该证书所属的组织名称。
  • OU=My Department
    • OU 代表组织单位(Organizational Unit),指定为 “My Department”,表示该证书所属组织内的具体部门。
  • CN=root.grpc.io
    • CN 是通用名称(Common Name),指定为 root.grpc.io,通常用于标识证书的主体,对于根证书来说,这是根证书的一个标识名称。

[root_ext] 部分
此部分定义了根证书的扩展信息,这些扩展信息为证书添加了额外的属性和约束:

  • basicConstraints = critical,CA:true
    • basicConstraints 是一个基本约束扩展,critical 表示这个扩展是必须被处理的,如果证书验证者不支持该扩展,则必须拒绝该证书。CA:true 明确表示该证书是一个证书颁发机构(CA)的证书,具备签发其他证书的权限。
  • keyUsage = critical,keyCertSign,cRLSign
    • keyUsage 是一个密钥使用扩展,同样 critical 表示该扩展必须被处理。keyCertSign 表示该证书的私钥可以用于签发其他证书,cRLSign 表示该私钥可以用于签发证书吊销列表(Certificate Revocation List,CRL)。

这个配置文件可用于生成一个自签名根证书的证书请求,同时为该根证书指定了必要的信息和扩展,以确保其具有作为根证书颁发机构的功能和权限。

1.2生成root秘钥,得到root.key

openssl genrsa -out root.key 4096
  • openssl:这是命令的基础,代表调用 OpenSSL 工具。OpenSSL 是一个开源的、功能强大的密码学工具包,提供了各种加密、解密、签名、验证等功能,在网络通信、安全认证等领域有广泛应用。
  • genrsa:这是 OpenSSL 的一个子命令,专门用于生成 RSA 私钥。它会根据指定的参数生成一个符合 RSA 算法的私钥。
  • -out root.key:这是一个选项,-out 用于指定输出文件的名称。在这里,生成的 RSA 私钥将被保存到名为 root.key 的文件中。如果当前目录下已经存在同名文件,该文件将被覆盖。
  • 4096:这是指定生成的 RSA 私钥的长度,单位是位(bit)。密钥长度是衡量 RSA 密钥安全性的一个重要指标,密钥长度越长,破解的难度就越大,安全性也就越高。4096 位的 RSA 密钥在当前被认为具有较高的安全性,能够抵御大多数已知的攻击手段。

1.3 生成root证书签发请求,得到root.csr

openssl req -new -sha256 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值