目的:搭建一个CA服务器并给客户机授权认证

准备:
   1. 一台linux操作系统(以centos7虚拟机为例)
   2. 准备一台客户机(centos6虚拟机)
先上一张思维导图吧。
CA服务器的搭建和申请证书_第1张图片

步骤

一.CA服务器创建。

   1. CA服务器我们用centos7来建立,先申请该服务器的私钥,注意路径,我们要把文件放在/etc/pki/CA/private下
CA服务器的搭建和申请证书_第2张图片
   2. 利用刚刚建立好的私钥生成自签名证书,注:CA的证书是自己给自己签名的。
CA服务器的搭建和申请证书_第3张图片
   查看自签名证书
CA服务器的搭建和申请证书_第4张图片
  导入到windows系统中修改后缀为cer也可以看到详细信息。
CA服务器的搭建和申请证书_第5张图片
   3. 如果是初次搭建CA还要手动建立index文件和serial文件,否则在给客户机颁发证书时会提示报错。
CA服务器的搭建和申请证书_第6张图片
   4.得到客户机的证书申请给客户机颁发证书。
CA服务器的搭建和申请证书_第7张图片
颁发证书后也可以把证书导入到windows改后缀查看,注意要先把CA服务器的证书安装到系统中才可以看到具体的证书路径。
CA服务器的搭建和申请证书_第8张图片
   5.吊销证书。
CA服务器的搭建和申请证书_第9张图片


二.客户机申请证书。

   1.客户机首先也要申请自己的私钥,这里以虚拟机centos6为例,客户机的路径可以自己定义,我这里是在/data/app/
CA服务器的搭建和申请证书_第10张图片
   2.用刚刚生成的私钥创建CA证书申请文件。
CA服务器的搭建和申请证书_第11张图片
   3.把刚刚生成的CA证书申请文件,发送给CA服务器认证。
CA服务器的搭建和申请证书
CA服务器通过申请认证后,就可以把认证后的证书拿过来使用了。


利用shell脚本实现自动创建CA和申请。

一.CA服务器

注:客户机自动传过来的CA申请证书会保存在/data/下,只需要脚本后跟文件名就可以了,不用写后缀。

#!/bin/bash
    #
#***********************************************************
#Autohor:              GuoCheng                             
#QQ:                  792402658                             
#Date:                2019-06-20 
#FileName:             createCA.sh
#***********************************************************
set -u
set -e
way=/etc/pki/CA
day=100
name=$1
cd $way

#-------------------------定义函数-------------------------------
#生成CA自己的私钥
private(){
(umask 077;openssl genrsa -out private/cakey.pem 4096 )
openssl req -new -x509 -key $way/private/cakey.pem  -out $way/cacert.pem  -days 3650 < $way/serial
        fi

if [ ! -e $way/private/cakey.pem ];then
        private
        fi
#颁发证书
openssl ca -in  /data/${name}.csr  -out $way/certs/${name}.crt  -days  $day 

二.客户机

注:客户机只需要在脚本名后写入你想申请的CA证书名(不用写后缀)和CA服务器IP两个参数就可以看了,注意此脚本不够完善 顺序不要写反。

#!/bin/bash
#
#***********************************************************
#Autohor:              GuoCheng                             
#QQ:                  792402658                             
#Date:                2019-06-22 
#FileName:             RequestCA.sh
    #***********************************************************
set -u
set -e
way=/data/app
hostname=root
password=792402658
filename=$1
CAIP=$2
filekey=${filename}.key
filecsr=${filename}.csr
cd $way

#----------------------定义函数-------------------------------
key(){
(umask 066;openssl genrsa -out $filekey 1024)
openssl req -new -key $filekey -out $filecsr <