centos下利用openssl来实现证书的颁发
直接进入正题,细节坑就不说了,自己解决起来更有挑战性不是
步骤流程:
我是拿的7.3版本做CA主机,6.8版本做客户端
1.创建CA
2.生成私钥
3.生成自签名证书
4.到客服端
5.生成私钥
6.生成证书申请文件
7.将请求发送给-CA主机
8.CA主机-验证签署
9.拷回给客户端使用
用法:openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64] [-salt]
openssl 的配置文件:/etc/pki/tls/openssl.cnf
选项:
-ciphername:指明算法;
-in filename:要加密的文件;
-out filename:加密后的文件的存放位置;
-pass arg:指明密码;
-e:加密;
-d:解密;
-a/-base64:文本格式编码,默认二进制格式编码;
-salt:给密码添加随机数;
创建CA:
为CA提供所需的目录及文件,无则创建,有则无需创建(这个非常重要的,关乎到证书的成功与否)
#touch /etc/pki/CA/index.txt
#echo 01 > /etc/pki/CA/serial
生成私钥:# (umask 077;openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE NUM_BITS);
():表示启动一个子shell,在子shell中运行的命令只对子shell起作用不影响父shell;
-out:生成的私钥保存的位置;
NUM_BITS:秘钥位长,它必须是2的n次方倍,例如512、1024、2048、4096等。
#公钥是从私钥中提取的;
#默认放置于/etc/pki/CA/private/目录;
(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
使用遮罩码077是为了确保私钥文件只有属主可读写
生成自签证书;默认放置于/etc/pki/CA/目录;
#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
-x509:生成自签格式证书,专用于创建私有CA时,非自签证书无需加该选项;
-key:生成请求时用到的私有文件路径;便于自动从该路径提取公钥;
-out:生成的请求文件路径,如果自签操作将直接生成签署过的证书;
– days:证书的有效时长,单位是day;
#内容要按照cat /etc/pki/tls/openssl.cnf配置文件的格式要求
三大严格要求 1.国家 2.省份 3.公司
如下图
生成公钥 :cakey.pem
自签证书:cacert.pem
这是生成文件的格式要求,必须在这个目录中
记好填写的信息
CA证书就制作ok了
下面咱们就可以一本正经的申请证书了
以httpd为例);
用到证书的主机生成私钥
# mkdir /etc/httpd/ssl 这个私钥的放置目录自己指定,没有要求,用的时候,指定位置就可以了
# cd /etc/httpd/ssl
# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
用到证书的主机生成证书签署请求
# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365 (后面-day指定的证书时限有些说道,这个时间不是我们这里决定的,所以多少无所谓,反正也不生效,归CA来指定)
这里和CA的信息必须一致
生成私钥 :httpd.key
生成证书申请文件:httpd.csr
文件格式要求一样的,后缀必须是这个
下面将请求通过可靠方式发送给CA主机;
# scp /etc/httpd/ssl/httpd.csr root@172.16.27.7:root (也可以用U盘拷贝)
CA主机在确认安全的情况下 可以签署发证了
在CA主机上签署证书;
# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365 (这里的时间才是决定证书的有效期,可以任意指定)
之后,把证书在拷回给客户端使用,任务完成。
字母“V”表示该证书已签署;
原创文章,作者:All well,如若转载,请注明出处:http://www.178linux.com/73183