¿Cómo configurar Apache HTTP con certificado SSL?

Protejamos Apache con certificado SSL/TLS.

Una vez que se implemente el certificado, se podrá acceder al dominio/IP configurado a través de HTTPS.

Vamos a ponerlo en marcha.

En un nivel alto, haremos lo siguiente.

  • Compile Apache HTTP 2.4.5 con módulo SSL
  • Obtener certificado SSL
  • Configurar Apache para admitir SSL

Instalar Apache con SSL desde el origen

Para configurar SSL, Apache HTTP debe estar compilado con mod_ssl. Usaré CentOS 7 VM de océano digital para demostrar esto.

  • 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: puedes Chequea aquí para la última versión.

  • Extraer por comando gunzip
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
  • Tendrás una nueva carpeta “httpd-2.4.25”
  • Entra y ejecuta el siguiente comando de configuración
./configure --enable-ssl –-enable-so

Nota: si está haciendo esto en un servidor nuevo, es posible que experimente problemas relacionados con APR, PCRE, OpenSSL y puede consultar la guía de solución de problemas.

Asegúrese de no obtener ningún error del comando de configuración anterior y luego debe instalar con los comandos make.

make 
make install

Como de costumbre, asegúrese de que no haya errores con los comandos anteriores. Esto concluye que ha instalado un servidor web Apache con soporte SSL.

Obtener un certificado SSL

Hay varias formas de generar y obtener el certificado SSL firmado por la autoridad de certificación.

Si está buscando implementar SSL en el servidor web de Intranet, entonces la mayoría de la organización tiene un equipo emisor de certificados interno, por lo que debe consultar con ellos. Pero aún necesita generar una CSR (Solicitud de firma de certificado), y puede hacerlo usando OpenSSL.

Sin embargo, si está buscando asegurar una URL orientada a Internet, entonces puede comprar un certificado de VeriSign, GoDaddy, Namecheap, CeroSSLetc., u obtener un certificado GRATIS de Vamos a cifrar.

Let’s Encrypt es un proyecto de colaboración de la Fundación Linux que ofrece un certificado SSL/TLS GRATIS. Usaré 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 encontré es usar el «SSL GRATIS” herramienta en línea.

Introduzca la URL que desea proteger

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

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

  • clave: este es su archivo clave y no debe compartirse públicamente con nadie
  • Certificado: certificado SSL real para su dominio
  • Ca_bundle: certificado intermedio/raíz del firmante
  • Transfiera el archivo descargado al servidor web. Los necesitaremos en breve.

    Configuración SSL de Apache

    Y un paso final sería configurar Apache para que pueda atender la solicitud a través de HTTPS.

    • Inicie sesión en el servidor web Apache
    • Realice una copia de seguridad del archivo httpd.conf (ubicación predeterminada /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 existan y no estén comentados.
    LoadModule ssl_module modules/mod_ssl.so 
    Include conf/extra/httpd-ssl.conf

    Usaremos el archivo httpd-ssl.conf para configurar los detalles del certificado. Hay lo siguiente que necesita para asegurarse de que existan los parámetros correctos.

  • SSLCertificateFile: ruta del archivo CRT del certificado que descargó anteriormente
  • SSLCertificateKeyFile: ruta del archivo de clave private.a
  • SSLCertificateChainFile: ruta del archivo ca_bundle.crt
  • Sugerencia: es posible que desee crear una nueva carpeta llamada «ssl» y conservar todos los archivos relacionados con el certificado en ella.

    • Realice una copia de seguridad si es necesario y use 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». Por lo general, es su nombre de dominio/URL

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

    Y finalmente, debe asegurarse de que su dominio esté asignado a la IP del servidor web recién configurada. Una vez hecho esto, intente acceder a su dominio con HTTPS.

    Y como puede ver, se puede acceder a Chandan.io a través de https con el certificado que configuré.

    Los pasos anteriores son esenciales para configurar un certificado SSL, y debe modificar el SSL aún más para fortalecerlo y asegurarlo, lo cual expliqué aquí. Antes de la puesta en marcha, es posible que también desee probar su servidor web SSL/TLS 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, de modo que se pueda acceder a la URL a través de HTTPS.

    ¿Te gustó leer el artículo? ¿Qué tal compartir con el mundo?