Generar solicitud en Apache con OpenSSL

Asegúrese de que el OpenSSL está instalado y en el "PATH" ya que algunos comandos funcionan de todos modos desde el directorio de instalación del OpenSSL "./apps/openssl".

Para crear un par de claves RSA (con encripción Triple-DES en formato PEM) ejecute el comando:

$ openssl genrsa -des3 -out server.key 1024

OpenSSL Programa usado para generar las claves.
genrsa Parámetro que especifica que el tipo de clave será RSA.
-des3 (Opcional) Esta opción pedirá una contraseña que encriptará la clave. Debe tomarse en cuenta que si se utiliza, una persona deberá digitar la clave cada vez que el servidor Apache inicia, para que no pida esta contraseña simplemente se omite este parámentro.
-out Para especificar un archivo de salida.
server.key Nombre del archivo de salida que contendrá la clave.
1024 Parámetro que especifica el largo de clave. Típicamente 512, 1024 o 2048.



Se debe generar posteriormente un "request" asociado a dicha clave. Para ello se digita el siguiente comando:

$ openssl req -new -key server.key -out server.req

OpenSSL Programa usado para generar las claves.
req Parámetro que especifica que se desea generar un "request".
-new Parámentro para espefificar que será un nuevo "request".
-key Parámetrro que especifica que clave se usará.
server.key Nombre del archivo de clave a utilizar. Debe ser el mismo generado en el comando anterior.
-out Para especificar un archivo de salida.
server.req Nombre del archivo de salida que contendrá el request.
-config Utilizado para especificar la ruta al archivo de configuración openssl.cnf
-reqexts Utilizado para definir la extensión dentro del .cnf donde se definen los SAN

Este comando le pedirá varios datos que posteriormente figurarán en el certificado. Asegúrese de que la información sea correcta ya que posteriormente no podrá ser modificada.

Al momento de ingresar el "CommonName" asegúrese de ingresar la URL que desea certificar sin el "http:\\" por ejemplo: www.correo.com.uy

El archivo server.req generado debe ser enviado a la autoridad de certificación para que con él se genere el certificado correspondiente.

OpenSSL for Windows

Si usted está generando desde OpenSSL for Windows debe agregar el parámetro "config" apuntando al archivo de configuración al comando de generación del "request".

$ openssl req -new -key server.key -out server.req -config "c:\ruta\openssl.cnf"

Utilizando nombres alternativos (SAN)

Si usted desea agregar Nombres Alternativos (SAN) deberá agregar el parámetro "config" apuntando al archivo de configuración y también el parámetro "reqexts" al comando de generación del "request".

$ openssl req -new -key server.key -out server.req -reqexts server_ext -config openssl.cnf

Debe modificar el archivo openssl.cnf de la siguiente forma:

[server_ext]
subjectAltName = @server_subject


[server_subject]
DNS.1 = *.correo.com.uy
DNS.2 = correo.com.uy
DNS.3 = www.sellos.correo.com.uy
DNS.4 = sellos.com.uy



Instalar certifcado en Apache con OpenSSL

Una vez recibido el archivo certificado (server.crt por ejemplo) se debe modificar el archivo de configuración del Apache (httpd.conf) de la siguiente forma:

SSLCertificateChainFile /path/to/CorreoUruguayoCA.crt
SSLCertificateFile /path/to/server.crt
SSLCertificateKeyFile /path/to/server.key

SSLCertificateChainFile Debe especificarse el camino y el nombre de archivo donde se encuentre el certificado emisor de la CA. Puede descargarlo aquí
SSLCertificateFile Debe especificarse el camino y el nombre de archivo recibido por la autoridad de certificación.
SSLCertificateKeyFile Debe especificarse el camino y el nombre de archivo con la clave generado con el primer comando.

El archivo server.req no se utilizará más y puede ser borrado.