El tema de la CA y los Certificados digitales es un tema que a muchos puede parecer complejo, sobre todo si tienen que montarlo en un linux y que todo debe ser a comando, pues la solución es simple, la Entidad Certificadora montada en GNU/Linux Debian lenny en este caso, provee de algunos scripts para la configuracion de una CA y para la creacion de peticiones y firmado de peticiones, ademas de que estos scripts tambien estan disponibles para la distribución GNU/Linux Ubuntu caso en los que lo prove son en el jaunty, el karmic y el lucid.
Pues bien, después de haber instalado el paquete openssl, y aceptado las dependencias, si no lo ha instalado bien puede hacerlo con el siguiente comando:
# apt-get install openssl
podemos encontrar los scripts en la ruta :
# cd /usr/lib/ssl/misc/
dentro de este directorio, podremos encontrar los scripts necesarios, uno en perl y el otro en shell llamados respectivamente CA.pl y CA.sh, los cuales son los que proveen los comandos necesarios para administrar de una manera simple los Certificados digitales, si el deseo es montar su propia CA simplemente debemos correr el script del siguiente modo:
# /usr/lib/ssl/misc/CA.sh -newca
con esto se crea la CA en la carperta donde estes posicionado, te pedira la contraseña y los datos de la CA, y listo la CA esta creada dentro de una carpeta llamada demoCA.
Para crear una petición de un Certificado digital hacemos lo siguiente, esto desde el lado del cliente de petición:
# /usr/lib/ssl/misc/CA.sh -newreq
este comando pregunta los datos de la nueva peticion, incluyendo la contraseña, y nos creara un par de archivos llamados newkey.pem y newreq.pem.
Si etsas del lado del servidor, y nececitas firmar una petición, esto es lo que debes debes de hacer:
# /usr/lib/ssl/misc/CA.sh -sign
teniendo en cuenta de que el archivo de la petición esta en el directorio donde estas parado al momento de firmarla, y el nombre debe ser newreq.pem
El problema con este certificado es que si es usado en un servicio, y se reinicia el servidor por algun motivo, se tiene que digitar la clave pública que se dio cuando se creaba la petición, en el momento en que aun esta iniciando el servidor, ya que de lo contrario el servidor no se inicia de manera correcta, para evitar que este certificado pida contraseña al momento de ser usado, se debe modificar el script en el lado del cliente de petición, de modo que cuando genere la peticion no pida una contraseña, y de esta maner en caso de reinicio del servidor, no se tendra que digitar la contraseña para que inicie, sino por el contrario, inicia completamente el servidor sin la intervención de la contraseña, para que esto suceda el script debe quedar de la siguiente manera modificado:
Abrimos el Script con nuestro editor de texto preferido, el mio es el vim:
# vim /usr/lib/ssl/misc/CA.sh
comentamos la linea 62 quedando de la siguente manera:
#$REQ -new -keyout newkey.pem -out newreq.pem $DAYS
y seguidamente de esta linea, osea en la linea 63 y 64 agregamos:
openssl genrsa -out newkey.pem 1024
$REQ -new -key newkey.pem -out newreq.pem $DAYS
Guardamos, y de ahora en adelante cada vez que hagamos una petición, no nos pedira contraseña, esto es util en caso de aplicar los Cetificados en algunos servicios.
Lo que resta es solo que ustedes apliquen los certificados con sus respectivas claves y datos a cada servicio que asi lo requiera y acordarse de instalar el certificado de la CA en los clientes que accederan a los servicios.
Los archivos que se crean en el proceso de petición y firmado son:
newkey.pem : llave privada del certificado (petición)
newreq.pem : petición de un certificado digital (petición)
newcert.pem : certificado firmado por la CA (firmado)
Dado el caso en que los archivos tengan un nobre diferente, cambiarlo a su respectivo nombre de función equivalente. para que el script pueda funcionar.
Pues bien, después de haber instalado el paquete openssl, y aceptado las dependencias, si no lo ha instalado bien puede hacerlo con el siguiente comando:
# apt-get install openssl
podemos encontrar los scripts en la ruta :
# cd /usr/lib/ssl/misc/
dentro de este directorio, podremos encontrar los scripts necesarios, uno en perl y el otro en shell llamados respectivamente CA.pl y CA.sh, los cuales son los que proveen los comandos necesarios para administrar de una manera simple los Certificados digitales, si el deseo es montar su propia CA simplemente debemos correr el script del siguiente modo:
# /usr/lib/ssl/misc/CA.sh -newca
con esto se crea la CA en la carperta donde estes posicionado, te pedira la contraseña y los datos de la CA, y listo la CA esta creada dentro de una carpeta llamada demoCA.
Para crear una petición de un Certificado digital hacemos lo siguiente, esto desde el lado del cliente de petición:
# /usr/lib/ssl/misc/CA.sh -newreq
este comando pregunta los datos de la nueva peticion, incluyendo la contraseña, y nos creara un par de archivos llamados newkey.pem y newreq.pem.
Si etsas del lado del servidor, y nececitas firmar una petición, esto es lo que debes debes de hacer:
# /usr/lib/ssl/misc/CA.sh -sign
teniendo en cuenta de que el archivo de la petición esta en el directorio donde estas parado al momento de firmarla, y el nombre debe ser newreq.pem
El problema con este certificado es que si es usado en un servicio, y se reinicia el servidor por algun motivo, se tiene que digitar la clave pública que se dio cuando se creaba la petición, en el momento en que aun esta iniciando el servidor, ya que de lo contrario el servidor no se inicia de manera correcta, para evitar que este certificado pida contraseña al momento de ser usado, se debe modificar el script en el lado del cliente de petición, de modo que cuando genere la peticion no pida una contraseña, y de esta maner en caso de reinicio del servidor, no se tendra que digitar la contraseña para que inicie, sino por el contrario, inicia completamente el servidor sin la intervención de la contraseña, para que esto suceda el script debe quedar de la siguiente manera modificado:
Abrimos el Script con nuestro editor de texto preferido, el mio es el vim:
# vim /usr/lib/ssl/misc/CA.sh
comentamos la linea 62 quedando de la siguente manera:
#$REQ -new -keyout newkey.pem -out newreq.pem $DAYS
y seguidamente de esta linea, osea en la linea 63 y 64 agregamos:
openssl genrsa -out newkey.pem 1024
$REQ -new -key newkey.pem -out newreq.pem $DAYS
Guardamos, y de ahora en adelante cada vez que hagamos una petición, no nos pedira contraseña, esto es util en caso de aplicar los Cetificados en algunos servicios.
Lo que resta es solo que ustedes apliquen los certificados con sus respectivas claves y datos a cada servicio que asi lo requiera y acordarse de instalar el certificado de la CA en los clientes que accederan a los servicios.
Los archivos que se crean en el proceso de petición y firmado son:
newkey.pem : llave privada del certificado (petición)
newreq.pem : petición de un certificado digital (petición)
newcert.pem : certificado firmado por la CA (firmado)
Dado el caso en que los archivos tengan un nobre diferente, cambiarlo a su respectivo nombre de función equivalente. para que el script pueda funcionar.
que mas un saludo desde cartagena colombia, le comento que he estado averiguando como crear estos certificados en debian 6 y pues no me funciona.
ResponderEliminarGracias por el saludo, igualmente se le saluda desde Medellín, te comento que los scripts no los he probado en debian squeeze, pero no deberia de presentar inconvenientes, igual revisaré y actualizare la entrada si es necesario.
Eliminar