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.pemchmod 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.