Cómo crear claves y certificados SSL autofirmados para Apache en RHEL / CentOS 7.0


SSL (Secure Sockets Layer) es un protocolo criptográfico que permite un flujo de datos seguro entre un servidor y sus clientes utilizando claves simétricas/asimétricas mediante un certificado digital firmado por una autoridad de certificación (CA).

  1. Basic LAMP Installation on RHEL/CentOS 7.0

Este tutorial proporciona un enfoque sobre cómo configurar el protocolo criptográfico de comunicación Capa de sockets seguros (SSL) en el servidor web Apache instalado en Red Hat Enterprise Linux/CentOS 7.0 y generar certificados y claves autofirmados con el ayuda de un script bash que simplifica enormemente todo el proceso.

Paso 1: instalar y configurar Apache SSL

1. Para habilitar SSL en el servidor HTTP Apache, use el siguiente comando para instalar el módulo SSL y el kit de herramientas OpenSSL, que es necesario para la compatibilidad con SSL/TLS.

# yum install mod_ssl openssl

2. Una vez instalado el módulo SSL, reinicie el demonio HTTPD y agregue una nueva regla de firewall para asegurarse de que el puerto SSL, 443 , esté abierto a conexiones externas en su máquina en escucha. estado.

# systemctl restart httpd
# firewall-cmd --add-service=https   ## On-fly rule

# firewall-cmd --permanent  --add-service=https   ## Permanent rule – needs firewalld restart

3. Para probar la conexión SSL, abra un navegador remoto y navegue hasta la dirección IP de su servidor usando el protocolo HTPS en https:/server_IP .

Paso 2: Cree certificados y claves SSL

4. La comunicación SSL anterior entre el servidor y el cliente se realizó utilizando un Certificado y una Clave predeterminados generados automáticamente en la instalación. Para generar nuevas claves privadas y pares de certificados autofirmados, cree el siguiente script bash en una ruta de sistema ejecutable (/usr/local/bin:/usr/local/sbin:/usr/bin:/opt/cuda/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl ).

Para este tutorial se eligió la ruta /usr/local/bin/, asegúrese de que el script tenga el bit ejecutable configurado y, luego, utilícelo como un comando para crear nuevos pares SSL en /etc/httpd/ssl/ como ubicación predeterminada de Certificados y claves.

# nano /usr/local/bin/apache_ssl

Utilice el siguiente contenido de archivo.

#!/bin/bash
mkdir /etc/httpd/ssl
cd /etc/httpd/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Apache SSL Certificate and Key!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The Certificate and Key for $cert has been generated!\nPlease link it to Apache SSL available website!"
ls -all /etc/httpd/ssl
exit 0

5. Ahora haga que este script sea ejecutable y ejecútelo para generar un nuevo par de Certificado y Clave para su Host Virtual Apache SSL.

Rellénelo con su información y preste atención al valor de Nombre común para que coincida con el FQDN de su servidor o, en el caso de Alojamiento virtual, para que coincida con la dirección web a la que accederá cuando se conecte a un sitio web seguro.

# chmod +x /usr/local/bin/apache_ssl
# apache_ssl

6. Después de generar el Certificado y la Clave, el script presentará una lista larga de todos sus pares SSL de Apache almacenados en la ubicación /etc/httpd/ssl/.

7. Otro enfoque para generar certificados y claves SSL es instalar el paquete crypto-utils en su sistema y generar pares usando el comando genkey , que puede imponer algunos problemas, especialmente cuando se usa en una pantalla de terminal Putty .

Por lo tanto, sugiero usar este método solo cuando esté conectado directamente a un monitor de pantalla.

# yum install crypto-utils
# genkey your_FQDN

8. Para agregar el certificado y la clave nuevos a su sitio web SSL, abra el archivo de configuración de su sitio web y reemplace las declaraciones SSLCertificateFile y SSLCertificateKeyFile con la ubicación y los nombres de los nuevos pares según corresponda.

9. Si el certificado no es emitido por una CA de confianza - Autoridad de certificación o el nombre de host del certificado no coincide con el nombre de host que estableció la conexión, debería aparecer un error en su navegador y debe aceptar manualmente el certificado.

¡Eso es! Ahora puede usar apache_ssl como línea de comando en RHEL/CentOS 7.0 para generar tantos pares de certificados y claves autofirmados como necesite, y todos se mantendrán en /etc/httpd/ssl/ con el archivo de clave protegido con permisos 700 .