GNU/Linux >> Tutoriales Linux >  >> FreeBSD

Cómo proteger Apache con SSL y Let's Encrypt en FreeBSD

En este tutorial, aprenderemos a proteger Apache HTTP servidor con TLS/SSL certificados 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 Los certificados son utilizados por el servidor web Apache para cifrar la comunicación entre los nodos finales o, más comúnmente, entre el servidor y el cliente para proporcionar seguridad. Let's Encrypt proporciona certbot utilidad de línea de comandos, que es una aplicación que puede facilitar la forma en que puede obtener certificados de confianza 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 habilitado para sitios en el directorio de configuración raíz de Apache emitiendo los siguientes comandos.

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

# mkdir /usr/local/etc/apache24/sites-available
# mkdir /usr/local/etc/apache24/sites-enabled

2. Después de haber creado ambos directorios, abra Apache httpd.conf archivo 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:

IncludeOptional etc/apache24/sites-enabled/*.conf

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

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

Agregue las siguientes líneas al archivo 020_mod_ssl.conf .

Listen 443
SSLProtocol ALL -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCacheTimeout  300

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

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. A continuación, cree el TLS archivo de configuración 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

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

<VirtualHost *:443>
    ServerName www.yourdomain.com
	ServerAlias yourdomain.com
                DocumentRoot "/usr/local/www/apache24/data/"
	SSLEngine on

	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"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/usr/local/www/apache24/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

	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"

	<Directory "/usr/local/www/apache24/data/">
            Options Indexes FollowSymLinks MultiViews
        #AllowOverride controls what directives may be placed in .htaccess files.       
                        AllowOverride All
        #Controls who can get stuff from this server file
                        Require all granted
        </Directory>
       
    ErrorLog "/var/log/apache/yourdomain.ssl-error.log"
    CustomLog "/var/log/apache/yourdomain.ssl-access_log" combined

</VirtualHost>

Asegúrese de reemplazar la variable de nombre de dominio de ServerName , Alias ​​del servidor , Registro de errores , Registro personalizado declaraciones en consecuencia.

Paso 2:Instale Lets'Encrypt en FreeBSD

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

Al instalar certbot una serie de avisos se mostrarán en su pantalla. Use la siguiente captura de pantalla para configurar certbot utilidad. Además, compilar e instalar la utilidad certbot puede llevar algún tiempo, según los recursos de su máquina.

# cd /usr/ports/security/py-certbot
# make install clean

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

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

8. Para generar un certificado para 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 (DocumentRoot directiva del archivo de configuración de su dominio) usando -w bandera. Si tiene varios subdominios, agréguelos todos con -d bandera.

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

Mientras obtiene 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 Certbot
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):[email protected]
There seem to be problems with that address. Enter email address (used for
urgent renewal and security notices)  If you really want to skip this, you can
run the client with --register-unsafely-without-email but make sure you then
backup your account key from /etc/letsencrypt/accounts   (Enter 'c' to cancel):[email protected]

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: a ------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: n Obtaining a new certificate Performing the following challenges: http-01 challenge for www.domain.com Using the webroot path /usr/local/www/apache24/data for all unmatched domains. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem. Your cert will expire on 2017-11-15. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /usr/local/etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to 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/

Paso 3:actualice los certificados TLS de Apache en FreeBSD

10. Para agregar certificados de 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"

11. Finalmente, habilite el archivo de configuración de TLS creando un enlace simbólico para el archivo de configuración de TLS de su dominio para habilitar sitios directorio, verifique las configuraciones de Apache en busca de 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 , emita el siguiente comando para enumerar los sockets de red httpd.

# sockstat -4 | grep httpd

13. Puede navegar a la dirección de su dominio desde un navegador a través del protocolo HTTPS para confirmar que los certificados de Let's Encrypt se aplicaron correctamente.

https://www.yourdomain.com

14. Para obtener información adicional sobre el certificado Let's Encrypt emitido desde la línea de comandos, utilice openssl comando de la siguiente manera.

# openssl s_client -connect www.yourdomain.com:443

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.

¡Eso es todo! Los clientes ahora pueden visitar su sitio web de forma segura, porque el tráfico que fluye entre el servidor y el navegador del cliente está encriptado. Para tareas más complejas relacionadas con la utilidad certbot, visite el siguiente enlace:https://certbot.eff.org/


FreeBSD
  1. Cómo instalar y asegurar phpMyAdmin con Apache en CentOS 7

  2. Cómo proteger el servidor web Apache con Let's Encrypt en RHEL 8

  3. Cómo instalar WonderCMS con Apache y Lets Encrypt SSL en CentOS 8

  4. Cómo proteger Nginx con SSL y Let's Encrypt en FreeBSD

  5. Cómo asegurar una conexión SSL con Apache en Ubuntu 18.04

Cómo instalar Let's Encrypt SSL con Apache en CentOS 7

Cómo instalar Let's Encrypt SSL en Ubuntu con Apache

Cómo instalar Apache con Let's Encrypt SSL en Ubuntu 20.04 LTS

Cómo usar Let's Encrypt con Cloudflare

Cómo proteger Apache con el certificado Let's Encrypt SSL en CentOS 8

Cómo proteger un nombre de host de Plesk con SSL