Aseguremos Apache con un certificado SSL/TLS.

Una vez implementado el certificado, el dominio/IP configurado será accesible a través de HTTPS.

Pongámoslo en marcha.

A alto nivel, haremos lo siguiente.

  • Compilar Apache HTTP 2.4.5 con el módulo SSL
  • Obtener el certificado SSL
  • Configurar Apache para que soporte SSL

Instalar Apache con SSL desde el código fuente

Para configurar SSL, Apache HTTP debe estar compilado con mod_ssl. Utilizaré CentOS 7 VM de Digital Ocean para demostrarlo.

  • Inicie sesión en el servidor Linux con root y descargue la última versión de Apache
wget http://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz .

Nota: puede comprobar aquí la última versión.

  • Extraiga mediante el comando gunzip
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
  • Tendrá una nueva carpeta «httpd-2.4.25″
  • Vaya dentro y ejecute el siguiente comando configure
./configure --enable-ssl --enable-so

Nota: Si está haciendo esto en un servidor nuevo, entonces puede experimentar problemas relacionados con APR, PCRE y OpenSSL, y puede consultar la guía de solución de problemas de Apache.

Asegúrese de que no obtiene ningún error del comando configure anterior, y a continuación tiene que instalar con los comandos make.

make 
make install

Como siempre, asegúrese de no obtener ningún error de los comandos anteriores. Con esto concluye, ha instalado un servidor web Apache con soporte SSL.

Obteniendo un Certificado SSL

Existen múltiples formas de generar y obtener el certificado SSL firmado por la autoridad de certificación.

Si usted está buscando implementar SSL en el servidor web de la Intranet, entonces la mayoría de la organización tiene un equipo interno emisor de certificados, así que tienes que consultar con ellos. Pero aún necesita generar una CSR (Solicitud de Firma de Certificado), y puede hacerlo utilizando OpenSSL.

Sin embargo, si lo que quiere es asegurar una URL orientada a Internet, puede comprar un certificado de VeriSign, GoDaddy, Namecheap, ZeroSSL, etc., u obtener un certificado GRATUITO de Let’s Encrypt.

Let’s Encrypt es un proyecto de colaboración de la Fundación Linux que ofrece un certificado SSL/TLS GRATUITO. Utilizaré Let’s Encrypt para obtener un certificado para mi dominio – Chandan.io

Hay varias formas de generar CSR, pero la más fácil que he encontrado es utilizar la herramienta en línea «SSL For FREE«.

Introduzca la URL que desea proteger

sslforfree

Verifique la propiedad del dominio mediante uno de los métodos de la lista y descargue los archivos del certificado de su dominio.

domain-account-verify

Obtendrá tres archivos que utilizaremos a continuación para configurar el servidor web Apache.

  1. clave – este es su archivo clave y no debe compartirlo con nadie públicamente
  2. Certificate – certificado SSL real para su dominio
  3. Ca_bundle – Certificado raíz/intermedio del firmante

Transfiera el archivo descargado al servidor web. Los necesitaremos en breve.

Configuración de Apache SSL

Y un último paso sería configurar Apache para que pueda servir la petición sobre HTTPS.

  • Inicie sesión en el servidor web Apache
  • Haga una copia de seguridad del archivo httpd.conf (ubicación por defecto /usr/local/apache2/conf/)
  • Abra el archivo con el editor vi y asegúrese de que el módulo mod_ssl y httpd-ssl.conf existen y no están comentados
LoadModule ssl_module modules/mod_ssl.so 
Incluya conf/extra/httpd-ssl.conf

Utilizaremos el archivo httpd-ssl. conf para configurar los detalles del certificado. Es necesario asegurarse de que existen los parámetros correctos.

  1. SSLCertificateFile – Ruta del archivo CRT del certificado que descargó anteriormente
  2. SSLCertificateKeyFile – ruta del archivo de clave privada.a
  3. SSLCertificateChainFile – ruta del archivo ca_bundle.crt

Consejo: puede crear una nueva carpeta llamada «ssl» y guardar en ella todos los archivos relacionados con los certificados.

  • Haga una copia de seguridad si es necesario y utilice el editor vi para modificar el archivo.
SSLCertificateFile "/usr/local/apache2/conf/ssl/certificate.crt"
SSLCertificateChainFile "/usr/local/apache2/conf/ssl/ca_bundle.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/private.key"

A continuación, debe configurar la directiva «ServerName«. Normalmente, es su nombre de dominio/URL

NombreServidor chandan.io
  • Guarde el archivo y reinicie el servidor web Apache
cd /usr/local/apache2/bin 
./apachectl stop 
./apachectl start

Y por último, tiene que asegurarse de que su dominio está mapeado a la IP del servidor web recién configurado. Una vez hecho esto, intente acceder a su dominio con HTTPS.

ssl-verification

Y como puede ver, Chandan.io es accesible sobre https con el certificado que configuré.

Los pasos anteriores son esenciales para configurar un certificado SSL, y usted debe ajustar el SSL aún más para endurecer y asegurar, que he explicado aquí. Antes de ponerlo en marcha, también puede probar el SSL/TLS de su servidor web para asegurarse de que no está expuesto a vulnerabilidades de seguridad comunes.

Espero que esto le dé una idea de cómo implementar un certificado SSL en su servidor web Apache, para que la URL sea accesible a través de HTTPS.