Certificados para los clientes


#!/bin/sh
if [ $# -ne 2 ]
then
        echo "Uso:"
        echo "$0 usuario dias"
        exit
fi
DIR=/etc/raddb/certs
user=$1
dates=$2
CFG=$DIR/openssl.cnf
CFGU=$DIR/Users/$user/openssl-$user.cnf
CERTPATH=$DIR/Users/$user
[ -d $DIR/Users ] || mkdir -p $DIR/Users/$user
if ! [ -f $CERTPATH/openssl-$user.cnf ]
then
  cat $CFG|\

sed "s/(commonName_default[ ]*=).*/&1 $user/g" |\

sed "s/emailAddress_default[ ]*=).*/&1 $Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo./g" >$CFGU

fi


openssl req -batch -config $CFGU \
 -new -nodes -keyout $CERTPATH/$user.key \
 -out $CERTPATH/$user.req -days $dates
openssl ca -batch -config $CFGU \
 -policy policy_anything -out $CERTPATH/$user.crt \
 -extensions xpclient_ext -extfile $DIR/xpextensions \
 -infiles $CERTPATH/$user.req
openssl x509 -in $CERTPATH/$user.crt -out $CERTPATH/$user.pem
openssl pkcs12 -export -nodes  -in $CERTPATH/$user.pem \
 -inkey $CERTPATH/$user.key \
 -certfile $DIR/CA/cacert.pem \
 -name "$user" \
 -out $CERTPATH/$user.p12 -clcerts
cp $DIR/CA/cacert.pem $CERTPATH
cp $DIR/root.der $CERTPATH
# fin

 

 

Cuando ejecutamos este script como

certificados.sh julia 365

debería crear un directorio /etc/raddb/certs/Users/julia que contiene todos los ficheros necesarios para la conexión. En Linux con wpa_supplicante deberemos utilizar julia.pem como certificado, julia.key como llave privada y cacert.pem como certificado de la CA. En sistemas win32 tendremos que usar julia.p12 como certificado que contiene también la llave privada y root.der que contiene el certificado de la CA. Con un doble click sobre ellos se pueden instalar.

Para revocar un certificado podemos ejecutar

openssl -revoke  /ruta/cert.pem

y regeneramos la lista de certificados revocados.

openssl ca -gencrl -config $SSLDIR/openssl.cnf -out $DIR/CA/crl/revoke.crl