我们采用openssl这个软件来实现
所以首先我们来看下该软件的配置文件
实现环境 centos 7.2
[[email protected] ~]# rpm -qc openssl //可以看到该命令没有任何输出,我们可以思考该软件包还存在其他的支包 [[email protected] ~]# rpm -qa | grep "openssl" //果然我们可以看到存在 libs 支包 openssl-libs-1.0.1e-42.el7.9.x86_64 openssl-1.0.1e-42.el7.9.x86_64 [[email protected] ~]# rpm -qc openssl-libs /etc/pki/tls/openssl.cnf //终于找到配置文件了
查看该配置文件
[[email protected] ~]# cat /etc/pki/tls/openssl.cnf
//我们主要关注 [ ca ] 段落
(1)自建CA;需要私钥 //私钥必须在特定的目录下,且必须命名为cakey.pem 配置文件定义的
[[email protected] ~]# (umask 077 ; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) (在子shell中执行该命令 umask 077不影响当前shell的umask) Generating RSA private key, 2048 bit long modulus ....................+++ ..................+++ e is 65537 (0x10001) [[email protected] ~]# ll /etc/pki/CA/private/cakey.pem //生成的私钥文件 -rw-------. 1 root root 1675 Sep 11 16:57 /etc/pki/CA/private/cakey.pem
(2)生成自签证书 //特定目录下的特定文件名 配置文件已经定义的
[[email protected] ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365 //输出省略
[[email protected] ~]# ll /etc/pki/CA/cacert.pem //我们的CA证书 -rw-r--r--. 1 root root 1302 Sep 11 17:08 /etc/pki/CA/cacert.pem
(3)为CA提供所需要的目录及文件 //存在则可以忽略
[[email protected] ~]# mkdir /etc/pki/CA/{certs,crl,newcerts} [[email protected] ~]# touch /etc/pki/CA/{serial,index.txt} [[email protected] ~]# echo 01 > /etc/pki/CA/serial [[email protected] ~]# tree /etc/pki/CA /etc/pki/CA ├── cacert.pem ├── certs ├── crl ├── index.txt ├── newcerts ├── private │ └── cakey.pem └── serial 4 directories, 4 files
至此:我们的CA服务器已经配置完成
假设某服务器要用到证书进行安全通信,需要向CA请求签署证书 (此时我们换台centos 6.8 的主机)
我们以httpd服务为例
确保安装有httpd服务
[[email protected] ~]# mkdir /etc/httpd/ssl
(1)生成私钥
[[email protected] ~]# (umask 077 ; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) Generating RSA private key, 2048 bit long modulus ...........................................................................+++ .............................................................+++ e is 65537 (0x10001) [[email protected] ~]# ll /etc/httpd/ssl/httpd.key -rw-------. 1 root root 1679 Sep 7 02:55 /etc/httpd/ssl/httpd.key
(2)生成证书签署请求
[[email protected] ~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
此处要和图三信息一样 否则可能会签署失败 (由于是自建的私有CA)
(3)将请求通过可靠方式发送给CA主机
这里我们通过SCP命令来实现
[[email protected] ~]# scp /etc/httpd/ssl/httpd.csr [email protected]:/tmp //将本地的httpd.csr文件复制一份到10.1.0.111主机的/tmp目录下
这里我们切换到CA服务器 即 centos 7 上
在CA主机上签署证书
[[email protected] ~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365 httpd.crt 即为 centos6 上的 httpd 的证书
查看证书中的信息:
[[email protected] ~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject serial=01 subject= /C=CN/ST=Beijing/O=Sxj/OU=Si/CN=asher.com
同时数据块中也有相应的记录
[[email protected] ~]# cat /etc/pki/CA/index.txt V 170911110034Z 01 unknown /C=CN/ST=Beijing/O=Sxj/OU=Si/CN=asher.com
时间: 2024-10-13 11:50:22