使用OpenSSL生成自己CA根证书,和使用CA根证书颁发二级证书
文章目录
前言
需要在自己安装好Openssl,网上有很多攻略
本文是以grpc的证书认证为例,用生成的root.crt证书签发两个二级证书client.crt 和 server.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]部分获取。可分辨名称是用于唯一标识一个实体(如组织、个人等)的一组属性。
- 表明证书中可分辨名称(Distinguished Name,DN)的信息将从配置文件里的
[req_distinguished_name] 部分
该部分详细定义了证书中可分辨名称的具体内容:
C=CNC代表国家(Country),CN是中国的国家代码,这表明该证书所属实体位于中国。
ST=HuNanST表示州或省份(State or Province),这里指定为湖南。
L=ChangShaL代表城市或地区(Locality),指定为长沙。
O=HuNan UniversityO表示组织(Organization),这里指定为湖南大学,即该证书所属的组织名称。
OU=My DepartmentOU代表组织单位(Organizational Unit),指定为 “My Department”,表示该证书所属组织内的具体部门。
CN=root.grpc.ioCN是通用名称(Common Name),指定为root.grpc.io,通常用于标识证书的主体,对于根证书来说,这是根证书的一个标识名称。
[root_ext] 部分
此部分定义了根证书的扩展信息,这些扩展信息为证书添加了额外的属性和约束:
basicConstraints = critical,CA:truebasicConstraints是一个基本约束扩展,critical表示这个扩展是必须被处理的,如果证书验证者不支持该扩展,则必须拒绝该证书。CA:true明确表示该证书是一个证书颁发机构(CA)的证书,具备签发其他证书的权限。
keyUsage = critical,keyCertSign,cRLSignkeyUsage是一个密钥使用扩展,同样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

最低0.47元/天 解锁文章
1675

被折叠的 条评论
为什么被折叠?



