Manual SSL v2 en Linux Debian

23
SSL Secure Socket Layer (SSL) El protocolo SSL es un sistema diseñado y propuesto por Netscape Communications Corporation. Se encuentra en la pila OSI entre los niveles de TCP/IP y de los protocolos HTTP, FTP, SMTP, etc. Proporciona sus servicios de seguridad cifrando los datos intercambiados entre el servidor y el cliente con un algoritmo de cifrado simétrico, típicamente el RC4 o IDEA, y cifrando la clave de sesión de RC4 o IDEA mediante un algoritmo de cifrado de clave pública, típicamente el RSA. La clave de sesión es la que se utiliza para cifrar los datos que vienen del y van al servidor seguro. Se genera una clave de sesión distinta para cada transacción, lo cual permite que aunque sea reventada por un atacante en una transacción dada, no sirva para descifrar futuras transacciones. MD5 se usa como algoritmo de hash. Proporciona cifrado de datos, autenticación de servidores, integridad de mensajes y, opcionalmente, autenticación de cliente para conexiones TCP/IP. Cuando el cliente pide al servidor seguro una comunicación segura, el servidor abre un puerto cifrado, gestionado por un software llamado Protocolo SSL Record, situado encima de TCP. Será el software de alto nivel, Protocolo SSL Handshake, quien utilice el Protocolo SSL Record y el puerto abierto para comunicarse de forma segura con el cliente.

Transcript of Manual SSL v2 en Linux Debian

Page 1: Manual SSL v2 en Linux Debian

SSL

Secure Socket Layer (SSL)

El protocolo SSL es un sistema diseñado y propuesto por Netscape Communications Corporation. Se encuentra en la pila OSI entre los niveles de TCP/IP y de los protocolos HTTP, FTP, SMTP, etc. Proporciona sus servicios de seguridad cifrando los datos intercambiados entre el servidor y el cliente con un algoritmo de cifrado simétrico, típicamente el RC4 o IDEA, y cifrando la clave de sesión de RC4 o IDEA mediante un algoritmo de cifrado de clave pública, típicamente el RSA. La clave de sesión es la que se utiliza para cifrar los datos que vienen del y van al servidor seguro. Se genera una clave de sesión distinta para cada transacción, lo cual permite que aunque sea reventada por un atacante en una transacción dada, no sirva para descifrar futuras transacciones. MD5 se usa como algoritmo de hash.

Proporciona cifrado de datos, autenticación de servidores, integridad de mensajes y, opcionalmente, autenticación de cliente para conexiones TCP/IP.

Cuando el cliente pide al servidor seguro una comunicación segura, el servidor abre un puerto cifrado, gestionado por un software llamado Protocolo SSL Record, situado encima de TCP. Será el software de alto nivel, Protocolo SSL Handshake, quien utilice el Protocolo SSL Record y el puerto abierto para comunicarse de forma segura con el cliente.

Page 2: Manual SSL v2 en Linux Debian

INSTALACION Y CONFIGURACION

SSLv2

Primero lo que debemos es instalar el paquete de “openssl”.

Luego vamos a entrar a la carpeta que genera dicha instalación que es “/etc/ssl/”.

Page 3: Manual SSL v2 en Linux Debian

En esta carpeta debemos crear un directorio llamado “CA” es donde se van a crear todos los archivo requeridos para el SSL.

Ahora dentro de la carpeta “/etc/ssl/CA/” creamos otras dos llamadas “certificados” y “privado”. En la carpeta “certificados” es donde se guardará una copia de cada certificado que firmemos y en el directorio “privado” se guardará la llave privada.

Page 4: Manual SSL v2 en Linux Debian

Después debemos crear dos archivos de conformarán la base de datos de los certificados autofirmados, el primero es el archivo “serial” simplemente contiene el siguiente número de serie de nuestros certificados, ya que apenas vamos a crear el primero su número de serie será 01, después de crearlo se actualizará a 02 y así sucesivamente.

Page 5: Manual SSL v2 en Linux Debian

Luego por organización de nuestro servidor copiaremos el archivo “openssl.cnf” a la carpeta “CA” y haremos un backup del archivo original por seguridad.

La configuración que debe haber dentro de este archivo es la siguiente:

