Publicaciones Etiquetadas ‘SSL’

[Howto] Crear certificado de seguridad autofirmado

Hola lectores!

La semana pasada me llegó un requerimiento para generar un archivo CSR (Certificate Signing Request) para la creación de un certificado de seguridad, y pues bien, hoy me doy a la tarea de explicar paso por paso la creación del mismo incluyendo las llaves y todo lo que se tiene que generar.

¿Para qué nos sirve un certificado de seguridad?

Los certificados de seguridad son una medida de confianza adicional para las personas que visitan y hacen transacciones en su página web, le permite cifrar los datos entre el ordenador del cliente y el servidor que representa a la página. El significado más preciso de un certificado de seguridad es que con él logramos que los datos personales sean encriptados y así imposibilitar que sean interceptados por otro usuario. Ahora es muy común ver en nuestros exploradores el protocolo de seguridad https; mediante éste, básicamente nos dice que la información que se envía a través de Internet, entre el navegador del cliente y el servidor donde está alojada la página, se encripta de forma que es casi imposible que otra persona reciba, vea o modifique los datos confidenciales del cliente.

En el mundo de Internet, toda comunicación cifrada el certificado debe ser firmado por una Entidad Certificadora Autorizada (CA) que nos garantiza que el servidor donde está alojada la página es quien dice ser. En algunas ocasiones, es necesario crear certificados auto-firmados para realizar pruebas o para montar servidores internos.

Con un servidor Unix/Linux y con el programa OpenSSL es muy fácil y rápido crear este tipo de certificados.

Pues bien, ahora que ya leímos algo de teoría pasemos a la creación del certificado:

  1. Generar la llave privada.Una de las tantas bondades de OpenSSL es el poder generar una llave RSA privada y un archivo CSR, pero también nos sirve para crear los certificados autofirmados que por lo regular son utilizados para uso interno o para realizar pruebas.
    El primer paso es crear la llave privada RSA. Esta clave es de 1024 bits que se cifra utilizando 3-DES y se almacena en formato PEM para poder ser leído en formato ASCII.

    openssl genrsa -des3 -out server.key 1024



  2. Generar un CSR.
    Ahora que tenemos creada la clave privada procedemos a generar un archivo CSR (Solicitud de firma de certificado, por sus siglas en inglés).  Este archivo tiene 2 utilidades, la primera, enviarlo a una entidad certificadora como Verisign o Thawte, quienes validarán la identidad del solicitante y generarán un certificado firmado; y la segunda, es la de auto firmar el CSR, que es lo que explicaremos más adelante.
    Durante la generación del archivo CSR, se solicitarán ciertos datos informativos que serán los atributos X.509 del certificado.
    Uno de los campos que se solicitan el es “Common Name”, en este campo es muy importante poner el nombre del dominio del servidor que va a ser protegido por SSL. Como ejemplo, si el sitio va a ser https://secure.csimx.net, en el campo se pondría secure.csimx.net.
    El siguiente comando muestra como generar el archivo CSR

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

  3. Borrar la contraseña de la clave.
    Un desafortunado efecto secundario de la transmisión de una clave privada con contraseña (passphrase) es que Apache o el servidor web en cuestión te pedirá la frase cada vez que se inicie el servidor web. Esto no siempre es conveniente, sobretodo si el servidor se reinicia automáticamente. Las propiedades mod_ssl  de Apache incluye la capacidad de utilizar un programa externo en lugar de escribir la frase a mano, sin embargo, esto no es necesariamente la opción más segura. Es posible eliminar el cifrado 3-DES de la clave para que no sea necesario escribir una clave. Eso sí, si la clave privada ha dejado de estar cifradas, ¡es fundamental que este archivo sólo pueda ser leído por el usuario root!. Si un tercero obtuviera la clave privada sin cifrar, el certificado correspondiente deberá ser revocado. Para quitar la frase de paso de la clave, utiliza el siguiente comando:

    cp server.key server.key.org
    openssl rsa -in server.key.org -out server.key

     

  4. Crear el certificado autofirmado.
    Si todo lo anterior se llevó a cabo, en este punto podemos crear el certificado autofirmado. Este certificado marcará error en el navegador del cliente ya que la entidad certificadora es desconocida y no confiable.El siguiente comando muestra como generar el certificado con una validez de 1 año.

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

  5. Instalar la clave privada y el certificado en el Apache.
    Cuando se instala Apache con mod_ssl, se crean diversos subdirectorios de configuración dependiendo donde y como se configuró e instaló apache.

    cp server.crt /usr/local/apache/conf/ssl.crt
    cp server.key /usr/local/apache/conf/ssl.key

  6. Configurar los Virtual Hostscon SSL.

    SSLEngine on
    SSLCertificateFile /etc/apache2/conf.d/ssl.crt/server.crt
    SSLCertificateKeyFile /etc/apache2/conf.d/ssl.key/server.key
    SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown
    CustomLog logs/ssl_request_log \
    “%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”

  7. Reiniciar apache.

    service apache2 restart

  8. Probar.

    https://secure.csimx.net

 

 

