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