|
#!/bin/bash
# Author:mos
# Script Name:mos_ca.sh
# Date & time:2013-01-06/23:05:35
# version:1.0.2
# Description:
#
[-f/etc/sysconfig/mos_ca.conf] &&. /etc/sysconfig/mos_ca.conf
Config () {
CNF=${CNF:-/ETC/PKI/TLS/OPENSSL.CNF}
CP $Cnf $CNF. ' Date +%f-%t '. bak
dir=${dir:-/etc/pki/ca/}
CNY=${CNY:-CN}
Pve=${pve:-henan}
Cty=${cty:-zhengzhou}
Bis=${bis:-youguess}
Bnh=${bnh:-tech}
opn= ' grep ' stateorprovincename_default.*=[[:space:]].* '/etc/pki/tls/openssl.cnf|cut-d ' t '-f1 '
Sed-i "s@ (^dir.*=[[:space:]). *@1$dir@g" $Cnf
Sed-i "s@ (^countryname_default.*=[[:space:]). *@1$cny@g" $Cnf
If [$OPN = s];then
Sed-i "s@ (^stateorprovincename_default.*=[[:space:]). *@1$pve@g" $Cnf
Else
Sed-i "s@^# (stateorprovincename_default.*=[[:space:]). *@1$pve@g" $Cnf
Fi
Sed-i "s@ (^localityname_default.*=[[:space:]). *@1$cty@g" $Cnf
Sed-i "s@ (^0.organizationname_default.*=[[:space:]). *@1$bis@g" $Cnf
Sed-i "s@^# (Organizationalunitname_default [[: space:]] =) @1 $Bnh @g" $Cnf
}
Create_ca () {
dir=${dir:-/etc/pki/ca/}
[! d ${dir}crl] && mkdir-pm ${dir}crl
[!-D ${dir}ne Wcerts] && mkdir-pm ${dir}newcerts
[!-D ${dir}certs] && mkdir-pm-${dir}certs
[!-F ${dir}index.txt] && touch ${dir}index.txt
[!-F ${dir}serial] && echo > ${dir}serial
[! -D ${dir}private] && mkdir-pm ${dir}private
(umask 077; OpenSSL genrsa-out ${dir}private/cakey.pem 2048 &>/dev/null)
#read-P "please input CA hostname [default:ca.mos.com]:" Host
HOST=${HOST:-CA.MOS.COM}
#read-P "Please input CA e-mail [default]:root@mos.com]:" Em
Em=${em:-root@mos.com}
Echo-e "Nnnnn${host}n${em }n "|openssl req-x509-new-key ${dir}private/cakey.pem-out ${dir}cacert.pem-days 3650 &>/dev/null
}
Create () {
dir=${dir:-/etc/pki/ca/}
date= ' Date +%f-%h:%m:%s '
[!-F/ETC/PKI/CA/PRIVATE/CAKEY.PEM] & & Create_ca && return 0
If [-f/etc/pki/ca/private/cakey.pem];then
read-p CA ex Iste,continue? Y:move file; N-> Quit. [Y|n] ' Choice
if [[' $Choice ' = ' y ']];then
[! -D "$Dir" "$Date" tmp] && mkdir-p "$Dir" "$Date" tmp
mv "$Dir" * "$Dir" "$Date" tmp/&>/dev/null
Create_ca
elif [["$Choice" = = "n"]];then
Exit 0
Else
echo "Error input ..."
exit 1
fi
Fi
}
Create_crt () {
(umask 077;openssl genrsa 1024 > "$Ddir" "$Dname". Key) &>/dev/null
Echo-e "nnnnn" $Dhost "n" $DE "nnn" |openssl Req-new-key "$Ddir" "$Dname". Key-out "$Ddir" "$Dname". CSR &>/dev/null
[[$Set!= ' s]]] && echo-e "Ynyn" |openssl ca-in "$Ddir" "$Dname". Csr-out "$Ddir" "$Dname". Crt-days 365 &&G T /dev/null && Exit 0
[[$Set = = "-S"]] && exit 0
}
Demo_crt () {
ddir=${ddir:-/opt/mos_demo/}
Dname=${dname:-demo}
Dhost=${dhost:-demo.mos.com}
De=${de:-root@mos.com}
Date= ' Date +%f-%h:%m:%s '
[!-D $Ddir] && mkdir-p $Ddir &>/dev/null
[[!-f ' $Ddir ' $Dname '. Key &&!-F "$Ddir" "$Dname". CSR]] && create_crt && exit 0
If [F-$Ddir "$Dname". Key | |-F "$Ddir" "$Dname". CSR | |-F "$Ddir" "$Dname". CRT]];then
Read-p "Demo certificate existe, Continue?" Y:move file; N:quit. [Y|n] "Cie
if [["$Cie" = "Y"]];then
[!-D "$Ddir" "$Date" tmp] && mkdir-p "$Ddir" "$Date" tmp && MV "$Ddir" "$Dname" * "$Ddir" "$Date" tmp/&&G T /dev/null
Create_crt
Exit 0
elif [["$Cie" = "n"]];then
Exit 0
Else
echo "Error input ..."
Fi
Fi
}
Set=$1
if [[$Set =~ (-N) | ( -O) | (s) | (CA) &&-Z $ | | -Z $Set]];then
[-Z $Set] && Config && Create && demo_crt && exit 0
[$Set =-n] && demo_crt && exit 0
[$Set = s] && Config && demo_crt && exit 0
[$Set = CA] && Config && Create && exit 0
[$Set =-O] && echo-e "Ynyn" |openssl ca-in "$Other". Csr-out "$Other". Crt-days 365 &>/dev/null
Else
echo "Error,invalid option!"
Exit 1
Fi
|