Crear certificados digitales en Windows openssl

Este manual se podría decir que es una actualización del artículo wiki crear e instalar certificados digitales en Apache HttpServer.

Lo primero que debemos hacer es descargarnos la distribución de OpenSSL para Windows. Para los que no lo sepan y parafraseando a la Wikipedia decir que OpenSSL es un software open source para libre descarga que incluye un paquete de herramientas de administración y bibliotecas relacionadas con la criptografía, que suministran funciones criptográficas a otros paquetes como OpenSSH y navegadores web para acceso seguro a sitios con el protocolo HTTPS, herramientas que ayudan al sistema a implementar el Secure Sockets Layer (SSL).

Una vez que hemos descargar OpenSSL debemos ejecutar el Símbolo del sistema y navegar hasta la ruta de instalación de este programa. Esto es muy importante porque de hacerlo desde otras carpetas nos puede dar un error del tipo ‘openssl’ is not recognized as an internal or external command, operable program or batch file.

Una vez en el símbolo del sistema escribimos:

C:\>cd OpenSSL-Win32
C:\OpenSSL-Win32>cd bin

Nota: en mi caso he instalado OpenSSL en el directorio C:\OpenSSL-Win32 y el ejecutable siempre se encuentra en el subdirectorio bin.

Ahora debemos crear una par de claves para el servidor. Una será la clave privada y la otra la pública.

C:\OpenSSL-Win32\bin>openssl genrsa -des3 -out server.key 1024 -config “C:\OpenSSL-Win32\bin\openssl.cfg”

Muy importante la opción config porque en la instalación para Windows el archivo de configuración se encuentra en esta ruta y no donde lo busca el comando, no es necesario especificarlo en todos los comandos de este tutorial, solo en los que lo pongo de manera explícita, de no encontrarlo produce un error grabe del tipo Unable to load config info from /usr/local/ssl/openssl.cnf.

Este comando produce el fichero server.key con las dos claves como salida. Durante el proceso nos pedirá una clave para encriptar ese fichero, de forma que las claves no sean visibles.

WARNING: can’t open config file: /usr/local/ssl/openssl.cnf
Loading ‘screen’ into random state – done
Generating RSA private key, 1024 bit long modulus
………++++++
……………….++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying – Enter pass phrase for server.key:

El siguiente paso es crear una solicitud de certificado.

C:\OpenSSL-Win32\bin>openssl req -new -key server.key -out server.csr -config “C:\OpenSSL-Win32\bin\openssl.cfg”

Aún escribiendo la ruta del archivo de configuración recibimos el WARNING: can’t open config file: /usr/local/ssl/openssl.cnf, omitirlo esto no importa.

En este comando anterior debemos indicar cual es nuestro fichero de claves generado en el paso anterior y dar los datos que queremos que aparezcan en el certificado.

Enter pass phrase for server.key:
Loading ‘screen’ into random state – done
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank for some fields there will be a default value, if you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:MADRID
Locality Name (eg, city) []:MADRID
Organization Name (eg, company) [Internet Widgits Pty Ltd]:EMPRESA
Organizational Unit Name (eg, section) []:DESARROLLO
Common Name (eg, YOUR name) []:dominio.es
Email Address []:desarrollo@dominio.es

Please enter the following ‘extra’ attributes to be sent with your certificate request
A challenge password []: clave
An optional company name []:Empresa SL

Cuando instalemos todo esto en nuestro servidor Apache, vamos a poner el fichero de claves que hemos generado server.key. Puesto que está encriptado, cuando Apache arranque nos pedirá la clave del fichero. Esto es bastante incómodo sobre todo si pretendemos que Apache arranque automáticamente al arrancar el servidor. Por ello y aunque supone un riesgo, desencriptamos el fichero para ponerlo más adelante donde Apache vaya a usarlo.

Primero nos creamos una copia de seguridad del archivo server.key por lo que pueda pasar:

C:\OpenSSL-Win32\bin>move server.key server.key.seguro
1 file(s) moved.

El comando para desencriptar el server.key es el siguiente:

C:\OpenSSL-Win32\bin>openssl rsa -in server.key.seguro -out server.key
WARNING: can’t open config file: /usr/local/ssl/openssl.cnf
Enter pass phrase for server.key.seguro:
writing RSA key

Una vez hecha la solicitud dos pasos antes, toca el momento de firmarla aunque en nuestro caso lo que haremos será autofirmar el certificado con nuestro propio certificado.

Sin-título-1

Esta es la opción más sencilla pero tened en cuenta que los navegadores protestarán:

C:\OpenSSL-Win32\bin>openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
WARNING: can’t open config file: /usr/local/ssl/openssl.cnf
Loading ‘screen’ into random state – done
Signature ok
subject=/C=ES/ST=MADRID/L=MADRID/O=EMPRESA/OU=DESARROLLO/CN=dominio.es/emailAddress=desarrollo@dominio.es
Getting Private key

El -days 365 indica el tiempo de validez del certificado. La opción -signkey server.key es la que indica que el certificado debe ir autofirmado usando el fichero de claves server.key que generamos en el primer paso. Nuestro fichero de certificado será server.crt.

Si lo que queremos es firmarlo con nuestro propio certificado de autoridad de confianza entonces debemos consultar el manual original que viene muy bien explicado, teniendo en cuenta el comando config de OpenSSL.

De esta forma ya tenemos nuestros archivos con el certificado digital que hemos creado, en el manual de origen que os he puesto al principio de la web vienen muy bien explicados los pasos para instalarlo en un servidor web como apache.

IMPORTANTE: Puedes descargar openssl para Windows desde aquí.

Fuente: http://scriptinside.blogspot.com.es/2012/01/crear-certificados-digitales-en-windows.html

Anuncios
Categorías: Seguridad Informática, Trucos | Etiquetas: | Deja un comentario

Navegador de artículos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Blog de WordPress.com.

A %d blogueros les gusta esto: