shell 脚本 自签名证书+证书请求

shell 脚本 自签名证书+证书请求

脚本运行方式

  1. 使用source 脚本名,然后直接在bash里敲函数名称
[root@localhost ~]#source rootca.sh 
[root@localhost ~]#selectca 
根证书名:
ca.youyou.com
颁发的证书:
www.youyou.com
[root@localhost ~]#
  1. 在脚本里使用哪个模块就取消注释哪个模块,然后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 ~]#

脚本内容说明

注意:重定向空行不要删除。

  1. createca:创建根ca
  2. deleteca:删除ca以及生成的证书文件
  3. selectca:查看CA
  4. 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
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值