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.
- La clave privada se usa para el cifrado, luego la clave pública asociada se usa para el descifrado. (S / MIME)
RSA (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 la firma
Un sistema PKI incluye los siguientes componentes.
- CA’s -> Responsable de emitir y revocar certificados digitales a los usuarios o suscriptores.
- Autoridades de registro (RA’s) -> verificar la vinculación entre las identidades de sus titulares y las claves públicas.
- Titulares de certificados digitales -> Computadoras, personas, dispositivos de red que han recibido certificados.
- 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
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
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
El certificado de CA generado se muestra en las siguientes instantáneas.
Ahora, genere claves y certificados para el servidor Apache.
openssl genrsa -out apache_server.key 2048
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
La solicitud de CSR se muestra en la siguiente instantánea
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
Ahora, el servidor Apache se configurará para utilizar las claves y el certificado generados anteriormente. Actualmente, se ejecuta en http (puerto 80).
Cree el directorio «certificados» en la ruta / etc / apache2 usando el siguiente comando.
mkdir /etc/apache2/certificates cd /etc/apache2/certificates
Copie el certificado CA, el certificado del servidor y la clave del servidor en el directorio «/ etc / apache2 /ificates».
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>
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
Habilite el sitio web ssl usando el siguiente comando.
a2ensite default-ssl
Agregue el certificado de CA en el navegador del cliente como se muestra a continuación.
Finalmente, el servidor web Apache está configurado para escuchar en el puerto 443 (https).
Conclusió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.