LINUX

Cómo configurar PKI y el servidor web Apache seguro

El enfoque de este tutorial es el funcionamiento de la infraestructura de clave pública (PKI) y la autoridad de certificación basada en OpenSSL. Primero se explicará el concepto diferente relacionado con PKI y luego se preparará un banco de pruebas con Ubuntu 14.04 LTS para aplicar los conocimientos de PKI.

En este artículo, se dará una explicación detallada sobre la generación de la autoridad de certificación (CA), el servidor y las claves / certificados de usuario. Al final, las claves / certificados generados se utilizarán en diferentes escenarios.

Acerca de la infraestructura de clave pública (PKI)

Se utiliza para establecer confianza y seguridad en las redes informáticas. El propósito de PKI es vincular claves públicas con atributos que se utilizan en varias aplicaciones y protocolos para las siguientes características de seguridad.

  • firma digital,
  • autenticación,
  • no repudio
  • S / MIME.

PKI consta de pares de claves que tienen claves públicas y privadas. Como su nombre indica, la clave privada (Pr) siempre debe mantenerse segura y la clave pública (Pu) se distribuye a todos los participantes para una comunicación confiable. Ambas claves se pueden utilizar para cifrar y descifrar, sin embargo, su uso en la aplicación es diferente.

  • La clave pública se usa para el cifrado, luego la clave privada asociada se usa para el descifrado.

Public_key_encryption.svg

  • La clave privada se usa para el cifrado, luego la clave pública asociada se usa para el descifrado. (S / MIME)

Public_key_signing.svgRSA (Rivest Shamir Adleman) es el algoritmo más conocido utilizado para PKI y admite diferentes tamaños de longitud de clave (512,1024,2048, etc.). Las claves RSA se componen de 2 números primos que deberían ser muy grandes, de lo contrario, disminuirá la seguridad del algoritmo.

En el sistema PKI, el certificado digital es el componente principal que vincula la clave pública a un usuario / sitio web con detalles adicionales. Básicamente, la propiedad de la clave pública se demuestra mediante certificados digitales porque incluye información sobre la clave generada, la identidad del propietario y la operación permitida (como firma digital, no repudio y autenticación del servidor, etc.). Hay dos partes de los certificados digitales

El nombre de una entidad (usuario o sitio web), la clave pública generada para la entidad, otra información útil (por ejemplo, nombre común, unidad organizativa, período de validez de la clave pública, etc.) se incluyen en la parte de datos. La firma digital generada por CA sobre la parte de datos se conoce como parte de firma.

Parte de datos

parte de datos

Parte de la firma

parte de la firma

Un sistema PKI incluye los siguientes componentes.

  1. CA’s -> Responsable de emitir y revocar certificados digitales a los usuarios o suscriptores.
  2. Autoridades de registro (RA’s) -> verificar la vinculación entre las identidades de sus titulares y las claves públicas.
  3. Titulares de certificados digitales -> Computadoras, personas, dispositivos de red que han recibido certificados.
  4. Clientes finales -> Estos validan las firmas digitales y los certificados de las partes comunicantes.

Instalacion y configuracion

En este artículo, Ubuntu 14.04 LTS está instalado en la VM y se instalan los siguientes paquetes requeridos.

Instale el servidor web apache usando el siguiente comando

apt-get install apache2

Instale el paquete OpenSSL usando el siguiente comando

apt-get install openssl.

La clave se genera para CA mediante el siguiente comando.

openssl genrsa -out myCA_key.pem 2048

key_generation

Se crea un archivo de configuración personalizado (my_ca.cfg) para CA.

[ ext ]
keyUsage = critical, cRLSign, keyCertSign
basicConstraints = critical,CA:true
subjectKeyIdentifier = hash

[ req ]
distinguished_name      = req_distinguished_name
[ req_distinguished_name ]
CN = Common Name
CN_default="My CA"
policy = policy_supplied

[ policy_supplied ]
CN = supplied

cfg personalizado

Ejecute el siguiente comando para crear un certificado autofirmado para CA.

 openssl req -config my_ca.cfg -extensions ext -days 180 -new -x509 -key myCA_key.pem  -out myCA_cert.crt -set_serial 11 -batch -text

certificado de CA autofirmado

El certificado de CA generado se muestra en las siguientes instantáneas.

CA-cert1

CA-cert2

Ahora, genere claves y certificados para el servidor Apache.

openssl genrsa -out apache_server.key 2048

server_key

Se generará una solicitud de firma de certificado (CSR) para el servidor Apache y luego se firmará con nuestra CA.

openssl req  -out apache_server.csr -key apache_server.key -new -batch

rsc

La solicitud de CSR se muestra en la siguiente instantánea

cs-req

Firma del certificado del servidor Apache con el siguiente comando.

openssl x509 -req -extensions req_ext -in apache_server.csr -CA myCA_cert.crt -CAkey myCA_key.pem -out apache_server.crt -days 720 -set_serial 10 -text

server-apache_certificate

Ahora, el servidor Apache se configurará para utilizar las claves y el certificado generados anteriormente. Actualmente, se ejecuta en http (puerto 80).

pruebaCree el directorio «certificados» en la ruta / etc / apache2 usando el siguiente comando.

mkdir /etc/apache2/certificates

cd /etc/apache2/certificates

directorio

Copie el certificado CA, el certificado del servidor y la clave del servidor en el directorio «/ etc / apache2 /ificates».

Copiar

El archivo de configuración de cambio SSL «default-ssl.conf» existe en la ruta / etc / apache2 / sites-available con los certificados y la clave recién generados. Para la prueba, agregue lo siguiente en el archivo de configuración SSL y reinicie el servidor apache.

NameVirtualHost 0.0.0.0:80
NameVirtualHost 0.0.0.0:443

<VirtualHost 0.0.0.0:80>
DocumentRoot /var/www/html/
ServerName test
VirtualHost>

<VirtualHost 0.0.0.0:443>

DocumentRoot /var/www/html/
ServerName test
SSLEngine on
SSLProtocol All -SSLv2 -SSLv3
SSLCertificateFile /etc/apache2/certificates/apache_server.crt
SSLCertificateKeyFile /etc/apache2/certificates/apache_server.key
SSLCACertificateFile /etc/apache2/certificates/myCA_cert.crt

</VirtualHost>

apache-confi

Antes de reiniciar el servidor web Apache, asegúrese de que el módulo «ssl» esté habilitado. Utilice el siguiente comando para habilitar el módulo SSL de Apache.

 a2enmod ssl

habilitado para SSL

Habilite el sitio web ssl usando el siguiente comando.

 a2ensite default-ssl

habilitar

Agregue el certificado de CA en el navegador del cliente como se muestra a continuación.

agregando -ca

Finalmente, el servidor web Apache está configurado para escuchar en el puerto 443 (https).

finalConclusión

PKI es un componente crítico en el mundo de las TI y está integrado con muchas aplicaciones. Proporciona la autenticidad de la entidad y el canal cifrado para una comunicación segura.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar