| 1023 | franck | 1 | #!/bin/sh
 | 
        
           |  |  | 2 |   | 
        
           |  |  | 3 | # Id: $Id$
 | 
        
           |  |  | 4 |   | 
        
           |  |  | 5 | # alcasar-certificates.sh
 | 
        
           |  |  | 6 | # by Franck BOUIJOUX and REXY
 | 
        
           |  |  | 7 | # This script is distributed under the Gnu General Public License (GPL)
 | 
        
           |  |  | 8 |   | 
        
           |  |  | 9 | # Script permettant 
 | 
        
           |  |  | 10 | #	- d'exporter les certificats d'un serveur pour les transposer sur un autre.
 | 
        
           |  |  | 11 |   | 
        
           |  |  | 12 | # This script allows 
 | 
        
           |  |  | 13 | #	- export certificates server to move them.
 | 
        
           |  |  | 14 |   | 
        
           |  |  | 15 |   | 
        
           |  |  | 16 | DIR_EXPORT="/root/Certificats"
 | 
        
           |  |  | 17 | DIR_PKI="/etc/pki"
 | 
        
           |  |  | 18 | DIR_SAVE="/root/PKI_SAVE"
 | 
        
           |  |  | 19 | DIR_IMPORT="/root/Certificats"
 | 
        
           |  |  | 20 |   | 
        
           |  |  | 21 |   | 
        
           |  |  | 22 | usage="Usage: alcasar-certificates.sh {--export or -x} | {--import or -i <FileOfCertificate.tar.gz>} "
 | 
        
           |  |  | 23 |   | 
        
           |  |  | 24 | nb_args=$#
 | 
        
           |  |  | 25 | args=$1
 | 
        
           |  |  | 26 | if [ $nb_args -eq 0 ]
 | 
        
           |  |  | 27 | then
 | 
        
           |  |  | 28 | 	nb_args=1
 | 
        
           |  |  | 29 | 	args="-h"
 | 
        
           |  |  | 30 | fi
 | 
        
           |  |  | 31 |   | 
        
           |  |  | 32 |   | 
        
           |  |  | 33 | NOW="$(date +%G%m%d-%Hh%M)"  		# date et heure du moment
 | 
        
           |  |  | 34 | FILE="certificates-$NOW"
 | 
        
           |  |  | 35 | DIR_SAVE=$DIR_SAVE-$NOW
 | 
        
           |  |  | 36 |   | 
        
           |  |  | 37 | # Function of export 
 | 
        
           |  |  | 38 | function certs_export() {
 | 
        
           |  |  | 39 | 	#  Export of CA Certificate 
 | 
        
           |  |  | 40 | 	cd /root
 | 
        
           |  |  | 41 | 	tar cvf $FILE.tar  $DIR_PKI/CA/{alcasar-ca.crt,private/alcasar-ca.key}
 | 
        
           |  |  | 42 |   | 
        
           |  |  | 43 | 	#  Export of server Certificate 
 | 
        
           |  |  | 44 | 	tar rvf $FILE.tar $DIR_PKI/tls/{certs/alcasar.crt,private/alcasar.key,certs/server-chain.crt} 
 | 
        
           |  |  | 45 | 	gzip $FILE.tar 
 | 
        
           |  |  | 46 | 	echo "Le ficher des certificats exportés est : $FILE.tar.gz"
 | 
        
           |  |  | 47 | } # end function export
 | 
        
           |  |  | 48 |   | 
        
           |  |  | 49 |   | 
        
           |  |  | 50 | function archive() {
 | 
        
           |  |  | 51 | 	# Sauvegarde de la pki actuelle
 | 
        
           |  |  | 52 | 	[ -d $DIR_SAVE ] || mkdir $DIR_SAVE
 | 
        
           |  |  | 53 |   | 
        
           |  |  | 54 | 	#  Save of CA Certificate 
 | 
        
           |  |  | 55 | 	cd $DIR_PKI/CA/
 | 
        
           |  |  | 56 | 	cp alcasar-ca.crt $DIR_SAVE/. 
 | 
        
           |  |  | 57 | 	cp private/alcasar-ca.key $DIR_SAVE/. 
 | 
        
           |  |  | 58 |   | 
        
           |  |  | 59 | 	#  Save of server Certificate 
 | 
        
           |  |  | 60 | 	cd $DIR_PKI/tls
 | 
        
           |  |  | 61 | 	cp certs/alcasar.crt $DIR_SAVE/. 
 | 
        
           |  |  | 62 | 	cp private/alcasar.key $DIR_SAVE/. 
 | 
        
           |  |  | 63 | 	cp certs/server-chain.crt $DIR_SAVE/. 
 | 
        
           |  |  | 64 | } # end function archive
 | 
        
           |  |  | 65 |   | 
        
           |  |  | 66 | function import() {
 | 
        
           |  |  | 67 | 	echo "Would you like to Import New Certificates in ALCASAR ?"
 | 
        
           |  |  | 68 | 	read response
 | 
        
           |  |  | 69 | 	if [ $response = "y" ] || [ $response = "o" ] || [ $response = "Y" ] || [ $response = "O" ]
 | 
        
           |  |  | 70 | 	then
 | 
        
           |  |  | 71 | 		[ -d $DIR_IMPORT ] || mkdir $DIR_IMPORT
 | 
        
           |  |  | 72 | 		rm -rf $DIR_IMPORT/*
 | 
        
           |  |  | 73 |   | 
        
           |  |  | 74 | 		#  Import of CA Certificate 
 | 
        
           |  |  | 75 | 		tar xzvf $1 --directory=$DIR_IMPORT
 | 
        
           |  |  | 76 | 		echo "Import new certificates in ALCASAR !!!"
 | 
        
           |  |  | 77 | 		cp -r $DIR_IMPORT/* /.
 | 
        
           |  |  | 78 | 		chown root:apache $DIR_PKI/CA/{alcasar-ca.crt,private/alcasar-ca.key}
 | 
        
           |  |  | 79 | 		chown root:apache $DIR_PKI/tls/{certs/alcasar.crt,private/alcasar.key,certs/server-chain.crt}
 | 
        
           |  |  | 80 |   | 
        
           |  |  | 81 | 		# Service apache restart
 | 
        
           |  |  | 82 | 		service httpd restart
 | 
        
           |  |  | 83 | 	else 
 | 
        
           |  |  | 84 | 	      echo "You are not import new certificates !!!"
 | 
        
           |  |  | 85 | 	      exit 0
 | 
        
           |  |  | 86 | 	fi
 | 
        
           |  |  | 87 | } # end import
 | 
        
           |  |  | 88 |   | 
        
           |  |  | 89 | #  Core script
 | 
        
           |  |  | 90 | case $args in
 | 
        
           |  |  | 91 | 	-\? | -h* | --h*)
 | 
        
           |  |  | 92 | 		echo "$usage"
 | 
        
           |  |  | 93 | 		exit 0
 | 
        
           |  |  | 94 | 		;;
 | 
        
           |  |  | 95 | 	--export | -x)	
 | 
        
           |  |  | 96 | 		archive
 | 
        
           |  |  | 97 | 		certs_export
 | 
        
           |  |  | 98 | 		;;
 | 
        
           |  |  | 99 | 	--import | -i)
 | 
        
           |  |  | 100 | 		nb_args=$#
 | 
        
           |  |  | 101 | 		if [ $nb_args -eq 1 ]
 | 
        
           |  |  | 102 | 		then
 | 
        
           |  |  | 103 | 			echo "Il faut passer un fichier de certificat en paramètre !!!"
 | 
        
           |  |  | 104 | 			exit 0 
 | 
        
           |  |  | 105 | 		fi
 | 
        
           |  |  | 106 | 		import $2
 | 
        
           |  |  | 107 | 		;;
 | 
        
           |  |  | 108 | 	*)
 | 
        
           |  |  | 109 | 		echo "Unknown argument :$1";
 | 
        
           |  |  | 110 | 		echo "$usage"
 | 
        
           |  |  | 111 | 		exit 1
 | 
        
           |  |  | 112 | 		;;
 | 
        
           |  |  | 113 | esac
 | 
        
           |  |  | 114 | exit 0
 | 
        
           |  |  | 115 |   |