Cómo generar un certificado autofirmado en Windows mediante OpenSSL. Generaremos la clave privada, el fichero de Solicitud de Firma de Certificado (CSR) y el certificado. Este certificado será útil para entornos de desarrollo, por ejemplo, para hacer pruebas de acceso a sitios web mediante HTTPS usando TLS (sucesor de SSL).
- Consideraciones para los certificados autofirmados.
- Generar certificado autofirmado en Windows con OpenSSL.
Consideraciones para los certificados autofirmados
Hay que tener en cuenta que un certificado autofirmado no debería ser usado en entornos de producción, dado que, si bien conseguiremos sitios web en HTTPS, al no ir validado por una entidad externa de certificación (por una autoridad de certificación o AC), al acceder a un sitio web con certificado autofirmado, recibiremos avisos del navegador indicando que no es un certificado validado.

El certificado autofirmado va firmado por el propio creador y no por la autoridad de certificación. Esto también tiene sus ventajas, una de ellas es que podremos crear tantos certificados como deseemos, estableciendo nosotros mismos los datos del certificado, incluyendo la fecha de caducidad y de forma gratuita. En cambio, un certificado generado por una autoridad de certificación, normalmente, tendrá un coste económico.
Para generar un certificado autofirmado en Windows mediante OpenSSL deberemos tener instalado OpenSSL. En el siguiente enlace explicamos cómo descargarlo e instalarlo en Windows:
Habitualmente, el certificado se genera para un sitio web, por ello, en su creación, indicaremos el nombre FQDN del sitio web, por ejemplo «proyectoa.com» (en el atributo Common Name, como explicamos a continuación). Dado que es gratuito, generaremos un certificado autofirmado para cada uno de los sitios web que necesitemos.
El proceso que explicaremos a continuación es válido tanto para equipos con Windows como con Linux.
Generar certificado autofirmado en Windows con OpenSSL
En primer lugar, generaremos el fichero de clave privada. Para ello, desde la consola de MS-DOS (Símbolo de sistema o cmd), accederemos a una carpeta del equipo donde queramos alojar los ficheros del certificado (por seguridad es muy recomendable que dicha carpeta tenga los permisos apropiados para limitar el acceso únicamente al usuario o usuarios necesarios) y ejecutaremos el siguiente comando:
1 |
openssl genrsa -des3 -out certificado.key 2048 |
Nos solicitará una contraseña (PEM pass phrase) para el fichero de clave privada, la introduciremos dos veces:

El comando anterior habrá generado el fichero certificado.key, que será la clave privada de nuestro certificado. El fichero certificado.key tendrá este contenido:

Crearemos ahora un fichero de Solicitud de Firma de Certificado (CSR), que contendrá la información necesaria para nuestro certificado (nombre común, organización, país, provincia, municipio, FQDN, mail, etc.). También contendrá la clave pública que se incluirá en el certificado. Para crear el fichero certificado.csr en base a la clave privada creada anteriormente (certificado.key), ejecutaremos el siguiente comando (en la misma carpeta donde se encuentre el fichero certificado.key generado anteriormente):
1 |
openssl req -key certificado.key -new -out certificado.csr |
Nos solicitará los siguientes datos:
- Enter pass phrase for certificado.key: contraseña que hemos establecido al generar la clave privada.
- Country Name: código del país (habitualmente dos letras). En este caso «SP».
- State or Province Name: estado o provincia. En este caso «Madrid».
- Locality Name: localidad. En este caso lo hemos dejado en blanco.
- Organization Name: nombre de la organización o empresa. En este caso «ProyectoA».
- Organizational Unit Name: sección/departamento/unidad de la empresa. En este caso lo hemos dejado en blanco.
- Common Name: importante introducir el nombre del dominio para el que vamos a generar el certificado. En este caso «proyectoa.com».
- Email Address: dirección de correo electrónico. En este caso «aaa@proyectoa.com».
- A challenge password: contraseña de desafío, no se suele usar y no se debe confundir con la contraseña de la clave privada anterior. De hecho, en este caso, la dejamos en blanco.
- An optional company name: nombre opcional de la organización o empresa. En este caso lo dejamos en blanco.

El fichero certificado.csr tendrá el siguiente contenido:

Por último, para generar el certificado autofirmado propiamente dicho, usando los ficheros certificado.key y certificado.csr anteriormente creados, ejecutaremos el siguiente comando (siempre desde la carpeta donde se encuentren estos dos ficheros):
1 |
openssl x509 -signkey certificado.key -in certificado.csr -req -days 365 -out certificado.crt |
El comando anterior nos solicitará la contraseña del fichero de clave privada certificado.key generado al principio. La introduciremos y nos generará el fichero certificado.crt, que será el que usemos para pasar nuestro sitio web de desarrollo a TLS/SSL o HTTPS.

El fichero certificado.crt tendrá el siguiente contenido:

Para «convertir» un sitio web a HTTPS necesitaremos los ficheros de clave privada certificado.key y el del propio certificado certificado.crt. En el siguiente artículo explicamos cómo usar estos dos ficheros de certificado autofirmado para pasar un sitio web de desarrollo a HTTPS:
En el caso del artículo anterior, para generar el certificado autofirmado, en el atributo Common Name del fichero certificado.csr hemos usado el valor «localhost», dado que el servidor de desarrollo está en el propio equipo sin un nombre de dominio registrado.