Cómo proteger Apache con SSL y cifrar en FreeBSD

Cómo proteger Apache con SSL y cifrar en FreeBSD

En este tutorial aprenderemos cómo proteger el servidor Apache HTTP. con los certificados TLS/SSL. ofrecidos por Let’s Encrypt. en FreeBSD 11.x. También cubriremos cómo automatizar el proceso de renovación del certificado para Lets ‘Encrypt.

Lea también. Instale Let’s Encrypt para Nginx en FreeBSD

TLS/SSL. son utilizados por el servidor web Apache para cifrar la comunicación entre los nodos finales, o más comunes entre el servidor y el cliente para brindar seguridad. Let’s Encrypt proporciona la utilidad de línea de comandos certbot. que es una aplicación que puede facilitar la forma en que puede obtener certificados confiables de forma gratuita.

Requisitos:

  1. Instalación de FreeBSD 11.x
  2. 10 cosas que hacer después de la instalación de FreeBSD
  3. Cómo instalar Apache, MariaDB y PHP en FreeBSD

Paso 1: Configurar Apache SSL en FreeBSD

1.. Antes de comenzar a instalar la utilidad certbot y crear el archivo de configuración TSL para Apache. primero cree dos directorios distintos llamados sitios disponibles. y sitios habilitados. en el directorio de configuración raíz de Apache emitiendo los siguientes comandos.

El propósito de estos dos directorios es facilitar la administración de la configuración del alojamiento virtual en el sistema, sin modificar el archivo de configuración httpd.conf. principal de Apache cada vez que agregamos un nuevo host virtual.

# mkdir/usr/local/etc/apache24/sites-available # mkdir/usr/local/etc/apache24/sites-enabled freestar.config.enabled_slots.push

2.. Después ha creado ambos directorios, abra el archivo Apache httpd.conf. con un editor de texto y agregue la siguiente línea cerca del final del archivo como se ilustra a continuación.

# nano/usr/local/etc/apache24/httpd.conf

Agregue la siguiente línea:

