Apache, Instalar Certificado de Seguridad Versign

Este va a ser un tema muy amplio pero vamos directo a lo que nos interesa, si un día te piden un portal seguro y validado por https necesitas algo llamado SSL (Secure Socket Layer) que básicamente es un protocolo para transferir datos de forma segura,  y se utiliza para:

Compartir información mediante un mecanismo de codificación entre el cliente y el servidor (aquí pueden leer un resumen bastante claro)

Esto se hace por medio de un certificado de seguridad.

El certificado es un comprobante que emite un CA (Certificate Authority) o un tercero para garantizar que el sitio web pertenece a la empresa u organización, que es un sitio legitimo, válido y seguro.

Nota: Se pueden emitir certificados propios o privados para cuestiones internas pero otro día escribiré sobre esto.

Esto es muy común en páginas web donde se necesita manejar información sensible y confidencial, por ejemplo con el pago de tarjeta  de crédito, comunicación entre web services, ejecución de aplicaciones, etc… y se puede ver muy claro en nuestro browser cuando se pone en verde:

Se puede puede obtener un certificado de una autoridad competente, las más famosas son Verisign y Thawte (vean el certificado de los bancos o de facebook) estás empresas certificadoras cobran por este servicio, pero ambas te pueden dar un certificado de prueba ( que es el que vamos a utilizar).

Instalación

Los pasos que voy a describir funcionan en linux, pero si lo necesitas para windows y Mac es prácticamente lo mismo solo cambian las rutas de los archivos de configuración y la instalación del software.

Requisitos

  • Servidor Apache instalado, con los módulos ssl, proxy, proxy_html y headers activados y configurado con el puerto 443.
  • Openssl instalado, para generar un CSR (Certified Singing Request) que es la solicitud para el CA. 

En google pueden ver como se instalan y en linux es fácil con el gestor de paquetes de cada distribución.

1. Crear la llave y el CSR:

Abres una consola y ejecutas el siguiente comando para crear la llave:

openssl genrsa -des3 -out myserver.key 2048

Tip: Algunos CA’s te piden como mínimo 2048 bits para la llave, pero ¡cuidado! entre más grande es el valor, el algoritmo es más seguro pero consumirá más recursos al procesar la información y puede reducir el rendimiento del servidor considerablemente, tanto que tu página web puede ser muy lenta al visualizar, lo recomendado es utilizar 2048 como mínimo.

Te preguntará por la «frase«, que es la palabra para el algoritmo de codificación. Aquí escribes algo que siempre debes tener en mente , guardarla en un lugar seguro y nunca se debe de compartir.

Loading 'screen' into random state - done
Generating RSA private key, 2048 bit long modulus
................+++
..............................................+++
unable to write 'random state'
e is 65537 (0x10001)
Enter pass phrase for myserver.key:
Verifying - Enter pass phrase for myserver.key:

bien, vamos a crear un formato especial de la llave que más adelante vamos a explicar:

openssl rsa -in myserver.key -out myserver.pem

Te va a preguntar por la «frase«:

Enter pass phrase for myserver.key:
writing RSA key

Ahora creamos el CSR con la llave:

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

Te va a preguntar nuevamente la «frase«, esta es la parte más importante del proceso así cuidado con lo que vas a escribir, hay que considerar lo siguiente:

  1. NO utilices caracteres ajenos al ingles (sin acentos,  no ñ ni simbolos como «&, %, $, #, etc…» )
  2. Los datos que vas a escribir son los que se van a mostrar en el certificado y son visibles por todos.
  3. Solo puedes escribir nombres de dominios validos, por regla Verisign te pide de forma obligatoria uno, así que no puedes escribir direcciones ip o cosas como localhost, miweb, 127.0.0.1, etc. Para nuestro ejemplo vamos a usar el dominio «http://www.orbitalzerolabs.com«
  4. No es necesario que tengas comprado el dóminio, puedes simular uno (que es como lo vamos a hacer aquí).

Ahora ojo con los datos marcados en rojo:

Enter pass phrase for myserver.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]:MX
State or Province Name (full name) [Some-State]:Mexico
Locality Name (eg, city) []:Distrito Federal
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Orbital Zero S.A de C.V
Organizational Unit Name (eg, section) []:OZ labs
Common Name (e.g. server FQDN or YOUR name) []:www.orbitalzerolabs.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Los attributos email, challenge password y optional company name dejalos en blanco, a mi siempre me daba errores con el CA si llenaba estos campos, mi recomendación es dejarlos en vacios.

2. Enviar el CSR al CA

Ingresas a la página de Verisign y seleccionas  «Free Trial» y sigues el asistentete para llenar el formato que te piden, todos los datos deben ser reales.

Ahora en el paso 3 Enter Certificate Signing Request (CSR), vas a pegar el contenido del archivo myserver.csr, pero cuidado debes abrir el archivo con un editor de texto plano como vi, gedit o notepad. Si lo abres con otra cosa puede provocar errores y copiar simbolos incorrectos y no vas a poder continuar.

Confirmas el envío y al final vas a recibir un número de orden, el cuál te va a ayudar a verificar los datos que te llegan al correo, a mi siempre me ha llegado duplicado el mail no se porque y checa tu buzon de SPAM!! porque luego puede ser identificado como tal.

