怎么利用linux自建一个ca自己申请证书

建立私有CA实现证书申请颁发

建立私有CA:

OpenCA:OpenCA开源组织使用Perl对OpenSSL进行二次开发而成的一套完善的PKI免费软件

openssl:相关包 openssl和openssl-libs

证书申请及签署步骤:

  1. 生成证书申请请求

  2. RA核验

  3. CA签署

  4. 获取证书

#安装包
[root@rocky86 ~]# yum install openssl-libs 
#查看配置文件
[root@rocky86 ~]# cat /etc/pki/tls/openssl.cnf
#安装包
[root@ubuntu ~]# apt install libssl-dev
#查看配置文件
[root@ubuntu ~]# cat /etc/ssl/openssl.cnf

配置说明:
[CA_default ]
dir = ./demoCA #所有与证书相关的文件目录,在实际使用时此处要进行修改
certs = $dir/certs #颁发的证书文件目录
crl_dir = $dir/crl #吊销的证书文件
database = $dir/index.txt #证书索引文件
new_certs_dir = $dir/newcerts #新颁发的证书目录
certificate = $dir/cacert.pem #CA机构自己的证书
serial = $dir/serial #证书编号文件,下一个证书编号,16进制
crlnumber = $dir/crlnumber #存放当前CRL编号的文件
crl = $dir/crl.pem #CA证书吊销列表文件
private_key = $dir/private/cakey.pem #CA证书的私钥
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

 匹配策略,指用此CA颁发证书时,证书的相关字段与CA的值的匹配规则

匹配规则 说明

match 要求申请写的信息跟CA设置信息必须一致

optional 可有可无,跟CA设置信息可不一致

supplied 必须填写这项申请信息

创建私有CA

1、创建CA所需要的文件

#创建相关目录
[root@ubuntu ~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts,private}

[root@ubuntu ~]# tree /etc/pki/CA/

2.生成CA私钥

[root@ubuntu ~]# cd /etc/pki/CA/
[root@ubuntu CA]# openssl genrsa -out private/cakey.pem 2048

3.生成CA自签名证书

[root@ubuntu CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem
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) [AU]:CN #国家代码
State or Province Name (full name) [Some-State]:beijing #省/州
Locality Name (eg, city) []:beijing #城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxx公司 #公司/单位
Organizational Unit Name (eg, section) []:m54 #部门
Common Name (e.g. server FQDN or YOUR name) []:www.xxxyuming #域名
Email Address []: #邮箱
-new #生成新证书签署
请求
-x509 #专用于CA生成自
签证书
-key #生成请求时用到
的私钥文件
-days n #证书的有效期限
-out /PATH/TO/SOMECERTFILE #证书的保存路径


#查看证书
[root@ubuntu CA]# cat /etc/pki/CA/cacert.pem

#查看证书
[root@ubuntu CA]# openssl x509 -in /etc/pki/CA/cacert.pem -noout -text

#导到WINDOWS中查看
[root@ubuntu CA]# sz /etc/pki/CA/cacert.pem

申请证书并颁发证书

1、为需要使用证书的主机生成生成私钥

[root@ubuntu CA]# openssl genrsa -out /data/test.key 2048

2、为需要使用证书的主机生成证书申请文件

#注意:默认要求国家,省,公司名称三项必须和CA一致
[root@ubuntu CA]# openssl req -new -key /data/test.key -out /data/test.csr

3、用CA签署证书并将证书颁发给请求者

#创建索引文件
[root@ubuntu CA]# touch /etc/pki/CA/index.txt
#创建序号文件
[root@ubuntu CA]# echo 0F > /etc/pki/CA/serial
#签发证书
[root@ubuntu CA]# openssl ca -in /data/test.csr -out /etc/pki/CA/certs/test.crt -days 100

#查看
[root@ubuntu CA]# tree /etc/pki/CA/

#原来是0F,加1后变成10
[root@ubuntu CA]# cat /etc/pki/CA/serial

#V 表示有效,230830 表示2023年8月30日过期,0F 表示证书编号
[root@ubuntu CA]# cat /etc/pki/CA/index.txt

4、查看证书中的信息:

#根据编号查看状态
[root@ubuntu CA]# openssl ca -status 0F

[root@ubuntu CA]# openssl x509 -in /etc/pki/CA/certs/test.crt -noout -text

如果证书申请文件中的配置项与CA机构的匹配规则不一致,将无法签发证书

吊销证书

在客户端获取要吊销的证书的 serial

[root@ubuntu CA]# openssl x509 -in /etc/pki/CA/certs/test.crt -noout -serial -
subject
serial=0F
subject=C = CN, ST = beijing, O = 上文信息, OU = 上文信息, CN = xxx域名

在CA上,根据客户提交的 serial 与 subject 信息,对比检验是否与 index.txt 文件中的信息一致,吊销证书:

[root@ubuntu CA]# openssl ca -revoke /etc/pki/CA/certs/test.crt
[root@ubuntu CA]# cat /etc/pki/CA/index.txt

指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前,才需要执行

 

[root@ubuntu CA]# echo 01 > /etc/pki/CA/crlnumber

更新证书吊销列表

[root@ubuntu CA]# openssl ca -gencrl -out /etc/pki/CA/crl.pem

查看crl文件:

[root@ubuntu CA]# openssl crl -in /etc/pki/CA/crl.pem -noout -text

CentOS7 创建自签名证书

root@centos7 certs]# cd /etc/pki/tls/certs
[root@centos7 certs]# make


#根据目录中的 Makefile 来执行不同操作
[root@centos7 certs]# ls
ca-bundle.crt ca-bundle.trust.crt make-dummy-cert Makefile renew-dummy-cert
[root@centos7 certs]# cat Makefile


#centos8中没有该Makefile,可以SCP过去使用

Ubuntu上实现私有CA和证书申请

1 创建CA相关目录和文件

[root@ubuntu ~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts,private}

[root@ubuntu ~]# tree /etc/pki/CA/

[root@ubuntu ~]# touch /etc/pki/CA/index.txt

[root@ubuntu ~]# echo 0F > /etc/pki/CA/serial

创建CA的私

[root@ubuntu ~]# cd /etc/pki/CA/
[root@ubuntu CA]# openssl genrsa -out private/cakey.pem 2048
[root@ubuntu CA]# tree


[root@ubuntu CA]# ls -l private/

[root@ubuntu CA]# cat private/cakey.pem

给CA颁发自签名证书

[root@ubuntu CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem

[root@ubuntu CA]# tree /etc/pki/CA/

#查看
[root@ubuntu CA]# cat /etc/pki/CA/cacert.pem
#查看
[root@ubuntu CA]# openssl x509 -in /etc/pki/CA/cacert.pem -noout -text
#将文件cacert.pem传到windows上,修改文件名为cacert.pem.crt,双击查看
[root@ubuntu CA]# sz /etc/pki/CA/cacert.pem

用户生成私钥和证书申请

[root@ubuntu ~]# mkdir /data/app1
#生成私钥文件
[root@ubuntu ~]# openssl genrsa -out /data/app1/app1.key 2048
[root@ubuntu ~]# cat /data/app1/app1.key
#生成证书申请文件
[root@ubuntu CA]# openssl req -new -key /data/app1/app1.key -out /data/app1/app1.csr
[root@ubuntu ~]# ls -l /data/app1/

默认有三项内容必须和CA一致:国家,省份,组织,如果不同,会出现下面的提示

[root@ubuntu ~]# openssl ca -in /data/app2/app2.csr -out 
/etc/pki/CA/certs/app2.crt 
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
The stateOrProvinceName field is different between
CA certificate (beijing) and the request (hubei)

 CA颁发证书

[root@ubuntu CA]# openssl ca -in /data/app1/app1.csr -out 
/etc/pki/CA/certs/app1.crt -days 1000

[root@ubuntu CA]# tree /etc/pki/CA

 查看证书

[root@ubuntu CA]# cat /etc/pki/CA/certs/app1.crt

[root@ubuntu CA]# openssl x509 -in /etc/pki/CA/certs/app1.crt -noout -issuer

[root@ubuntu CA]# openssl x509 -in /etc/pki/CA/certs/app1.crt -noout -subject

[root@ubuntu CA]# openssl x509 -in /etc/pki/CA/certs/app1.crt -noout -dates

[root@ubuntu CA]# openssl x509 -in /etc/pki/CA/certs/app1.crt -noout -serial 


#验证指定编号对应证书的有效性
[root@ubuntu CA]# openssl ca -status 0F

[root@ubuntu CA]# cat /etc/pki/CA/index.txt

[root@ubuntu CA]# cat /etc/pki/CA/index.txt.old
[root@ubuntu CA]# cat /etc/pki/CA/serial
10
[root@ubuntu CA]# cat /etc/pki/CA/serial.old 
0F

 将证书相关文件发送到用户端使用

[root@ubuntu CA]# cp /etc/pki/CA/certs/app1.crt /data/app1/
[root@ubuntu CA]# tree /data/app1/
/data/app1/
├── app1.crt #证书文件
├── app1.csr #证书申请文件
└── app1.key #私钥
0 directories, 3 files

证书的信任

默认生成的证书,在windows上是不被信任的,可以通过导入操作实现信任

浏览器设置-->证书管理-->导入

证书的吊销

[root@ubuntu CA]# openssl ca -revoke /etc/pki/CA/newcerts/0F.pem

[root@ubuntu CA]# openssl ca -status 0F

[root@ubuntu CA]# cat /etc/pki/CA/index.txt

 生成证书吊销列表文件

[root@ubuntu CA]# echo 01 > /etc/pki/CA/crlnumber

[root@ubuntu CA]# openssl ca -gencrl -out /etc/pki/CA/crl.pem

[root@ubuntu CA]# cat /etc/pki/CA/crlnumber

[root@ubuntu CA]# cat /etc/pki/CA/crl.pem

[root@ubuntu CA]# openssl crl -in /etc/pki/CA/crl.pem -noout -text
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白了个白i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值