Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
generate and manage local CA
#!/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