Cómo asegurar Nginx con SSL y Cifrar en FreeBSD

Cómo asegurar Nginx con SSL y Cifrar en FreeBSD

En esta guía discutiremos cómo asegurar Nginx servidor web en FreeBSD con TLS/SSL certificados ofrecidos por Vamos a cifrar la autoridad de certificado. También le mostraremos cómo renovar automáticamente los certificados de cifrado de Lets antes de la fecha de expiración.

TLS, un acrónimo para Transport Layer Security, es un protocolo que corre bajo Http protocolo y utiliza certificados y claves para encapsular los paquetes y cifrar los datos intercambiados entre un servidor y un cliente, o en este caso entre Nginx servidor web y navegador del cliente, para asegurar la conexión, de modo que un tercero, que pueda interceptar el tráfico, no pueda descifrar la transmisión.

Leer también: Instalar Vamos a cifrar para Apache en FreeBSD

El proceso de obtener un gratis Vamos a cifrar certificado en FreeBSD puede simplificarse enormemente instalando certboot Utilidad del cliente, que es el cliente oficial de Let's Cifrypt utilizado para generar y descargar certificados.

Requisitos

  1. Instale la pila FBEMP (NGINX, MariadB y PHP) en FreeBSD

Paso 1: Configurar NGINX TLS/SSL

1. Por defecto, el TLS/SSL La configuración del servidor no está habilitada en FreeBSD porque el TLS Las declaraciones de bloque de servidor se comentan en Nginx Archivo de configuración predeterminado.

Para activar el TLS servidor en Nginx, abierto nginx.confusión archivo de configuración, busque la línea que define el inicio de Ssl servidor y actualizar todo el bloque para verse en la muestra a continuación.

# nano/usr/local/etc/nginx/nginx.confusión 

Nginx HTTPS Bloque Extracto:

Configuración de nginx https
servidor escuchar 443 ssl default_server; nombre del servidor www.Tu dominio.comunicarse; access_log/var/log/nginx/access.registro; error_log/var/log/nginx/error.registro; ERROR_PAGE 500 502 503 504 /50X.html; Ubicación = /50x.html root/usr/local/www/nginx-dist;  ubicación/root/usr/local/www/nginx; índice índice.índice HTML.htm; try_files $ uri $ uri / / índice.php?$ args;  ssl_certificate "/usr/local/etc/letsencrypt/live/www.Tu dominio.comunicarse/certificado.PEM "; SSL_Certificate_Key"/usr/local/etc/letsencrypt/live/www.Tu dominio.comunicarse/Privkey.PEM "; SSL_PROTOCOLS TLSV1 TLSV1.1 TLSV1.2; ssl_dhparam/usr/local/etc/nginx/dhparam.pem; ssl_session_cache compartido: ssl: 1m; ssl_session_timeout 10m; SSL_CIPHERS ALTO:!Anull:!MD5; ssl_prefer_server_ciphers on; # Use compresión GZIP GZIP ON; gzip_disable "msie6"; gzip_vary on; gzip_proxied cualquier; gzip_comp_level 5; GZIP_BUFFERS 16 8K; gzip_http_version 1.0; # Establezca una variable para trabajar en torno a la falta de condicionales anidados establecidos $ cache_uri $ request_uri; Ubicación ~ /.bien conocido permitir todo;  ubicación ~ \ \.php $ root/usr/local/www/nginx; fastcgi_pass 127.0.0.1: 9000; Índice FastCGI_Index.php; #FASTCGI_PARAM Script_FileName /scripts $ FastCGI_Script_Name; fastcgi_param script_filename $ request_fileName; incluir fastcgi_params;  

El bloque anterior, además de Ssl bloque, también contiene algunas declaraciones para habilitar la compresión de GZIP y Fastcgi Process Manager, utilizado para pasar el código PHP a Php-FPM puerta de enlace para ejecutar aplicaciones web dinámicas.

Después de haber agregado el código anterior a Nginx Archivo de configuración principal, no reinicie el demonio ni aplique la configuración antes de instalar y obtener un Vamos a cifrar Certificado para su dominio.

Paso 2: Instale el cliente CERTBOT en FreeBSD

2. El proceso de instalación de Let's Cifrar certbot La utilidad del cliente en FreeBSD implica descargar el código fuente para py-certbot y compilarlo localmente, emitiendo los siguientes comandos.

# CD/USR/Ports/Security/Py-Certbot # hacer que la instalación limpie 

3. Compilando el py-certbot La utilidad lleva mucho tiempo en comparación con la instalación de un paquete binario regular. Durante este tiempo, se requiere que se descargue una serie de dependencias en compilación localmente en FreeBSD.

Además, aparecerán una serie de indicaciones en su pantalla, exigiéndole que seleccione qué paquetes se utilizarán en el tiempo de compilación para cada dependencia. En la primera pantalla, seleccione las siguientes herramientas, presionando [espacio] clave, para compilar el Python27 Dependencia, como se ilustra en la imagen a continuación.

  • IPv6
  • Libffi
  • NLS
  • Pymalloc
  • HILOS
  • UCS4 para soporte Unicode
Habilitar UCS4 para Unicode

4. A continuación, seleccione Documento y HILOS para getText-Tools Dependencia y prensa DE ACUERDO para continuar como se muestra en la imagen a continuación.

Instalar documentación

5. En la siguiente pantalla, deje el Pruebas opción deshabilitada para libffi-3.2.1 y presionar DE ACUERDO Para moverse más.

Desactivar las pruebas para libffi

6. A continuación, golpea espacio para seleccionar Documento para PY27-ENUM34 dependencia, que instalará la documentación para esta herramienta y presiona DE ACUERDO para continuar, como se ilustra en la siguiente captura de pantalla.

Instalar documentación para PY27

7. Finalmente, elija instalar muestras de ejemplo para py27-openssl dependencia presionando [espacio] llave y presione DE ACUERDO Para finalizar el proceso de compilación e instalación para py-certbot cliente.

Instalar py27 openssl

8. Después del proceso de compilación e instalación py-certbot Finalización de utilidad, ejecute el siguiente comando para actualizar la herramienta en la última versión del paquete como se ilustra en las capturas de pantalla a continuación.

# PKG Instalar Py27-Certbot 
Actualizar la herramienta Py-Certbot

9. Para evitar algunos problemas, puede ocurrir al obtener un Vamos a cifrar certificado, el error más común es "PKG_RESOURES.Distribución no", Asegúrese de que las siguientes dos dependencias también estén presentes en su sistema: py27-sal y py27-acme.

# PKG Instalar Py27-Salt # PKG Instalar PY27-ACME 

Paso 3: Instale Certificado Cifrar para Nginx en FreeBSD

10. Para obtener un certificado independiente en cifrado para su dominio, ejecute el siguiente comando y proporcionarle el nombre de dominio y todos los subdominios que desea obtener certificados para implicar el -d bandera.

# certBot certonly -standalone -d Tu dominio.comunicarse -d www.Tu dominio.comunicarse 
Instalar Let's Cifrar para Nginx

11. Al generar el certificado, se le pedirá que ingrese su dirección de correo electrónico y de acuerdo con los Términos de servicio en cifrado. Tipo a Desde el teclado para estar de acuerdo y continuar, y también se le preguntará si está dispuesto a compartir su dirección de correo electrónico con Let's Encrypt Partners.

En caso de que no desee compartir su dirección de correo electrónico, solo escriba No Palabra en el mensaje y presione [ingresar] Clave para continuar. Después de que los certificados para su dominio se hayan obtenido con éxito, recibirá algunas notas importantes que le informarán dónde se almacenan los certificados en su sistema y cuándo caducan.

Vamos al resumen de cifrado

12. En caso de que desee obtener un certificado de encriptamiento utilizando el "raíz web"Complemento agregando el raíz web Directorio de Nginx Server Para su dominio, emita el siguiente comando con el --raíz web y -w banderas. Por defecto, si no ha cambiado /usr/local/www/nginx/ ruta del sistema.

# CertBot Certonly - -Webroot -W /usr/local/www/nginx/ -d Tu dominio.comunicarse -d www.Tu dominio.comunicarse 

Como en el --estrella procedimiento para obtener un certificado, el --raíz web El procedimiento también le pedirá que proporcione una dirección de correo electrónico para avisos de renovación y seguridad de certificados, para presionar a estar de acuerdo con vamos a cifrar términos y condiciones y No o para o no compartir la dirección de correo electrónico Vamos a cifrar socios como se ilustra en la muestra a continuación.

Tenga en cuenta que CertBot Client puede detectar una dirección de correo electrónico falsa y no le permitirá continuar generando un certificado hasta que proporcione una dirección de correo electrónico real.

