实验:建立私有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.253:/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
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后缀,即可双击打开,因为证书无法验证,所以我们要导入到进去,双击按照步骤即可完成。
吊销证书:
可以先查看证书状态:
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,
总结步骤:
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,才可做到颁发多次的目的。
标签:证书,app,第一节,centos7,pem,20190123,root,CA 来源: http://blog.51cto.com/14128387/2346208