jueves, 26 de febrero de 2009

Petición de Certificado para Apache

El servidor HTTP Apache o Web es un software (libre) servidor HTTP de código abierto para plataformas Unix, Windows, Macintosh y otras, que implementa el protocolo HTTP. Apache presenta entre otras características mensajes de error altamente configurables, bases de datos de autenticación y negociado de contenido, pero fue criticado por la falta de una interfaz gráfica que ayude en su configuración.

A continuación mostraremos como configurar Apache de forma segura (https)

Primero quiero dejar en claro que antes de empezar a configurar este apache de forma segura debemos de tener configurado el DNS y el APACHE básicamente, que ya hemos explicado con anterioridad.

Ahora si empezamos instalando el paquete openssl


Ahora crearemos el directorio contenedor donde se guardara todo lo de nuestra CA

nos dirigimos a la ruta del ssl que es /etc/ssl/ y aquí crearemos el directorio contenedor de nuestra CA

Dentro de este directorio crearemos otros dos que se llamados certifocados y privado, el primero es donde se guardará una copia de cada certificado que firmemos y en el otro directorio se guardará la llave privada.

Es muy importante no perder la llave privada que se generé, ya que con esta podremos firmar o renovar certificados, y mucho menos dársela a nadie, ya que toda nuestra seguridad radica en la confidencialidad de la llave privada que se guardará en el directorio privado.

Crearemos dos archivos donde que en conjunto formarán la base de datos de los certificados autofirmados.

echo "01" > serial
> index.txt También se puede crear de la siguiente manera.
touch index.txt.

El primer archivo 'serial' simplemente contiene el siguiente número de serie de nuestros certificados, ya que apenas vamos a crear el primero su número de serie será 01, después de crearlo se actualizará a 02 y así sucesivamente.
'index.txt' será la base de datos propiamente en base al número de serie.

Ahora entraremos al archivo de configuración, que lo que hice copiar el archivo de configuración openssl.cnf al directorio contenedor de nuestra CA y ahí le modifique las siguientes lineas


Ya esta casi todo listo para crear el certificado raíz, recordemos que este certificado es el que nos convertirá en una autoridad certificadora CA, así que cuando emitamos el comando lo primero que nos pedirá es el "pass phrase" o una contraseña pero en forma de una frase. Esta contraseña es de vital importancia ya que es con la que validaremos nuestra autoridad para después poder crear certificados autofirmados que son los que realmente usaremos en nuestro sitio.

Ahora mostrare el comando que utilizaremos para crear el certificado raíz


Ahora explicare que significan los parámetros que lleva ese comando:

  • req -new -x509 Crear un certificado nuevo autofirmado
  • extensions v3_ca Crear un certificado raiz CA
  • -keyout Nombre y donde guardara la llave privada
  • -out Nombre del certificado raiz CA
  • -days 3650 El tiempo en el cual el certificado tendra validez en este caso (10 años)
  • -config Archivo de configuracion a utilizar
Con respecto al resultado producido, lo primero que se indico fue escribir y verificar la contraseña, después vienen los datos para identificar al propietario del certificado CA, que como se puede apreciar nos pide casi que una confirmación de los datos que modificamos en el archivo de configuración.


Lo anterior da como resultado dos archivos:

  • Un certificado raíz CA "cacert.pem"
  • Una llave privada "privado/cakey.pem" La extrension "pem" es de Privacy Enhanced Message
Ahora miraremos como luce nuestra llave pública

Podemos ver nuestro certificado con el siguiente comando

/etc/ssl/CA# more cacert.pem

ADVERTENCIA: Jamás muestres el contenido de una llave privada jamás debe publicarse ni mostrarse, ni mandarse a nadie, una llave privada auténtica es tu mayor secreto. Podemos también consultar información específica del certificado raíz, fechas, a quien pertenece, etc.

Ya tenemos un certificado raíz que nos válida como CA, claro sin mas autoridad que nuestro propio dominio.

CREANDO UN CERTIFICADO SIGNING REQUEST (CSR)

Los siguientes procedimientos vamos a crear una llave privada y una solicitud de certificado, tambien firmaremos la solicitud para generar un certificado autofirmado.

Lo último que nos pregunto en la parte DN (distinguished name) es el nombre común (CN common name), aqui es sumamente importante indicarlo igual a como esta el certificado raíz generado previamente, como se trata de un servidor web, lo correcto es poner su FQDN que es www.redes.com, no debe indicarse ni redes.com ni http://www.redes.com

Estos parametros de este comando significan lo siguiente:
  • redes-cert.pem El certificado singning request (csr)
  • key.pem Llave privada
Ahora observaremos el contenido de la solicitud

FIRMANDO EL CERTIFICADO

Por ultimo firmaremos la solicitud que hicimos en el paso previo, para firmarlo necesitaremos indicar la contraseña que autentifique que somos la CA y que que por serlo tenemos la autoridad de autorizar (firmar) certificados. (Para nuestro propio uso).

Observa que usamos la opción ca que indica que firmaremos un certificado como autoridad certificadora (CA) que somos, la salida -out será el archivo certificado-pato.pem usando las opciones -config del archivo de configuración y la solicitud de firmado se especificó con la opción -infiles que tomó los datos del archivo redes-cert.pem creado en el paso previo.

Aqui se nos pidió la contraseña, que es la que se indicó cuando creamos cacert.pem que corresponde a nuestro certificado raíz que nos identifica como CA. El certificado será válido por 10 años -days y después se nos preguntó que si queriamos firmarlo, por supuesto que si, y la última pregunta es por si queremos guardar este certificado ya autofirmado en la base de datos, a lo que también contestamos que si.

INSTALANDO EL CERTIFICADO Y LA LLAVE PARA EL APACHE.

Tenemos entonces dos elementos ya generados que necesitaremos para Apache que son:

  • key.pem Llave privada
  • certificado-redes.pem Certificado autofirmado
Ingresamos al archivo de configuración de nuestro servidor apache "Ya instalado y corriendo con una configuracion básica" y ingresaremos las siguientes lineas en el virtualHost

Poniendo en el DocumentRoot el lugar donde tenemos nuestra pagina. Le indicamos que utilizamos certificados (SSLEngine on) y le decimos donde tiene que que leer el certificado (SSLCertificateFile) y la clave privada de este (SSLCertificateKeyFile).

Ahora tenemos que indicarle al servicio apache que soporte ssl y para ello le decimos que cargue el modulo que lo soporta

Ahora reiniciamos nuestro servidor apache

debe existir una línea que abre el puerto 443 a la escucha de paquetes. Esta fuera de las directivas del servidor virtual. el cual se encuentra en la siguiente ruta: /etc/apache2/ports.conf

Ahora abrimos nuestro browser y ahi ingresamos la url sobre la cual hemos emitido el certificado

Como podemos observar el nos esta diciendo que este sitio es seguro y que debemos de ingresar con https entonces le damos click en la parte seleccionada y nos saca un aviso de excepciones donde el verificara el certificado de nuestra entidad emisora.

Procedemos a darle en OK y nos instalara en certificado y nos dejara ingresar a nuestro sitio web seguro.


BIBLIOGRAFIA.

http://www.linuxtotal.com.mx/index.php?cont=info_seyre_001
http://bookalexa.blogspot.com/2008/05/peticion-de-certificado-de-apache.html

Mauricio Ortiz. Tutor Administración de Redes Sena Regial Antioquia

No hay comentarios: