Mozilla y Google dejan de confiar en los certificados de WoSign y StartCom
Ayer era el ‘deadline’ para que startSSL solucionará el problema con sus certificados como se avisó desde octubre de 2016 y es posible que si disfrutabas de uno de sus certificados, gratuito o de pago, ayer tras las actualizaciones en Google Chrome y Mozilla Firefox te encontraras con que tu página web dejaba de ser confiable a pesar de viajar vía HTTPS.
Ha llegado pues la hora de pasarnos a Let’s Encrypt, una iniciativa gratuita y curiosa por la forma de implementación para TLSificar todo Internet de manos de la asociación ISRG:
Let’s Encrypt is a free, automated, and open certificate authority brought to you by the non-profit Internet Security Research Group (ISRG).
Cómo funciona
De momento os voy a describir el proceso o ‘how to’ para hacerlo si tenéis acceso al Shell de vuestro Servidor Web Linux, vía SSH, más adelante incorporaremos los tutoriales y vídeos para darlos de alta en otros entornos cómo los alojamientos compartidos (shared hosting). Si no te puedes esperar haz un poquito de RTFM en la documentación oficial.
PoC: Prueba de concepto dominio server.jblanco.org
En la consola/terminal y como root, nos vamos a la carpeta:
cd /usr/local/sbin
Descargamos el ejecutable:
wget https://dl.eff.org/certbot-auto
Damos permisos de ejecución (solo a root):
chmod u+x /usr/local/sbin/certbot-auto
Solicitamos el certificado:
certbot-auto --apache -d server.jblanco.org
Si quisierais pedir más certificados, poniendo siempre el dominio raíz delante, el procedimiento es el mismo pero añadiendo más dominios tras la opción ‘-d’:
certbot-auto --apache -d jblanco.org -d www.jblanco.org -d blog.jblanco.org -d aula.jblanco.org -d server.jblanco.org
Esto genera un certificado que valida HTTPS para los dominios y subdominios:
- jblanco.org
- www.jblanco.org
- blog.jblanco.org
- aula.jblanco.org
- server.jblanco.org
Si por alguna de aquellas no hubiese un Virtual Host definido en Apache2 con ServerName igual a los dominios elegidos se quejará.
Los certificados se dejan en la carpeta:
ls -l /etc/letsencrypt/live
Conviene comprobar la validez del dominio certificado desde esta página web:
https://www.ssllabs.com/ssltest/analyze.html?d=server.jblanco.org
Recuerda cambiar mi subdominio por el tuyo.
Salidas del proceso
Descarga del ejecutable:
wget https://dl.eff.org/certbot-auto --2017-01-29 01:17:39-- https://dl.eff.org/certbot-auto Resolviendo dl.eff.org (dl.eff.org)... 173.239.79.196 Conectando con dl.eff.org (dl.eff.org)[173.239.79.196]:443... conectado. Petición HTTP enviada, esperando respuesta... 200 OK Longitud: 46237 (45K) [application/octet-stream] Grabando a: “certbot-auto” 100%[===================================================================================================================>] 46.237 --.-K/s en 0,1s 2017-01-29 01:17:41 (318 KB/s) - “certbot-auto” guardado [46237/46237]
Proceso de solicitud y verificación:
certbot-auto --apache -d server.jblanco.org Bootstrapping dependencies for Debian-based OSes... Obj http://ftp.debian.org wheezy Release.gpg Obj http://ftp.debian.org wheezy Release Obj http://ftp.debian.org wheezy/main amd64 Packages Obj http://ftp.debian.org wheezy/contrib amd64 Packages Obj http://ftp.debian.org wheezy/non-free amd64 Packages Obj http://ftp.debian.org wheezy/main i386 Packages Obj http://ftp.debian.org wheezy/contrib i386 Packages Obj http://ftp.debian.org wheezy/non-free i386 Packages Obj http://ftp.debian.org wheezy/contrib Translation-en Obj http://ftp.debian.org wheezy/main Translation-es Obj http://ftp.debian.org wheezy/main Translation-en Obj http://ftp.debian.org wheezy/non-free Translation-en Des:1 http://security.debian.org wheezy/updates Release.gpg [1.554 B] Des:2 http://security.debian.org wheezy/updates Release [39,0 kB] Des:3 http://security.debian.org wheezy/updates/main amd64 Packages [465 kB] Des:4 http://security.debian.org wheezy/updates/contrib amd64 Packages [14 B] Des:5 http://security.debian.org wheezy/updates/non-free amd64 Packages [14 B] Des:6 http://security.debian.org wheezy/updates/main i386 Packages [468 kB] Des:7 http://security.debian.org wheezy/updates/contrib i386 Packages [14 B] Des:8 http://security.debian.org wheezy/updates/non-free i386 Packages [14 B] Des:9 http://security.debian.org wheezy/updates/contrib Translation-en [14 B] Des:10 http://security.debian.org wheezy/updates/main Translation-en [256 kB] Des:11 http://security.debian.org wheezy/updates/non-free Translation-en [14 B] Descargados 1.230 kB en 3seg. (392 kB/s) Leyendo lista de paquetes... Hecho No LSB modules are available. To use the Apache Certbot plugin, augeas needs to be installed from wheezy-backports. Would you like to enable the wheezy-backports repository [Y/n]? Y Obj http://ftp.debian.org wheezy Release.gpg Obj http://security.debian.org wheezy/updates Release.gpg Obj http://ftp.debian.org wheezy Release Obj http://security.debian.org wheezy/updates Release Obj http://ftp.debian.org wheezy/main amd64 Packages Obj http://ftp.debian.org wheezy/contrib amd64 Packages Obj http://security.debian.org wheezy/updates/main amd64 Packages Obj http://ftp.debian.org wheezy/non-free amd64 Packages Obj http://security.debian.org wheezy/updates/contrib amd64 Packages Obj http://ftp.debian.org wheezy/main i386 Packages Obj http://ftp.debian.org wheezy/contrib i386 Packages Obj http://security.debian.org wheezy/updates/non-free amd64 Packages Obj http://ftp.debian.org wheezy/non-free i386 Packages Obj http://security.debian.org wheezy/updates/main i386 Packages Obj http://ftp.debian.org wheezy/contrib Translation-en Obj http://ftp.debian.org wheezy/main Translation-es Obj http://security.debian.org wheezy/updates/contrib i386 Packages Obj http://ftp.debian.org wheezy/main Translation-en Obj http://security.debian.org wheezy/updates/non-free i386 Packages Obj http://ftp.debian.org wheezy/non-free Translation-en Obj http://security.debian.org wheezy/updates/contrib Translation-en Obj http://security.debian.org wheezy/updates/main Translation-en Obj http://security.debian.org wheezy/updates/non-free Translation-en Des:1 http://http.debian.net wheezy-backports Release.gpg [1.554 B] Des:2 http://http.debian.net wheezy-backports Release [164 kB] Des:3 http://http.debian.net wheezy-backports/main amd64 Packages [606 kB] Des:4 http://http.debian.net wheezy-backports/main i386 Packages [607 kB] Des:5 http://http.debian.net wheezy-backports/main Translation-en [376 kB] Descargados 1.754 kB en 1seg. (1.368 kB/s) Leyendo lista de paquetes... Hecho Leyendo lista de paquetes... Hecho Creando árbol de dependencias Leyendo la información de estado... Hecho Paquetes sugeridos: augeas-doc augeas-tools Se instalarán los siguientes paquetes NUEVOS: augeas-lenses libaugeas0 0 actualizados, 2 se instalarán, 0 para eliminar y 60 no actualizados. Necesito descargar 683 kB de archivos. Se utilizarán 1.876 kB de espacio de disco adicional después de esta operación. Des:1 http://http.debian.net/debian/ wheezy-backports/main augeas-lenses all 1.2.0-0.2+deb8u1~bpo70+1 [387 kB] Des:2 http://http.debian.net/debian/ wheezy-backports/main libaugeas0 amd64 1.2.0-0.2+deb8u1~bpo70+1 [296 kB] Descargados 683 kB en 0seg. (1.828 kB/s) Seleccionando el paquete augeas-lenses previamente no seleccionado. (Leyendo la base de datos ... 45131 ficheros o directorios instalados actualmente.) Desempaquetando augeas-lenses (de .../augeas-lenses_1.2.0-0.2+deb8u1~bpo70+1_all.deb) ... Seleccionando el paquete libaugeas0 previamente no seleccionado. Desempaquetando libaugeas0 (de .../libaugeas0_1.2.0-0.2+deb8u1~bpo70+1_amd64.deb) ... Configurando augeas-lenses (1.2.0-0.2+deb8u1~bpo70+1) ... Configurando libaugeas0 (1.2.0-0.2+deb8u1~bpo70+1) ... Leyendo lista de paquetes... Hecho Creando árbol de dependencias Leyendo la información de estado... Hecho ca-certificates ya está en su versión más reciente. gcc ya está en su versión más reciente. fijado gcc como instalado manualmente. python ya está en su versión más reciente. openssl ya está en su versión más reciente. Paquetes recomendados: libssl-doc python-pip Se instalarán los siguientes paquetes NUEVOS: libexpat1-dev libffi-dev libssl-dev python-dev python-setuptools python-virtualenv python2.7-dev zlib1g-dev 0 actualizados, 8 se instalarán, 0 para eliminar y 10 no actualizados. Necesito descargar 27,7 MB de archivos. Se utilizarán 43,7 MB de espacio de disco adicional después de esta operación. Des:1 http://ftp.debian.org/debian/ wheezy/main libffi-dev amd64 3.0.10-3 [116 kB] Des:2 http://security.debian.org/ wheezy/updates/main libexpat1-dev amd64 2.1.0-1+deb7u4 [225 kB] Des:3 http://ftp.debian.org/debian/ wheezy/main zlib1g-dev amd64 1:1.2.7.dfsg-13 [215 kB] Des:4 http://ftp.debian.org/debian/ wheezy/main python-dev all 2.7.3-4+deb7u1 [920 B] Des:5 http://security.debian.org/ wheezy/updates/main libssl-dev amd64 1.0.1t-1+deb7u1 [1.791 kB] Des:6 http://ftp.debian.org/debian/ wheezy/main python-setuptools all 0.6.24-1 [449 kB] Des:7 http://ftp.debian.org/debian/ wheezy/main python-virtualenv all 1.7.1.2-2 [2.121 kB] Des:8 http://security.debian.org/ wheezy/updates/main python2.7-dev amd64 2.7.3-6+deb7u3 [22,8 MB] Descargados 27,7 MB en 0seg. (38,8 MB/s) Seleccionando el paquete libexpat1-dev previamente no seleccionado. (Leyendo la base de datos ... 45509 ficheros o directorios instalados actualmente.) Desempaquetando libexpat1-dev (de .../libexpat1-dev_2.1.0-1+deb7u4_amd64.deb) ... Seleccionando el paquete libffi-dev:amd64 previamente no seleccionado. Desempaquetando libffi-dev:amd64 (de .../libffi-dev_3.0.10-3_amd64.deb) ... Seleccionando el paquete zlib1g-dev:amd64 previamente no seleccionado. Desempaquetando zlib1g-dev:amd64 (de .../zlib1g-dev_1%3a1.2.7.dfsg-13_amd64.deb) ... Seleccionando el paquete libssl-dev previamente no seleccionado. Desempaquetando libssl-dev (de .../libssl-dev_1.0.1t-1+deb7u1_amd64.deb) ... Seleccionando el paquete python2.7-dev previamente no seleccionado. Desempaquetando python2.7-dev (de .../python2.7-dev_2.7.3-6+deb7u3_amd64.deb) ... Seleccionando el paquete python-dev previamente no seleccionado. Desempaquetando python-dev (de .../python-dev_2.7.3-4+deb7u1_all.deb) ... Seleccionando el paquete python-setuptools previamente no seleccionado. Desempaquetando python-setuptools (de .../python-setuptools_0.6.24-1_all.deb) ... Seleccionando el paquete python-virtualenv previamente no seleccionado. Desempaquetando python-virtualenv (de .../python-virtualenv_1.7.1.2-2_all.deb) ... Procesando disparadores para install-info ... Procesando disparadores para man-db ... Configurando libexpat1-dev (2.1.0-1+deb7u4) ... Configurando libffi-dev:amd64 (3.0.10-3) ... Configurando zlib1g-dev:amd64 (1:1.2.7.dfsg-13) ... Configurando libssl-dev (1.0.1t-1+deb7u1) ... Configurando python2.7-dev (2.7.3-6+deb7u3) ... Configurando python-dev (2.7.3-4+deb7u1) ... Configurando python-setuptools (0.6.24-1) ... Configurando python-virtualenv (1.7.1.2-2) ... Creating virtual environment... Installing Python packages... Installation succeeded. Saving debug log to /var/log/letsencrypt/letsencrypt.log Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):jblancov@gmail.com ------------------------------------------------------------------------------- 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 Obtaining a new certificate Performing the following challenges: tls-sni-01 challenge for server.jblanco.org Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem Deploying Certificate to VirtualHost /etc/apache2/sites-available/server.jblanco.org.conf Please choose whether HTTPS access is required or optional. ------------------------------------------------------------------------------- 1: Easy - Allow both HTTP and HTTPS access to these sites 2: Secure - Make all requests redirect to secure HTTPS access ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 Created redirect file: le-redirect-server.jblanco.org.conf Rollback checkpoint is empty (no changes made?) ------------------------------------------------------------------------------- Congratulations! You have successfully enabled https://server.jblanco.org You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=server.jblanco.org ------------------------------------------------------------------------------- IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/server.jblanco.org/fullchain.pem. Your cert will expire on 2017-04-28. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you lose your account credentials, you can recover through e-mails sent to jblancov@gmail.com. - Your account credentials have been saved in your Certbot configuration directory at /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
Si durante el proceso elegisteis la opción 2 para que todo el tráfico sea seguro y no permitir nada por HTTP en el Virtual Host que crea el proceso tendréis algo como esto:
lease choose whether HTTPS access is required or optional.
——————————————————————————-
1: Easy – Allow both HTTP and HTTPS access to these sites
2: Secure – Make all requests redirect to secure HTTPS access
——————————————————————————-
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel): 2
Created redirect file: le-redirect-server.jblanco.org.conf
<VirtualHost *:80> ServerName server.jblanco.org ServerSignature Off RewriteEngine On RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,QSA,R=permanent] ErrorLog /var/log/apache2/redirect.error.log LogLevel warn </VirtualHost>
Y de momento esto es todo, ha sido un post de urgencia, ya que seguro que a más de uno os pasará que al actualizar los navegadores encontraréis un bonito pantallazo como este:
Comparte ya que seguro todo el mundo estará que trina!
Nos vemos en la próxima.