3. Preparar el certificado

En tu correo electrónico vas a recibir 3  códigos:

  1. Test Root CA Certificate : Esta dentro del link del Step 1.
  2. Trial SSL Intermediate CA Certificate : Esta dentro del link del Step 2.
  3. Trial SSL Certificate: el texto aparece en el cuerpo del mensaje del correo.

Vamos a guardar cada uno de estos códigos en un archivo por separado de acuerdo a la siguiente tabla, utiliza un editor de texto plano simple como vi, gedit o notepad cualquier otro puede generar problemas:

Test Root CA Certificate rootCA.crt
Trial SSL Intermediate CA Certificate interCA.crt
Trial SSL Certificate trial.crt

De preferencia dejalos todos en la misma carpeta.

4. Preparar el dominio

Ahora vamos a simular que tenemos un dominio, para esto debemos editar el archivo hosts.

  • En Linux esta en /etc/hosts
  • En Windows 7 %systemroot%\system32\drivers\etc\hosts

Y agregamos el siguiente texto:

127.0.0.1 www.orbitalzerolabs.com

En el caso de Linux debemos reiniciar el servicio de red con «sudo service networking restart» o «service network restart«, depende de tu distribución.

En el caso de Windows no hay que reiniciar el servicio, lo toma automáticamente pero el truco es poder editar el archivo, tienes que copiar y reemplazarlo.

Ahora solo comprobamos que nuestro equipo responde la dirección web con uin ping:

#ping www.orbitalzerolabs.com

Haciendo ping a www.orbitalzerolabs.com [127.0.0.1] con 32 bytes de datos:
Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128
Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128
Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128
Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128

Estadísticas de ping para 127.0.0.1:
    Paquetes: enviados = 4, recibidos = 4, perdidos = 0
    (0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
    Mínimo = 0ms, Máximo = 0ms, Media = 0ms

Listo ya tenemos nuestro dominio piñata apuntando a nuestra ip local :D!

5. Instalar los certificados en el Apache Server

Hay que editar el archivo de configuración del apache, el mio es el «/etc/apache2/httpd.conf«, el nombre y la ubicación pueden cambiar por el sistema operativo y la versión que estés utilizando.

Y agregas las siguientes líneas:

Listen 443

<IFModule mod_proxy.c>
    <VirtualHost *:443>

    ServerAdmin webmaster@orbitalzero.com
    ServerName www.orbitalzerolabs.com
    ServerAlias www.orbitalzerolabs.com

    ProxyRequests Off
    ProxyPreserveHost On

    <proxy >
        Order deny,allow
        Allow from all
    </proxy>

    SSLEngine on
    SSLCertificateFile /etc/oz/trial.crt
    SSLCertificateKeyFile /etc/oz/myserver.pem
    SSLCertificateChainFile /etc/oz/interCa.crt

    </VirtualHost>

</IFModule>

Las más importantes son las que están en negritas y sobre todo la propiedad SSLCertificateKeyFile podemos utilizar el archivo «myserver.key«, sin embargo cada vez que reinicias el servidor te va a pedir que escribas la «Frase«. Esto esta bien cuando hay que cubrir cuestiones de seguridad, pero si no quieres andar escribiendola cada vez que reninicias el server es mejor que utilices el archivo «myserver.pem«.

Nota: en windows debes escribir las rutas con el nombre de la unidad como «C:\etc\oz\myserver.pem«.

Reinicias el servidor:

service apache2 restart

Ingresas al browser y te mostrará el mensaje de advertencia que el sitio no es de confianza:

Cuando compras el certificado de Verisign automáticamente se pone en verde, pero como estamos utilizando una versión de prueba tenemos que agregar manualmente el certificado en nuestro browser para que sea validado.

6. Instalar el certficado del CA en el browser

Google Chrome

Te vas a Opciones > Configuración > Opciones Avanzadas> HTTPS / SSL > Administrar cetificados :

Selecionas Autoridades e importas el certificado «rootCA.crt» y aceptas todas las opciones del certificado:

Y ahora entras al dominio https://www.orbitalzerolabs.com y verás el sitio validado:

Firefox

Abres las opciones del browser en la sección Avanzado > Cifrado > Ver certificado > Autoridades. Seleccionas importar y tomas el archivo «rootCA.crt«.

Aceptas todas las validaciones del Certificado y luego OK:

Ahora entras al dominio https://www.orbitalzerolabs.com y verás el certificado activo:

Internet Explorer

Herramientas > Opciones de Seguridad > Contenido > Certificados >Entidades de Certificación raíz de confianza, seleccionas importar y tomas el archivo «rootCA.crt» , te va a salir un mensaje de advertencia:

Después dentro del gestor de certificados en la pestaña Entidades de Certificación Intermediarias agregas el «interCA.crt«.

Ahora si ingresas a la dirección https://www.orbitalzerolabs.com te mostrará que el sitio ya se encuentra validado:

Nota:  La barra de dirección en en Firefox y IE se pone en verde hasta que lo pagas, además si tienes problemas al gestionar tus certificados en windows puedes utilizar el administrador de certificados (Inicio > ejecutar > certmgr.msc) inche  windows ¬¬!!

Uff… listo al fin.

Saludos!

Referencias

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.