# rm-rf.es | Administración de sistemas

Blog de un SysAdmin Unix, Gnu/Linux, Windows y lo que haga falta.

Generar un certificado SSL propio con openssl


Gracias a OpenSSL, tenemos la posibilidad de crear certificados SSL “self-signed“, es decir, firmados por nosotros mismos para encriptar las conexiones a un sitio web bajo Apache. Normalmente, para un servidor en producción lo lógico es utilizar un certificado SSL firmado por una entidad autorizada y confiable “Trusted Certificate Authority“, no obstante, en servidores beta o de pruebas es muy útil para utilizar conexión segura sin necesitar un SSL autorizado.

Lo primero que debemos hacer es instalar mod_ssl y openssl para activar el soporte SSL en Apache (podemos hacerlo con yum, apt…):

yum install mod_ssl openssl

Una vez instalados los módulos, procederemos con la creación del certificado. En primera instancia generamos la llave privada(private-key):

openssl genrsa -out cert.key 1024

Ahora generamos el CSR (Certificate Signing Request), usando la key generada antes:

openssl req -new -key cert.key -out cert.csr

Y ahora generamos el certificado en sí utilizando la key y el CSR:

openssl x509 -req -days 365 -in cert.csr -signkey cert.key -out cert.crt

Ahora para mayor comodidad podéis mover los tres ficheros (cert.csr, cert.crt y cert.key) a la ruta donde guardéis los SSL, por ejemplo /etc/ssl/

Solamente falta configurar el sitio web o el servidor web entero para que utilice el SSL, si es solo para un sitio web bajo virtualhost, añadir lo siguiente dentro del <virtualhost>, son las rutas al certificado y su key correspondiente:

SSLCertificateFile /etc/ssl/cert.crt
SSLCertificateKeyFile /etc/ssl/cert.key

Si fuerais a hacerlo para todo el servidor web, lo normal es cambiar los valores indicados anteriormente en el fichero de configuración general del ssl, que suele ser:

/etc/httpd/conf.d/ssl.conf

Una vez hecho esto, reiniciad apache y ya deberíais navegar correctamente bajo SSL, tened en cuenta que navegadores como firefox o explorer no reconocerán el SSL ya que está firmado por nosotros mismos y no una firma autorizada, no obstante, aceptad el certificado y trabajad normalmente.

Para más información sobre OpenSSL, opciones de comando y personalización del certificado:

http://www.openssl.org/docs/apps/openssl.html


Categoría: Servidores web | Etiquetas: , , , , ,

5 Comentarios

  1. Rob dice:

    Funcionó a la perfección, muchas gracias!

  2. alomaximo dice:

    Donde rayos esta la direccion donde se generan los certificados para cambiarlos al directorio que menciona

    • aar0n dice:

      dependiendo en que directorio hayas hecho todo el proceso ahi deben estar los archivos crt y key los cuales yo pase a /etc/ssl/ en mi caso fue /root/, al reiniciar httpd parece todo bien pero al querer entrar a webmin dice el explorador Error de conexión SSL ya he reiniciado webmin alguna idea?

      • Alex dice:

        Hola aar0n,

        El error de conexión de indica que el certificado no es de confianza? En ese caso sería normal ya que no está firmado por una entidad reconocida (es self-signed)

        Saludos

  3. Cómo puedo montarlo en un servidor ubuntu? Tengo ubunto 13.04 y no logro hacerlo correr.
    Agradezcto tu respuesta.

    Saludos

Deja una respuesta