Created
May 30, 2017 01:56
-
-
Save uranio-235/acf09c97f0bf27a18f0be9e757df1f80 to your computer and use it in GitHub Desktop.
generate and manage local CA
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# que longitud en de cifrado | |
longitud=2048 | |
# la cantidad de días que tarda del CA en CAducar | |
# en este caso, usamos 10 años | |
caudocidad=3650 | |
# si no hay un rootCA, lo creamos | |
if [ ! -e rootCA.key ] ; then | |
# háblate | |
echo No se ha detecado una autoridad de raíz en este directorio | |
echo 'procederemos a crear el rootCA.key (secreto)' | |
echo PRESTE ATENCIÓN A LOS PARÁMETROS | |
# genera la llave de raiz | |
openssl genrsa -out rootCA.key 2048 | |
#openssl genrsa -des3 -out rootCA.key 2048 | |
# autofirmamos la clave y creamos el .pem que instalaremos a los clientes | |
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days $caudocidad -out rootCA.pem | |
# háblate | |
echo 'Puedes distribuir el rootCA.pem (PEM)' | |
echo El "rootCA.key" es secreto!! | |
echo 'En firefox, impórtalo:' | |
echo 'Advanced -> Certificates -> View Certs -> Athorities -> Import' | |
exit 0 # bajando | |
fi | |
# si no mandó un argumento | |
if [ ! $1 ] ; then | |
echo Debe enviar el common name o la ip, que va a generar a generar | |
echo mkcert.sh www.dominio.cu | |
exit 255 | |
fi | |
CM=$1 # toma el CM o la ip | |
# múeve a un directorio con ese nombre | |
mkdir $CM | |
cd $CM | |
# crea la clave privada, diferente del rootCA | |
echo | |
echo generando clave privada para este certificado | |
openssl genrsa -out $CM.key $longitud | |
# compón el subject a partir del que tiene el rootCA.pem | |
subject=$(openssl x509 -in ../rootCA.pem -text -noout|grep Subject:|sed s/' '/''/g|sed s/\,/'\/'/g|cut -d ':' -f 2) | |
subject="$(echo $subject|cut -d '=' -f '1-5')=$CM$(echo /$(echo $subject|cut -d '=' -f '6-9'|cut -d '/' -f 2-9) )" | |
# PROBAR ESTO | |
# solicitamos a nuestra CA, que nos de un certificado (certificate request) | |
echo | |
echo Efectuando solicitud de certificado al CA | |
openssl req -new -nodes -subj "/$subject" -key $CM.key -out $CM.csr | |
openssl req -in $CM.csr -text -noout|grep Subject:|sed s/' '/''/g|sed s/\,/'\/'/g|cut -d ':' -f 2 | |
# finalmente, creamos el certificado | |
openssl x509 -req -in $CM.csr -CA ../rootCA.pem -CAkey ../rootCA.key -CAcreateserial -out $CM.crt -days $caudocidad -sha256 | |
# cópiame el .pem también | |
cp ../rootCA.pem ./ | |
# mételo todo en un tar.gz | |
cd .. | |
tar cvfz $CM.tar.gz $CM/ 2> /dev/null >/dev/null | |
rm -rf ./$CM/ | |
echo | |
echo $CM.tar.gz está listo para despachar | |
echo scp $(pwd)/$CM.tar.gz root@ | |
# EOF | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment