LinuxParty
Finalmente Let's Encrypt ha entrado en su fase Beta de acceso público, por lo que ya no se necesita una invitación para obtener un certificado SSL de forma gratuita. Para aquellos desprevenidos, Let's Encrypt es una nueva autoridad certificante libre, abierta, automática y (lo mejor de todo) gratuita. Esperemos que este proyecto tenga éxito (seguramente lo tendrá pues está patrocinado por la Linux Foundation), y así se termine con el curro de los certificados. No puede ser que grandes empresas se hayan hecho millonarias simplemente emitiendo certificados SSL de confianza, cuando éstos deberían ser un recurso básico de acceso universal. HTTPS tiene que ser el estándar por defecto, y la seguridad tiene que ser un derecho de acceso público y gratuito para todos los sitios de Internet. De otra forma, al tener que pagar para acceder a la seguridad (como sucede actualmente), nunca llegaremos a una Internet segura y confiable.
En este artículo voy a explicar cómo obtener e instalar un certificado gratuito de Let's Encrypt, sobre un servidor Debian con Nginx.
Para obtener un certificado SSL desde Let's Encrypt, es necesario utilizar el cliente oficial. Descargar una copia fresca del mismo en un directorio de nuestra preferencia:
# cd ~/scripts/ # git clone https://github.com/letsencrypt/letsencrypt # cd letsencrypt/
El cliente Let's Encrypt posee un número de plugins que permiten obtener e instalar un certificado de diferentes formas. En este artículo se explica el método manual. Esto significa que la validación del dominio debe hacerla uno mismo, en lugar de hacerla el cliente de forma automática (que es la forma predeterminada).
Para solicitar el certificado utilizando el método manual, ejecutar el siguiente comando:
# ./letsencrypt-auto certonly -a manual -d www.linuxparty.es --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview
Este comando sólo generará un certificado para el dominio "www.linuxparty.es". Si se desea validar más de un nombre de host, por ejemplo para el dominio con y sin "www." ("linuxparty.es" y "www.linuxparty.es"), se debe repetir el parámetro -d
:
# ./letsencrypt-auto certonly -a manual -d linuxparty.es -d www.linuxparty.es --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview
Puede que el cliente instale algunas dependencias necesarias para su funcionamiento, por lo que lamentablemente es necesario ejecutarlo como superusuario. Este es el punto donde el administrador de sistemas paranoico de la seguridad informática piensa: "ok, me dan un certificado gratis a cambio de instalar un backdoor de la NSA en mi servidor". Es el riesgo a correr, claro está. Por este motivo, se debe evitar utilizar Let's Encrypt en entornos corporativos, o sino hacerlo desde un servidor "descartable" (máquina virtual clonada de la original en producción, que luego será borrada para siempre de nuestro inventario).
Por otro lado ¿cuándo una aplicación se pone a instalar paquetes a nombre del usuario? En general, cuando uno quiere instalar una herramienta (por fuera del gestor de paquetes), antes tiene que instalar sus dependencias. Lamentablemente esta es la nueva línea de pensamiento que siguen la Linux Foundation, Red Hat, freedesktop.org y otros grupos de desarrollo. A causa de ésto hoy tenemos engendros como systemd corriendo en nuestros sistemas (no en los míos). Aquella nefasta idea de idiotizar al Administrador de Sistemas con fines siniestros, que el Sysadmin no se interiorice por el funcionamiento de los componentes, que sea lo menos instruido posible, y que montones de piezas de software que rozan lo propietario hagan el trabajo por él. Esta escuela llevará a que en un futuro cercano el Sysadmin sea "el tipo que sabe el password de root", y nada más.
Dejando de lado estas cuestiones, el cliente instalará (probablemente) algunas dependencias necesarias, uno o dos troyanos de la NSA, y se encargará de generar la solicitud de certificado contra el servidor https://acme-v01.api.letsencrypt.org/directory
.
root@linux-party:~/scripts/letsencrypt# ./letsencrypt-auto certonly -a manual -d www.linuxparty.es --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview Updating letsencrypt and virtual environment dependencies....... Running with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt certonly -a manual -d www.linuxparty.es --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview Use of --agree-dev-preview is deprecated.
Durante el proceso se debe aceptar el hecho de que la dirección IP del servidor sea registrada.
El método de validación manual verifica la propiedad del dominio en cuestión generando una URL aleatoria que sirve (como texto plano) una clave de validación (ambas censuradas con asteriscos, por seguridad).
En este punto el cliente se detiene para que podamos validar el dominio. Para no abrir una nueva sesión en el servidor, es posible mandar el proceso a segundo plano presionando Ctrl+Z
.
Make sure your web server displays the following content at http://www.linuxparty.es/.well-known/acme-challenge/aOXdzr**********puqZ4 before continuing: aOXdzr**********puqZ4.KALc***************xYIQ If you don't have HTTP server configured, you can run the following command on the target server (as root): mkdir -p /tmp/letsencrypt/public_html/.well-known/acme-challenge cd /tmp/letsencrypt/public_html printf "%s" aOXdzr**********puqZ4.KALc***************xYIQ > .well-known/acme-challenge/aOXdzr**********puqZ4 # run only once per server: $(command -v python2 || command -v python2.7 || command -v python2.6) -c \ "import BaseHTTPServer, SimpleHTTPServer; \ s = BaseHTTPServer.HTTPServer(('', 80), SimpleHTTPServer.SimpleHTTPRequestHandler); \ s.serve_forever()" Press ENTER to continue^Z [1]+ Stopped ./letsencrypt-auto certonly -a manual -d www.linuxparty.es --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview
Prestar especial atención a la sección que comienza con el texto "Make sure your web server displays the following content":
Make sure your web server displays the following content at http://www.linuxparty.es/.well-known/acme-challenge/aOXdzr**********puqZ4 before continuing: aOXdzr**********puqZ4.KALc***************xYIQ
Pues allí el cliente especifica la URL y clave para autenticar la validez del dominio.
Crear la URL para validar el dominio:
# cd /var/www/linuxparty.es/ # mkdir -p .well-known/acme-challenge/ # cd .well-known/acme-challenge/ # nano aOXdzr**********puqZ4
Dentro de este archivo copiar la clave indicada por el cliente.
root@linux-party:/var/www/linuxparty.es/.well-known/acme-challenge# cat aOXdzr**********puqZ4 aOXdzr**********puqZ4.KALc***************xYIQ
A continuación, configurar el servidor Nginx para que sirva dicho archivo como tipo MIME "text/plain":
# nano /usr/local/nginx/nginx.conf
Agregar una nueva ubicación /.well-known/acme-challenge
dentro de la raíz:
location / { [...] location '/.well-known/acme-challenge' { default_type "text/plain"; root /var/www/linuxparty.es; }
Finalmente, reiniciar Nginx:
# service nginx restart
Verificar, desde un navegador, que la URL "/.well-known/acme-challenge# cat aOXdzr**********puqZ4" sea servida como texto. El header "Content-Type" debe ser "text/plain".
Para el caso de servidores Apache, es necesario agregar la siguiente configuración en el VirtualHost en cuestión:
<Directory /var/www/linuxparty.es/.well-known/acme-challenge> DefaultType text/plain </Directory>
Y recargar la configuración de Apache ejecutando: service apache2 reload
Luego es posible traer a primer plano el proceso del cliente, y presionar la tecla enter para validar el dominio:
root@linux-party:/var/www/linuxparty.es# jobs [1]+ Stopped ./letsencrypt-auto certonly -a manual -d www.linuxparty.es --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview (wd: ~/scripts/letsencrypt) root@linux-party:/var/www/linuxparty.es# fg 1 ./letsencrypt-auto certonly -a manual -d www.linuxparty.es --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview (wd: ~/scripts/letsencrypt) IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/www.linuxparty.es/fullchain.pem. Your cert will expire on 2016-03-13. To obtain a new version of the certificate in the future, simply run Let's Encrypt again. - If like Let's Encrypt, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Se valida el dominio y se crea el certificado de forma exitosa.
Tener en cuenta que si se han especificado varios dominios para un mismo certificado (utilizando más de un parámetro -d
), se deberá repetir este procedimiento de validación para cada uno de ellos.
Cabe destacar que la validez del certificado es de sólo tres meses.
Tanto el certificado como su clave privada quedan almacenados dentro del directorio /etc/letsencrypt/live/
. A continuación se debe configurar HTTPS en Nginx y verificar el acceso desde un navegador (anteponiendo https://
en la URL.
El procedimiento para obtener e instalar un certificado es totalmente automático y demora apenas unos pocos minutos. Es más eficiente y mucho menos burocrático que StartSSL.
-
Seguridad
- Drones, vigilancia y reconocimiento facial: una startup llamada 'Sauron' presenta un sistema de seguridad para el hogar de estilo militar
- Conexión Segura NFS en Linux, Tunelizar NFS sobre SSH y Configuración de NFS sobre SSH para Mayor Seguridad
- ¿Olvidó su contraseña? Cinco razones por las que necesita un administrador de contraseñas
- Cómo limitar las conexiones SSH (puerto TCP 22) con ufw en Ubuntu Linux
- Utilizar ssh sin contraseña con ssh-keygen y ssh-copy-id
- Millones de teléfonos móviles podrían ser vulnerables a la vigilancia del gobierno chino
- Cómo limitar las conexiones SSH a la red local en Linux
- Los televisores inteligentes son como un «caballo de Troya digital» en los hogares
- Snort para Windows, detección de Intrusos y seguridad.
- Detección de Intrusiones con las herramientas: BASE y Snort.
- El Sistema de Detección de Intrusos: Snort. ( Windows y Linux )
- Configuración con Ejemplos de Snort para Windows, detección de intrusiones
- ¿El gobierno de EE. UU. ignoró la oportunidad de hacer que TikTok fuera más seguro?
- ¿Qué es SSH y cómo se utiliza? Los conceptos básicos de Secure Shell que necesitas saber
- Asegurar memcached del servidor, para evitar amplificar ataques DDoS