# ********************************************************************# www.marcar.com# [email protected]# # Archivo de configuracion para openssl## ***** openssl.cnf ******

dir = . # variable que establece el directorio de trabajo # seccion que permite convertirnos en una CA# solo se hace referencia a otra seccion CA_default[ ca ]default_ca = CA_default

[ CA_default ]serial = $dir/serial # archivo que guarda el siguiente numero de seriedatabase = $dir/index.txt # archvio que guarda la bd de certificadosnew_certs_dir = $dir/certificados # dir que guarda los certificados generadoscertificate = $dir/cacert.pem # nombre del archivo del certificado raizprivate_key = $dir/privado/cakey.pem # llave privada del certificado raízdefault_md = md5 # algoritmo de dispersión usadopreserve = no # Indica si se preserva o no el orden de los

Page 6: Manual SSL v2 en Linux Debian

# campos del DN cuando se pasa a los certs.nameopt = default_ca # esta opción y la siguiente permiten mostrar # detalles del certificado certopt = default_ca policy = policy_match # indica el nombre de la seccion # donde se especifica que campos son # obligatorios, opcionales y cuales deben ser # iguales al certificado raiz

# seccion de politicas para la emisión de certificados[ policy_match ]countryName = optional # match, obligatoriostateOrProvinceName = optional organizationName = optionalorganizationalUnitName = optional # optional, campo opcionalcommonName = supplied # supplied, debe estar en la peticion emailAddress = optional

# seccion que indica como los certificados deben ser creados[ req ]default_bits = 1024 # tamaño de la llave, si no se indica 512default_keyfile = key.pem # nombre de la llave privadadefault_md = md5 # algoritmo de dispersión a utilizarstring_mask = nombstr # caracteres permitidos en la mascara de la llavedistinguished_name = req_distinguished_name # seccion para el nombre distinguido (DN)req_extensions = v3_req # seccion con mas extensiones que se añaden a la # petición del certificado

# seccion del nombre distinguido, el valor es el prompt que se vera en pantalla.# datos del propietario del certificado.# esta seccion define el contenido de datos de id que el certificado llevara.

[ req_distinguished_name ]0.organizationName = Nombre de la organizacion0.organizationName_default = marcar, S.A.organizationalUnitName = Departamento o divisionemailAddress = Correo electronicoemailAddress_max = 40localityName = Ciudad o distritolocalityName_default = MedellínstateOrProvinceName = Estado o provinciastateOrProvinceName_default = AntioquiacountryName = Codigo del pais (dos letras)countryName_default = COcountryName_min = 2countryName_max = 2commonName = Nombre comun (hostname o IP)commonName_max = 64

# Si en la línea de comandos se indica la opción -x509, # Las siguientes extensiones también aplican [ v3_ca ]# indica que se trata de un certificado CA raíz con autoridad para # firmar o revocar otros certificadosbasicConstraints = CA:TRUE # especifica bajo que método identificar a la llave publica que será certificadasubjectKeyIdentifier = hash # Especifica como identificar la llave publica

Page 7: Manual SSL v2 en Linux Debian

authorityKeyIdentifier = keyid:always,issuer:always # extensiones de la opcion req[ v3_req ]basicConstraints = CA:FALSE # los certificados firmados no son CAsubjectKeyIdentifier = hash

# *******************************************************************************

Lo siguiente es generar la llave privada y el certificado raíz de la CA (Autoridad Cerificadora)

Veamos los que indica cada comando

req -new -x509 ---> crear un certificado nuevo autofirmado

-extensions v3_ca ---> crear un certificado raíz CA

-keyout ---> nombre y donde guardará la llave privada

-out ---> nombre del certificado raíz CA

-days 3650 ---> el certificado será válido por 3650 días (10 años)

-config ---> archivo de configuración a utilizar

A continuación nos preguntara algunos datos como la clave de la CA llave privada.

Page 8: Manual SSL v2 en Linux Debian

Después algunos datos que necesita otorgarle al certificado, nombre de la organización, departamento de trabajo, correo electronico del encargado, ciudad, estado, y codigo del pais, ademas nombre comun (dominio, IP, hostname).

Listo ya generamos la llave privada y el certificado raíz de la CA.

