shell 脚本 自签名证书+证书请求
脚本运行方式
- 使用source 脚本名,然后直接在bash里敲函数名称
[root@localhost ~]#source rootca.sh
[root@localhost ~]#selectca
根证书名:
ca.youyou.com
颁发的证书:
www.youyou.com
[root@localhost ~]#
- 在脚本里使用哪个模块就取消注释哪个模块,然后sh 脚本名执行,注意如果使用第一种方法,请把里面调用函数注释掉
[root@localhost ~]#cat rootca.sh | tail -6
}
# main 主程序
# createca
# deleteca
selectca
# requestca
[root@localhost ~]#
[root@localhost ~]#sh rootca.sh
根证书名:
ca.youyou.com
颁发的证书:
www.youyou.com
[root@localhost ~]#
脚本内容说明
注意:重定向空行不要删除。
- createca:创建根ca
- deleteca:删除ca以及生成的证书文件
- selectca:查看CA
- requestca:请求CA
#!/bin/bash
#
#********************************************************************
#Author: liuhao
#QQ: 1921160095
#Date: 2019-11-07
#FileName: ca.sh
#Description: The test script
#Copyright (C): 2019 All rights reserved
#********************************************************************
# 创建自签名的根CA
createca() {
#sed -i '/Where everything/c dir\t\t= /etc/pki/CA\t\t# Where everything is kept' openssl.cnf
#如果需要更改CA文件存放的目录,可以修改。更改目录使用
mkdir /etc/pki/CA/{certs,newcerts,private,crl} -p
cd /etc/pki/CA
read -p "请输入根CA的完整域名 default:ca.youyou.com " rootca
[ ! -z $rootca ] || rootca=ca.youyou.com
#如果没有输入,就赋值一个默认的名称
#echo $rootca
[ -f private/cakey.pem ] || (umask 077;openssl genrsa -out private/cakey.pem 2048)
[ -f cacert.pem ] || openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 << eof
CN
BJ
BJ
youyou
youyou
$rootca
eof
[ -f index.txt ] || touch index.txt
[ -f serial ] || echo 00 > serial
[ -f crlnumber ] || echo 00 > crlnumber
}
# 删除自签名的根CA,以及所颁发的证书
deleteca() {
[ -d /etc/pki/CA ] && rm -rf /etc/pki/CA
rm -f /youyouCA/*.key
rm -f /youyouCA/*.csr
mkdir /etc/pki/CA
}
# 查看CA的证书,以及颁发的证书
selectca() {
if [ -f /etc/pki/CA/cacert.pem ];then
echo 根证书名:
#openssl x509 -in /etc/pki/CA/cacert.pem -noout -text | grep Subject: | cut -d"=" -f7
openssl x509 -in /etc/pki/CA/cacert.pem -noout -text | grep "Subject:" | awk -F"=" '{print $NF}'
else
echo 未搭建根CA
fi
certls=`ls /etc/pki/CA/certs/`
if [ ! $certls ];then
echo 没有证书信息
else
for i in `ls /etc/pki/CA/certs/`;do
echo 颁发的证书:
openssl x509 -in /etc/pki/CA/certs/$i -noout -text | grep "Subject:" | awk -F"=" '{print $NF}'
done
fi
}
# 请求一个CA证书
requestca() {
read -p "请输入根CA的完整域名 default:xiapi.youyou.com " reqca
[ ! -z $rootca ] || reqca=xiapi.youyou.com
reqarray=(${reqca//./ })
[ -d /youyouCA/ ] || mkdir /youyouCA/
(umask 077;openssl genrsa -out /youyouCA/${reqarray[0]}.key 2048)
openssl req -new -key /youyouCA/${reqarray[0]}.key -out /youyouCA/${reqarray[0]}.csr << eof
CN
BJ
B:J
youyou
youyou
$reqca
eof
openssl ca -in /youyouCA/${reqarray[0]}.csr -out /etc/pki/CA/certs/${reqarray[0]}.crt << eof
y
y
eof
}