#!/bin/bash
#
#********************************************************************
#Author:zhangzhuo
#QQ: 1191400158
#Date: 2021-01-13
#FileName:crets.sh
#URL: https://www.zhangzhuo.ltd
#Description:The test script
#Copyright (C): 2021 All rights reserved
#********************************************************************
#引用系统函数
. /etc/init.d/functions
#生成创建CA所需的文件
[ ! -d /etc/pki/CA ] && mkdir -p /etc/pki/CA/{certs,crl,newcerts,private} &>/dev/null
[ ! -f /etc/pki/CA/index.txt ] && touch /etc/pki/CA/index.txt
[ ! -f /etc/pki/CA/serial ] && echo 00 > /etc/pki/CA/serial
[ ! -f /etc/pki/CA/crlnumber ] && touch /etc/pki/CA/crlnumber
#定义变量
SUBJ_SET='/C=CN/ST=neimeng/L=baotou/O=zhangzhuo/CN=www.zhangzhuo.org' #CA机构信息
DAYS_CA=3650 #定义CA自签证书有效天数
DAYS=365 #申请的CA证书有效期
APP_SUBJ='/C=CN/ST=neimeng/L=baotou/O=zhangzhuo' #机构信息需要跟CA机构信息一致
APP_NAME=("app1" "app2" "app3") #应用名称跟下面的数组对应填写,后面也是证书文件名称
APP_SUBJ_NAME=("/CN=www.zhangzhuo1.org" "/CN=www.zhangzhuo2.org" "/CN=www.zhangzhuo3.org") #要给什么主机使用域名
[ ${#APP_NAME[*]} -eq ${#APP_SUBJ_NAME[*]} ] || { echo '请检查APP_NAME和APP_SUBJ_NAME数组个数是否一样';exit; }
num=`echo $[${#APP_NAME[*]}-1]`
#生成CA私钥
[ ! -f /etc/pki/CA/private/cakey.pem ] && openssl req -x509 -newkey rsa:2048 -subj $SUBJ_SET -set_serial 1 -keyout /etc/pki/CA/private/cakey.pem -nodes -days $DAYS_CA -out /etc/pki/CA/cacert.pem &>/dev/null
[ $? -eq 0 ] && action "CA私钥和自签名证书生成完成"
#给应用申请证书
for i in `seq 0 $num`;do
openssl req -newkey rsa:2048 -nodes -subj ${APP_SUBJ}${APP_SUBJ_NAME[$i]} -keyout /data/${APP_NAME[$i]}.key -out /data/${APP_NAME[$i]}.crs &>/dev/null
echo -e 'y\ny\n'| openssl ca -in /data/${APP_NAME[$i]}.crs -out /etc/pki/CA/certs/${APP_NAME[$i]}.crt -days $DAYS &>/dev/null
cp /etc/pki/CA/certs/${APP_NAME[$i]}.crt /data/
action "应用${APP_NAME[$i]}证书申请完成,文件在/data文件夹中"
done
注意:申请证书的信息可以在变量中修改
- SUBJ_SET和APP_SUBJ需要一致。
- APP_NAME和APP_SUBJ_NAME数组需要个数一致不然会退出脚本,位置需要对应以便于自己区分
- 创建的CA证书根据APP_NAME和APP_SUBJ_NAME数组的个数进行创建
- 变量名称非必要不要修改
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于