构建私有CA

构建私有CA

我们采用openssl这个软件来实现

所有首先我们来看下该软件的配置文件

实现环境 centos 7.2

[root@redhat7 ~]# rpm -qc openssl  //可以看到该命令没有任何输出,我们可以思考该软件包还存在其他的支包
[root@redhat7 ~]# rpm -qa | grep "openssl"  //果然我们可以看到存在 libs 支包
openssl-libs-1.0.1e-42.el7.9.x86_64
openssl-1.0.1e-42.el7.9.x86_64
[root@redhat7 ~]# rpm -qc openssl-libs
/etc/pki/tls/openssl.cnf   //终于找到配置文件了

构建私有CA

查看该配置文件

[root@redhat7 ~]# cat /etc/pki/tls/openssl.cnf

//我们主要关注 [ ca ] 段落

构建私有CA

(1)自建CA;需要私钥 //私钥必须在特定的目录下,且必须命名为cakey.pem 配置文件定义的

[root@redhat7 ~]# (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)
[root@redhat7 ~]# ll /etc/pki/CA/private/cakey.pem  //生成的私钥文件
-rw-------. 1 root root 1675 Sep 11 16:57 /etc/pki/CA/private/cakey.pem

(2)生成自签证书 //特定目录下的特定文件名 配置文件已经定义的 [root@redhat7 ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365 //输出省略

构建私有CA

[root@redhat7 ~]# 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提供所需要的目录及文件 //存在则可以忽略

[root@redhat7 ~]# mkdir /etc/pki/CA/{certs,crl,newcerts}
[root@redhat7 ~]# touch /etc/pki/CA/{serial,index.txt}
[root@redhat7 ~]# echo 01 > /etc/pki/CA/serial
[root@redhat7 ~]# tree /etc/pki/CA
/etc/pki/CA
├── cacert.pem
├── certs
├── crl
├── index.txt
├── newcerts
├── private
│   └── cakey.pem
└── serial
4 directories, 4 files

构建私有CA

至此:我们的CA服务器已经配置完成

假设某服务器要用到证书进行安全通信,需要向CA请求签署证书 (此时我们换台centos 6.8 的主机)

我们以httpd服务为例

确保安装有httpd服务

[root@centos6 ~]# mkdir /etc/httpd/ssl

(1)生成私钥

[root@centos6 ~]# (umask 077 ; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
Generating RSA private key, 2048 bit long modulus
...........................................................................+++
.............................................................+++
e is 65537 (0x10001)
[root@centos6 ~]# ll /etc/httpd/ssl/httpd.key 
-rw-------. 1 root root 1679 Sep  7 02:55 /etc/httpd/ssl/httpd.key

(2)生成证书签署请求

[root@centos6 ~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365

构建私有CA

此处要和图三信息一样 否则可能会签署失败 (由于是自建的私有CA)

(3)将请求通过可靠方式发送给CA主机

这里我们通过SCP命令来实现

[root@centos6 ~]# scp /etc/httpd/ssl/httpd.csr  root@10.1.0.111:/tmp //将本地的httpd.csr文件复制一份到10.1.0.111主机的/tmp目录下

这里我们切换到CA服务器 即 centos 7 上

在CA主机上签署证书

[root@redhat7 ~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365


httpd.crt 即为 centos6 上的 httpd 的证书

构建私有CA 查看证书中的信息:

[root@redhat7 ~]# 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

同时数据块中也有相应的记录

[root@redhat7 ~]# cat /etc/pki/CA/index.txt
V   170911110034Z       01  unknown /C=CN/ST=Beijing/O=Sxj/OU=Si/CN=asher.com

原创文章,作者:sixijie,如若转载,请注明出处:http://www.178linux.com/49646

(0)
sixijiesixijie
上一篇 2016-09-28
下一篇 2016-09-28

相关推荐

  • 简单shell脚本编程示例

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 脚本内容: 执行结果: 2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中 脚本内容: 执行结果: 3、编写脚本/roo…

    Linux干货 2016-08-15
  • N25-第二周博客作业

    1. Linux上的文件管理类命令都有那些,其常用的使用方法及其相关示例演示. 文件管理工具有cp, mv, rm cp命令: 复制文件或文件夹 语法: cp [OPTION]… [-T] SOURCE DEST 单源复制cp [OPTION]… SOURCE… DIRECTORY 多源复制 常用选项:  &nb…

    Linux干货 2016-12-10
  • 推荐-Nginx Proxy模块的应用之负载均衡

    Ngnix Proxy模块的应用之负载均衡 Ngnix Proxy模块的应用之负载均衡 Proxy 模块介绍 实验环境 配置Proxy Proxy 模块介绍   在我之前的文章提到过,Nginx可以提供反向代理加速、基于应用层的负载均衡并能对后端服务器做健康状态检测。下面我们就动手操作一下,看如何实现上述功能。 实验环境 主机名称 主要功能 外网地址 内网地…

    Linux干货 2016-03-27
  • Python之入门篇

    一、环境准备 环境准备 –> pyenv (安装python解释器,管理Python版本,管理python虚拟环境) https://github.com/pyenv/pyenv https://github.com/yyuu/pyenv-installer # yum -y install git # curl -L https://ra…

    Linux干货 2015-02-07
  • CentOS软RAID实现配置

     实现软raid1、fdisk t fd //修改磁盘分区类型fd2、创建raid设备     创建一个RAID5,5块儿硬盘4块做RAID,1块儿做空闲硬盘(顶替硬盘使用)    mdadm -C /dev/md0 -a yes -l 5  -n …

    Linux干货 2016-08-30
  • 第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 2、取出最后登录到当前系统的用户的相关信息。 注:命令last的信息中,首行为最后登录的用户 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 注:uniq命令显示的重复必须满足重复且相连条件,否则会分开计数。 4、将/etc/passwd中的第三…

    2017-02-19