Category Archives: SSL

hiawatha: Generando certificado SSL hacia archivo .pem

En el sitio de hiawatha está bien documentado en este url. Pero quiero explicarlo para mi, a mi forma, como me funciona.

A propósito, hiawatha soporta SNI, que significa Server Name Indication, el cual permite que se generen varios certificados SSL utilizando una sola IP. Ya las cosas no son como antes que por cada certificado SSL se requería una dirección IP. También otros servidores web soportan SNI, no es algo único de hiawatha, pero es que con hiawatha es tan facilito.

Para generar un certificado SSL en hiawatha, la clave privada, el certificado obtenido del proveedor así como el bundle (grupo de certificados de ayuda que el proveedor entrega) deben ir en un mismo archivo que conocen como .pem.

Cómo generar este archivo .pem? Es fácil.

Obteniendo el certificado de una entidad certificadora

Lo primero que hacemos es generar la clave privada y la solicitud de certificado para enviar a la autoridad certificadora:

openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr

La clave privada se llamará server.key y la solicitud de certificado se llamará server.csr. Envío este server.csr a la autoridad certificadora, leugo de cumplir los trámites, esta entidad certificadora emitirá un certificado el cual me llegará en un mail. Este certificado llega en un .zip con varios archivos, el certificado tendrá un nombre algo así como www_misitio_com.crt, yo le renombraré, por comodidad para mi como server.crt.

En resumen, tengo el siguiente listado:

AddTrustExternalCARoot.crt,

EssentialSSLCA_2.crt,

server.key,

server.crt,

ComodoUTNSGCCA.crt,

UTNAddTrustSGCCA.crt

Una vez que ya tengo el certificado (server.crt) puedo borrar la solicitud de certificado (server.csr) ya que solo se utiliza para obtener el certificado, por eso no le pongo aquí.

server.crt es el certificado

server.key es la clave privada

El resto de archivos son lo que algunos conocen como bundle, que digamos que son archivos que ayudan a los clientes a tener o dar la certeza de que el certificado fue emitido por una entidad certificadora.

Creando el archivo .pem:

El archivo .pem se crea concatenando los anteriores archivos, y tiene un orden, que es el siguiente:

1- server.key

2- server.crt

3- el resto del bundle (yo le probé poner en diferente orden los archivos del bundle y funcionó bien en cualquier caso).

El comando mediante el cual concatené todos los archivos es el siguiente:

cat server.key server.crt UTNAddTrustSGCCA.crt ComodoUTNSGCCA.crt EssentialSSLCA_2.crt \
AddTrustExternalCARoot.crt > /etc/hiawatha/server.pem

chmod 400 /etc/hiawatha/server.pem

Como se puede ver, es sencillo, concateno todo con cat hacia un archivo dentro de /etc/hiawatha/ y le cambio los permisos para 400 a este archivo.

Finalizando:

Aunque esto ya no tiene que ver con el hecho de generar el archivo .pem lo publico pues me hace falta:

Una vez haya realizado esto, simplemente en el sitio virtual dentro de /etc/hiawatha/hiawatha.conf declaro que su certificado ssl es el archivo server.pem:

SSLcertFile = server.pem

Puede verse más información sobre cómo activar el SSL en hiawatha puede verse en su sitio web.