实验:建立私有CA,并实现颁发证书(20190123 下午第一节)

证书的申请过程:

centos6是需要证书服务的主机 centos7为服务器

1、建立CA
1、[root@centos7 ~]# tree /etc/pki/CA
/etc/pki/CA
├── certs
├── crl
├── newcerts
├── private
[root@centos7 ~]# cd /etc/pki/CA
[root@centos7 CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048 )  :用umask 077/066权限来保证安全,此时已生成私钥文件
[root@centos7 ~]# tree
|── certs
├── crl
├── newcerts
├── private
│   └── cakey.pem
此时cakey.pem 文件生成,权限为066
2、[root@centos7 CA]# openssl req -new -x509 -key privavte/cakey.pem -out cacert.pem -days 3650
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:magedu
Organizational Unit Name (eg, section) []:devops
Common Name (eg, your name or your server's hostname) []:www.magedu.com
Email Address []:admin@www.magedu.com
此处需要填写登记信息,1;2;4项需要和后面的一样

[root@centos7 CA]# cat cacert.pem 此处生成了cacert.pem文件 可以用openssl x509 -incacert.pem -noout -text 以文本方式展示,也可以sz到windows中 更改为crt后缀,即可在桌面查看

2、申请证书

将软件中用到的证书和私钥存放在某个目录中

A、先生成私钥:[root@centos6 data]# (umask 066;openssl genrsa -out /test/app.key 1024)
B、然后生成证书申请:[root@centos6 data]# openssl req -new  -key  /test/app.key -out /test/app.csr 
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:magedu
Organizational Unit Name (eg, section) []:devops
Common Name (eg, your name or your server's hostname) []:www.magedu.com
Email Address []:admin@www.magedu.com
此处需要填写登记信息,1;2;4项需要和前面的一样   此处生成了文件app.csr

C、然后把app.csr传到centos7上审核 若通过就能颁发证书:scp app.csr 192.168.93.254/etc/pki/CA 输入centos7的密码即可完成 (放此目录中比较方便)
此时去颁发证书会报错,如下:
[root@centos7 CA]# openssl ca -in app.csr -out certs/app.crt -days 100
/etc/pki/CA/index.txt: No such file or directory
/index.txt:是存放证书的编号,主题,状态等的文件
D、[root@centos7 CA]# > index.txt 将此文件建立起来,会利用该文件自动填充证书的信息
此时去颁发证书会报错,如下:
[root@centos7 CA]# openssl ca -in app.csr -out certs/app.crt -days 100
因为缺少编号 系统不知该从哪号开始
[root@centos7 CA]# echo 09 > serial 设置编号从09开始,顺便将文件建立起来
Cat serial --> 09

3 、颁发证书
E、[root@centos7 CA]# openssl ca -in app.csr -out certs/app.crt -days 100
Certificate is to be certified until May  4 02:59:37 2019 GMT (100 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
此处有两次确认信息,是否要颁发证书
F、[root@centos7 CA]# tree  此为生成证书效果图  
.
├── app.csr
├── cacert.pem
├── certs
│   └── app.crt
├── crl
├── index.txt
├── index.txt.attr
├── index.txt.old
├── newcerts
│   └── 09.pem
├── private
│   └── cakey.pem
├── privkey.pem
├── serial
└── serial.old
G、[root@centos7 CA]# cat index.txt
V   190504025937Z       09  unknown /C=CN/ST=beijing/O=magedu/OU=beiguo/CN=www.magedu.com/emailAddress=admin@magedu.com    表明此证书文件有效
[root@centos7 CA]# cat serial    ---> 0A 此处为09后的下一个数
Certs/app.crt  与  newcerts/09.pem  一样  后者为自动生成
此时,将证书文件,私钥文件,CA的证书文件传给用户centos6,用户即可使用。
H、[root@centos7 CA]# scp certs/app.crt 192.168.93.253:/data
root@192.168.93.253's password: 
app.crt          100% 3883     4.0MB/s   00:00
J、 [root@centos6 data]# ll
total 28
-rw-r--r--  1 root root  3883 Jan 24 11:22 app.crt
-rw-r--r--  1 root root   704 Jan 24 10:24 app.csr
-rw-------  1 root root   891 Jan 24 10:22 app.key
 此处app.key 为原来的私钥,app.crt 为生成的证书,app.csr 文件就没用了,申请完就没用了。所以 app.key,app.crt 就能给需要加密的软件使用了

K、将centos7上/CA文件中的:-rw-r--r-- 1 root root 1436 Jan 24 10:14 cacert.pem 该证书文件也拷贝到centos6中,因为某些软件会用到
到此证书已申请完成
L、[root@centos7 CA]# sz certs/app.crt 可以将之sz到windows桌面查看,因为是crt后缀,即可双击打开,因为证书无法验证,所以我们要导入到进去,双击按照步骤即可完成。

4、吊销证书:
可以先查看证书状态:
Openssl x509 -in certs/app3.crt -noout -subject/-issuer/-dates等等
[root@centos7 CA]#  Openssl ca -revoke newcerts/0B.pem
Openssl ca -status 0B    ---> 0B=revoke   标明0B证书已被吊销  此时证书只有自己知道吊销,别人不知道,所以要生成吊销列表,
Openssl ca -gencrl -out crl.pem
将报错,找不到/etc/pki/CA/crlnumber   该文件存放吊销编号
Echo 09 > crlnumber
Openssl ca -gencrl -out crl.pem      此时已生成吊销列表,
Tree  -->  会显示新的crl.pem的列表,  此时可将crl.pem传出windows  修改格式后即可查看
最后要传到互联网,让用户知道该证书已吊销。

若吊销错误,取消吊销,方法:

Mv index.txt  index.txt.bak
Mv index.txt.old  index.txt
Openssl ca -statys 0B    ---> 0B =Valid   标明 0B证书成功恢复

Openssl  verify - CAfile cacert.pem  certs/app.crt

该命令是查看该证书app.crt是否是我颁发的,检验证书的有效性,若是,即可显示OK,

总结步骤:

1、cd /etc/pki/CA
(umask 077;openssl genrsa -out private/cakey.pem 2048 )
openssl req -new -x509 -key  private/cakey.pem -out cacert.pem -days 3650
> index.txt
echo 09 > serial
2 申请证书
(umask 066;openssl genrsa -out /test/app.key 1024)
openssl req -new  -key  /test/app.key -out /test/app.csr
3 颁发证书
openssl ca -in /test/app.csr  -out /etc/pki/CA/certs/app.crt -days 100
此时,将证书文件,私钥文件,CA的证书文件传给用户centos6,用户即可使用。
4 吊销证书
openssl ca -revoke newcerts/0B.pem
openssl  ca -status 0B
echo 09 > crlnumber
openssl ca -gencrl -out /etc/pki/CA/crl.pem

若前文中的1,2,4,三项不一致,出现的问题分析,(在同一计算机就可实验)如下:
1、先生成新的私钥文件: (umask 066;openssl genrsa -out /data/app2.key 1024)
2、然后生成证书申请:openssl req -new -key /data/app2.key -out /data/app2.csr
将登记信息故意填的不一样,此时,/data/下生成了两个文件,app2.csr app2.key
3、颁发证书: openssl ca -in /data/app2.csr -out certs/app2.crt -days 200
此时,报错信息为,组织机构是不一样的,
解救方法:
修改配置文件,vim /etc/pki/tls/openssl.cnf 将1,2,4,三项改为不一样即可。将证书从新写一遍即可,打开tree ---> 会显示:cat serial 变为0B ; cat index.txt 将显示两行 表明该文件生成了第二个数据,即新的证书申请成功!

注意:若提交一个证书申请,不能够颁发多次,因为在/CA中,cat index.txt.attr  中会显示 “unique_subject -yes” 标明主题必须唯一,所以不可颁发多次。   将“yes” 改为“no”即可,颁发多次。因为他是工作目录,优先级比配置文件的高,所以只有修改此处的文件,vim  index.txt.attr 将yes改为no,才可做到颁发多次的目的。

转载于:https://blog.51cto.com/14128387/2346208

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值