Visto en www.hackplayers.com

Conceptos de Seguridad que debes conocer

Alguna vez haz escuchado cosas raras como ¿Agujero de Seguridad? o ¿Malware? o ¿Análisis de Vulnerabilidades? ¿PenTest? etc??

Bueno, vamos a presentar unos cuantos conceptos que siempre debes tener en la mente:

  1. ¿Qué es un análisis de vulnerabilidades?
    Un análisis de vulnerabilidades es un estudio en busca de debilidades que se realiza a una infraestructura y/o aplicación de manera controlada y con pleno concentimiento del cliente.
    El objetivo principal es asegurar que no está expuesta a un atacante y así poder mantener la disponibilidad, confidencialidad e integridad de la información.
  2. ¿Qué es Malware?
    Es un software malicioso que su objetivo es dañar y/o infiltrarse en equipos computacionales sin el concentimiento de su propietario.
  3. Qué es un agujero de seguridad?
    Es una debilidad en un sistema que puede ser aprovechado por un atacante para violar la seguridad del mismo.
  4. ¿Qué es un troyano?
    Es un tipo de malware que se presenta al usuario como un programa legítimo pero que al ejecutarlo causa daños en los equipos y sistemas. En la mayoría de los casos abre puertas traseras permitiendo a un atacante manipular y tomar control del equipo.
  5. ¿Qué es un certificado de seguridad?
    Es un tipo de seguridad que brinda confianza al usuario cuando realiza transacciones por internet, normalmente económicas o con información sensible. Está diseñado para cifrar toda la información que pasa ente el cliente y el servidor y que no sean interceptados por algún otro usuario. Podemos identificar este tipo de servicio en nuestro navegador cuando la barra de navegacion tiene https:// como son los bancos, Facebook, gmail, entre otras páginas.
  6. ¿Qué es una auditoría de seguridad?
    Es un estudio realizado por profesionales de seguridad informática que pretende el análisis de sistemas para evaluar, identificar, enumerar y describir las diferentes vulnerabilidades que pudieran presentarse en una revisión de servidores, redes y equipos de computo.
  7. ¿Qué son las APT – Advanced Persistent Threat (Amenaza Avanzada Persistente)?
    Son un tipo de malware que se encargan de atacar principalmente entornos corporativos o políticos. La principal característica y por lo que sobresale, es por su alta capacidad de esconderse/ocultarse, por lo que es muy difícil deshacerse de ellas.
  8. ¿Qué es una prueba de Penetración?
    Es una evaluación activa de las medidas de seguridad de la información. El objetivo del PenTest es detectar puntos débiles que pueden ser utilizados por un atacante para violar la seguridad de los sistemas. Durante el PenTest se busca explotar las debilidades simulando ser un atacante para obtener información relevante pero SIN DAÑAR la información, sistemas e infraestructura.

Gracias por leernos, espero dejarles un poco más claro estos conceptos y que les sean de utilidad más adelante.

 

Saludos! }x)

Volver a arriba
 

Powered by FeedBurner

Enter your email address:

Delivered by FeedBurner