IncluirOpcional etc/apache24/sites-enabled/*. conf  Configurar Apache en FreeBSD  Configurar Apache en FreeBSD Configurar Apache en FreeBSD

3.. A continuación, habilite el módulo TLS. para Apache creando lo siguiente, un nuevo archivo llamado 020_mod_ssl.conf. en el directorio modules.d. con el siguiente contenido.

# nano/usr/local/etc/apache24/modules.d/020_mod_ssl.conf

Agregar siguientes líneas al archivo 020_mod_ssl.conf.

Escuche 443 SSLProtocol ALL-SSLv2-SSLv3 SSLCipherSuite HIGH: MEDIUM:! aNULL:! MD5 SSLPassPhraseDialog integrado SSLSessionCacheTimeout 300  Configuración SSL de Apache en FreeBSD  Configuración SSL de Apache en FreeBSD Configuración de Apache SSL en FreeBSD

4.. Ahora, descomente el módulo SSL. de /usr/local/etc/apache24/httpd.conf. eliminando el hashtag del principio de la siguiente línea, como se ilustra a continuación:

LoadModule ssl_module libexec/apache24/mod_ssl.so  Habilitar módulo SSL en Apache  Habilitar el módulo SSL en Apache Habilitar el módulo SSL en Apache

5.. A continuación, cree el archivo de configuración TLS. para su dominio en sitios disponibles. directorio, preferiblemente con el nombre de su dominio, como se presenta en el siguiente extracto:

# nano/usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf

Agregar siguiente configuración de virtualhost al archivo bsd.lan-ssl.conf.

ServerName www.yourdomain.com ServerAlias ​​yourdomain.com DocumentRoot “/usr/local/www/apache24/data/”SSLEngine en SSLCertificateFile”/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem “SSLCertificateKeyFile”/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey. pem “SSLCertificateChainFile”/usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem “ SSLOptions + StdEnvVars SSLOpt iones + StdEnvVars BrowserMatch “MSIE [2-5]” \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog “/var/log/apache/httpd-ssl_request.log” \ “% t% h% SSL_PROTOCOL x% SSL_CIPHER x \ “% r \”% b “ Índices de opciones FollowSymLinks MultiViews #AllowOverride controla qué directivas se pueden colocar en archivos .htaccess. AllowOverride Todos los #Controls que pueden obtener cosas de este archivo de servidor Requieren todos concedidos ErrorLog “/var/log/apache/yourdomain.ssl-error.log” CustomLog “/var/log/apache/yourdomain.ssl-access_log “combinado

Asegúrese de reemplazar la variable de nombre de dominio de ServerName. ServerAlias ​​, ErrorLog. CustomLog. en consecuencia.

Paso 2: Instale Lets’Encrypt en FreeBSD

6.. En el siguiente paso, emita el siguiente comando para instale la utilidad certbot. proporcionada por Let’s Encrypt. que se utilizará para obtener certificados gratuitos Apache TSL. para su dominio.

Durante la instalación de certbot. se mostrarán una serie de mensajes en la pantalla. Utilice la siguiente captura de pantalla para configurar la utilidad certbot. Además, la compilación e instalación de la utilidad certbot puede llevar algún tiempo, dependiendo de los recursos de su máquina.

# cd/usr/ports/security/py-certbot # make install clean  Instalar Certbot en FreeBSD  Instalar Certbot en FreeBSD Instalar Certbot en FreeBSD

7.. Una vez finalizado el proceso de compilación, ejecute el siguiente comando para actualizar certbot. y dependencias certbot. requeridas.

# pkg install py27-certbot # pkg install py27-acme

8.. Para generar un certificado para r su dominio, emita el comando como se ilustra a continuación. Asegúrese de proporcionar la ubicación webroot correcta donde se almacenan los archivos de su sitio web en el sistema de archivos (directiva DocumentRoot. de su archivo de configuración de dominio) utilizando la marca-w. Si tiene varios subdominios, agréguelos todos con la marca-d.

# certbot certonly–webroot-w/usr/local/www/apache24/data/-d yourdomain.com-d www.yourdomain.com

Al obtener el certificado, proporcione una dirección de correo electrónico para la renovación del certificado, presione a para aceptar los términos y condiciones de Let’s Encrypt y n para no compartir la dirección de correo electrónico de los socios de Let’s Encrypt.

Salida del comando de Certbot Guardando el registro de depuración en/var/log/letsencrypt/letsencrypt.log Ingrese la dirección de correo electrónico (utilizada para avisos urgentes de renovación y seguridad) (Ingrese ‘c’ para cancelar): [email protected] Parece que hay problemas con esa dirección. Ingrese la dirección de correo electrónico (utilizada para renovaciones urgentes y avisos de seguridad) Si realmente desea omitir esto, puede ejecutar el cliente con–register-unsafely-without-email pero asegúrese de hacer una copia de seguridad de la clave de su cuenta desde/etc/letsencrypt/cuentas (ingrese ‘c’ para cancelar): [correo electrónico protegido]——————————————————————————-Lea los Términos de servicio en https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. Debe aceptar para registrarse con el servidor ACME en https://acme-v01.api.letsencrypt.org/directory——————————————————————————-(A) gree/(C) ancel: a——————————————————————————-Estaría dispuesto compartir su dirección de correo electrónico con Electronic Frontier Foundation, un socio fundador del proyecto Let’s Encrypt y la organización sin fines de lucro que desarrolla Certbot? Nos gustaría enviarle un correo electrónico sobre EFF y nuestro trabajo para cifrar la web, proteger a sus usuarios y defender los derechos digitales.——————————————————————————-(Y) es/(N) o: n Obtención de un nuevo certificado Realización de los siguientes desafíos: http-01 desafío para www.domain.com Usando la ruta webroot/usr/local/www/apache24/data para todos los dominios incomparables. Esperando verificación … Desafíos de limpieza NOTAS IMPORTANTES:-¡Felicitaciones! Su certificado y cadena se han guardado en/usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem. Su certificado vencerá el 2017-11-15. Para obtener una versión nueva o modificada de este certificado en el futuro, simplemente ejecute certbot nuevamente. Para renovar * todos * sus certificados de forma no interactiva, ejecute “certbot renew”: las credenciales de su cuenta se han guardado en el directorio de configuración de Certbot en/usr/local/etc/letsencrypt. Debería hacer una copia de seguridad segura de esta carpeta ahora. Este directorio de configuración también contendrá certificados y claves privadas obtenidas por Certbot, por lo que es ideal realizar copias de seguridad periódicas de esta carpeta.-Si le gusta Certbot, considere apoyar nuestro trabajo al: Donar a ISRG/Let’s Encrypt: https://letsencrypt.org/donate Donar a EFF: https://eff.org/donate-le

9.. Una vez que haya obtenido los certificados para su dominio, puede ejecutar el comando ls para enumerar todos los componentes del certificado (cadena, clave privada, certificado) como se presenta en el siguiente ejemplo.

# ls-al/usr/local/etc/letsencrypt/live/www.yourdomain.com/ Lista de claves y certificados de dominio  Lista de claves y certificados de dominio Enumere el certificado y las claves de dominio

Paso 3: Actualice los certificados Apache TLS en FreeBSD

10.. Para agregar certificados Let’s Encrypt a su sitio web, abra el archivo de configuración de Apache para su dominio y actualice las siguientes líneas para reflejar la ruta de los certificados emitidos.

# nano/usr/local/etc/apache24/sites-available/bsd.lan-ssl. conf

Agregue estas líneas de certificado TLS:

SSLCertificateFile “/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem” SSLCertificateKeyFile “/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem” SSLCertificateChainFile “/usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem” Configurar certificado SSL para dominio  Configurar SSL Certificado de dominio Configurar el certificado SSL para el dominio

11.. Finalmente, habilite el archivo de configuración TLS, creando un enlace simbólico para el archivo de configuración TLS de su dominio al directorio sitios habilitados. marque Configuraciones de Apache para posibles errores de sintaxis y, si la sintaxis es correcta, reinicie el demonio de Apache emitiendo los siguientes comandos.

# ln-sf/usr/local/etc/apache24/sites-available/bsd.lan-ssl. conf/usr/local/etc/apache24/sites-enabled/# apachectl-t # service apache24 restart

12.. Para verificar si el servicio Apache está escuchando en HTTPS. puerto 443. ejecute el siguiente comando para enumerar los enchufes de red httpd.

# socks tat-4 | grep httpd  Check Apache Ports  Comprobar puertos Apache Comprobar puertos Apache

13.. Puede navegar a la dirección de su dominio desde un navegador a través de Protocolo HTTPS para confirmar que los certificados Let’s Encrypt se han aplicado correctamente.

https://www.yourdomain.com Verificar HTTPS Let's Encrypt Certificate  Verificar HTTPS Let's Encrypt Certificate Verificar HTTPS Let’s Encrypt Certificate

14.. En orden para obtener información adicional sobre el certificado Let’s Encrypt emitido desde la línea de comando, use el comando openssl. de la siguiente manera.

# openssl s_client-connect www.yourdomain.com:443  Marque Let's Encrypt-Certificate Information  Check Let 's Encrypt Certificate Information Marque Let’s Encrypt Certificate Information

15.. También puede verificar si el tráfico está encriptado con un certificado válido proporcionado por Let’s Encrypt CA. desde un dispositivo móvil como se ilustra en la siguiente captura de pantalla móvil.