ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

openssl颁发自签名证书

2021-12-20 17:31:55  阅读:162  来源: 互联网

标签:CN 证书 CA openssl pem 签名 ca


证书需要CA机构颁发,首先弄个CA根证书,相当于自己弄了个虚拟CA机构,只不过这个CA机构是没有人信任的(自己弄的当然没人信任),再虚拟CA机构去颁发用户证书

一、CA根证书

若相关目录不存在自行创建即可。

1.创建ca私钥

openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048

2.创建自签名ca根证书

openssl req -new -x509 -days 365 -utf8 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -subj '/C=CN/ST=Shanghai/L=Shanghai/O=Test Trust CA/OU=Test Trust Root CA/CN=Test Trust Root CA/emailAddress=testcaroot@testcaroot.com'  -addext basicConstraints=critical,CA:TRUE,pathlen:3

其中subj用于描述证书拥有者,从左到右参数依次为:C=国家代码,ST=省份/州,L=城市,O=组织,OU=组织单位/部门),CN=主机名称/域名,emailAddress=联系邮箱。

CA证书必须包含basicConstraints值,且CA参数需为TRUE,pathlen参数指明了在证书信任链中,在当前证书之下允许存在的最大CA数量。当CA的pathlen值为0时,该CA仅能对终端用户证书进行签名,不能再对CA进行签名。

二、颁发用户证书

证书序列号从0开始 echo 00 > /etc/pki/CA/serial

1.创建用户证书私钥

openssl genrsa -out server-key.pem 2048
若需要对私钥加密可加加密算法参数,如-aes256,输入两次密码

2.生成证书申请文件

openssl req -new -utf8 -key test.key -out test.csr -subj /C=CN/ST=Shanghai/O=瑞文测试公司/CN=*.riventest.com  -addext basicConstraints=CA:FALSE -addext subjectAltName=DNS.1:www.riventest.com,DNS.2:*.riventest.com
若第一步私钥有密码则需要输入私钥加密的密码,没有则无需输入

查看申请文件

openssl req -in test.csr -noout -text

3.ca颁发证书

创建ca_ext.txt文件输入以下内容:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage=digitalSignature,nonRepudiation,keyEncipherment
subjectAltName=@alt_names

[alt_names]
DNS.1=*.riventest.com
DNS.2=www.riventest.com
DNS.3=*.riventest2.com

执行命令颁发证书

openssl ca -days 365 -in test.csr -out test.crt -cert /etc/pki/CA/cacert.pem -keyfile /etc/pki/CA/private/cakey.pem -policy=policy_anything -extfile=ca_ext.txt

policy使用policy_anything表示-subj指定的内容任意字段都无需相同,默认是国家、省份和组织三个字段必须一致。

ca_ext.txt文件指定了subjectAltName,若不指定可能证书认证有有问题,如chrome浏览器会报错NET::ERR_CERT_COMMON_NAME_INVALID。

对于多域名证书,在subject的CN字段可以放一个最常用的域名,并将所有域名填到subjectAltName扩展属性中。

4.查看颁发的证书信息

openssl x509 -in test.crt -noout -text

标签:CN,证书,CA,openssl,pem,签名,ca
来源: https://www.cnblogs.com/xiao-tao/p/15702127.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有