Y podemos visualizar los archivos creados:

El Certificado de la CA

Page 9: Manual SSL v2 en Linux Debian

Y la llave privada tiene el siguiente contenido:

Para verificar que el certificado si fue creado y cual es su validez.

Page 10: Manual SSL v2 en Linux Debian

Lo siguiente que debemos hacer es crear una llave privada y una solicitud de certificado

Page 11: Manual SSL v2 en Linux Debian

A continuación por ultimo nos preguntara otra vez el Nombre Comun (CN: Common Name), aqui es sumamente importante indicarlo igual a como esta el certificado raíz generado anteriormente.

marcar-cert.pem ---> el certificate signing request (csr) (nombre de la solicitud)

key.pem ---> la llave privada

req ---> para solicitar un certificado nuevo

-out ---> el nombre del certificado que vamos a firmar

-config ---> toma el archivo de configuración que creamos.

-nodes ---> especifica para indicar que no deseamos contraseña en la llave privada.

También podemos visualizar lo que contiene la solicitud creada:

Page 12: Manual SSL v2 en Linux Debian

PROCEDEREMOS FIRMAR EL CERTIFICADO

ca ---> especificaremos que somos una Autoridad Certificadora

-out ---> el nombre del certificado firmado certificado-marcar.pem

-config ---> es el archivo de configuración

-days ---> serán los días de validez del certificado en nuestro caso será de 10 años

-infiles ---> es el nombre del archivo de la solicitud marcar-ceºrt.pem

Page 13: Manual SSL v2 en Linux Debian

Luego nos pedirá la contraseña de nuestro certificado raíz que es la que creamos para el cacert.pem en el comienzo del manual.

Nos mostrara los datos que especificamos en la solicitud, luego nos preguntará que si queremos firmar el certificado y también que si queremos guardar el certificado en la base de datos, por supuesto diremos a todo que sí (y).

Y nos responderá lo siguiente confirmado la firma

Page 14: Manual SSL v2 en Linux Debian

Ahora confirmaremos en el archivo “serial” que el numero de serie si aumento

Page 15: Manual SSL v2 en Linux Debian

En el archivo index.txt el número de serie para el certificado recién creado y muestra también los campos del DN.

EL SIGUIENTE PASO ES LA HABILITACION DEL SSL EN ELAPACHE

Lo que debemos hacer primero es agregar algunas líneas al archivo /etc/apache2/sites-available/default

Además en el archivo /etc/apache2/ports.conf debemos agregar la siguiente línea para que acepte conexiones por el puerto 443 que es el de SSL.

Page 16: Manual SSL v2 en Linux Debian

Listen 443

Luego debemos cargar el modulo ssl para apache asi:

Y recargamos el apache2

Al recargar el apache2 nos pedirá la clave de la CA y listo.

Page 17: Manual SSL v2 en Linux Debian

A continuación nos ha salido un error

Esto se debe a que por un mal manejo de las llaves, ya que se ha dañado por que se reescribe el archivo “key.pem”, ahora debemos generar unas nuevas incluyendo una nueva solicitud.

Page 18: Manual SSL v2 en Linux Debian

Es necesario general una llave para cada solicitud, ya que estas son necesarias para la firma de las diferentes solicitudes, por ende la opción “–nodes” se excluye al formar una solicitud por segunda vez.

Y luego lo firmaremos de nuevo

Nos dará otra vez las mismas opciones y nos preguntara lo mismo que al principio.

Y listo, otra vez recargaremos el apache2 y ya no deberá salir error alguno.

Page 19: Manual SSL v2 en Linux Debian

Lo siguiente es ir a nuestro browser e ingresar a nuestro sitio web seguro.

Page 20: Manual SSL v2 en Linux Debian

Como lo podemos ver si colocamos la url http://www.marcar.com nos hara la sugerencia para poder entrar de que coloquemos la url https://www.marcar.com ya que es un sitio seguro.

Luego nos pedirá que aceptemos el certificado ya que el browser no identifica nuestra Autoridad Certificadora.

Y ahora si podremos tener acceso seguro via ssl a nuestra pagina web.

Page 21: Manual SSL v2 en Linux Debian

Recordemos que el candado en la parte inferior del browser indique que es un sitio seguro.