Muestra de Cerbot:
Guardar registro de depuración en/var/log/letsencrypt/letsencrypt.Iniciar sesión Ingrese la dirección de correo electrónico (utilizado para avisos de renovación y seguridad urgente) (ingrese 'C' para cancelar):[correo electrónico protegido] #A se detectará una dirección de correo electrónico falsa que parece haber problemas con esa dirección. Ingrese la dirección de correo electrónico (utilizada para avisos de renovación y seguridad de urgencia) Si realmente desea omitir esto, puede ejecutar el cliente con-Register-Unsafely-Without-Email, pero asegúrese de hacer una copia de seguridad de su clave de 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-agosto-1-2016.pdf. Debe acordar para registrarse con el servidor ACME en https: // acme-v01.API.Letsencrypt.org/directorio ----------------------------------------------- -------------------------------- (a) Gree/(C) Ancel: a ------------------------------------------------------------------------------- ¿Estaría dispuesto a compartir su dirección de correo electrónico con Electronic Frontier Foundation, un socio fundador del Proyecto Let’s Let Cintpt 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. ------------------------------------------------------------------------------- (Sí No: norte Obtener un nuevo certificado que realiza los siguientes desafíos: HTTP-01 Desafío para www.dominio.com usando la ruta de raíz web/usr/local/www/nginx/para todos los dominios inigualables. Esperando la verificación ... limpiando desafíos notas importantes: - Felicitaciones! Su certificado y cadena se han guardado AT/USR/Local/Etc/Letsencrypt/Live/www.Tu dominio.com/fullchain.pem. Su certificado caducará el 2017-12-28. Para obtener una versión nueva o ajustada de este certificado en el futuro, simplemente ejecute certbot nuevamente. Para renovar no interactivamente * todos * de sus certificados, ejecute "CertBot Renew": las credenciales de su cuenta se han guardado en su directorio de configuración CERTBOT AT/USR/LOCAL/ETC/LETSENCRYPT. Debe 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 hacer copias de seguridad regulares de esta carpeta. - Si le gusta CERTBOT, considere apoyar nuestro trabajo: Donando a ISRG/Vamos en cifrado: https: // Letsencrypt.org/done donar a eft: https: // eff.org/donate-le

Paso 4: Actualizar certificados NGINX TLS

13. La ubicación de los certificados y las claves de encriptto obtenidos en FreeBSD es /usr/local/etc/letsencrypt/live/www.Tu dominio.com/ ruta del sistema. Comando emitimiento de LS para mostrar los componentes de su certificado de encriptamiento Let's: el archivo de cadena, el archivo FullChain, la clave privada y el archivo de certificado, como se ilustra en el siguiente ejemplo.

# ls/usr/local/etc/letsencrypt/live/www.Tu dominio.com/ 
La lista permite cifrar el dominio SSL-keys

14. Para instalar certificados Cifrar para su dominio en el servidor web Nginx, abrir el archivo de configuración principal de Nginx o el archivo de configuración para el servidor NGINX TLS, en caso de que sea un archivo separado, y modifique las líneas a continuación para reflejar la ruta de los certificados emitidos por encriptamiento de Lets emitidos Como se ilustra a continuación.

# nano/usr/local/etc/nginx/nginx.confusión 

Actualice las siguientes líneas para verse en esta muestra:

ssl_certificate "/usr/local/etc/letsencrypt/live/www.Tu dominio.comunicarse/certificado.PEM "; SSL_Certificate_Key"/usr/local/etc/letsencrypt/live/www.Tu dominio.comunicarse/Privkey.Pem "; 
Configurar SSL para Nginx

15. Además, si la línea ssl_dhparam está presente en Nginx ssl configuración, debe generar un nuevo 2048 poco Diffie-Hellman clave con el siguiente comando:

# openssl dhparam -out/usr/local/etc/nginx/dhparam.PEM 2048 

dieciséis. Finalmente, para activar la configuración de NGINX TLS, primero verifique la configuración global de Nginx para obtener posibles errores de sintaxis y, luego, reinicie el servicio NGINX para aplicar la configuración SSL emitiendo los siguientes comandos.

# nginx -t # servicio nginx reiniciar 

17. Confirme si el demonio nginx está vinculante 443 Puerto emitiendo los siguientes comandos que pueden enumerar todos los enchufes de red abiertos en el sistema en estado de escucha.

# netstat -an -p tcp | GREP Listen # SockStat -4 
Verificar los puertos Nginx

18. También puede visitar su dirección de dominio a través de Https Protocolo abriendo un navegador y escriba la siguiente dirección para confirmar que los certificados de encriptamiento funcionan como se esperaba. Debido a que está utilizando certificados generados por una autoridad de certificado válido, no se debe mostrar ningún error en el navegador.

https: // www.Tu dominio.comunicarse 

19. OpenSSL Utility también puede ayudarlo a encontrar información sobre un certificado obtenido de Let's Cifrypt CA, ejecutando el comando con las siguientes opciones.

# openssl s_client -connect www.Tu dominio.com: 443 
Verifique el certificado SSL

En caso de que desee obligar a Nginx a dirigir todas las solicitudes HTTP a HTTPS recibidas para su dominio en el puerto 80 a Https, Abra el archivo de configuración de Nginx, localice la directiva del servidor para el puerto 80 y agregue la línea de abajo después de server_name como se ilustra en el siguiente ejemplo.

reescribir ^(.*) https: // www.Tu dominio.com $ 1 permanente; 
Nginx redirige http a https

20. Configuración de la renovación automática para el certificado emitido por Let’s Cicrypt Authority antes de que expiren se pueda hacer programando un trabajo de Cron para ejecutarse una vez al día emitiendo el siguiente comando.

# crontab -e 

Tarea Cron para renovar el certificado.

0 0 * * * certBot Renovar >>/var/log/Letsencrypt.registro 

Eso es todo! Nginx ahora puede servir aplicaciones web seguras a sus visitantes utilizando certificados gratuitos de Let's Ciftpt.