https ssl encryptionHTTPS (Hypertext Transfer Protocol Secure) és la capçalera d'URI utilitzada per a indicar una connexió segura HTTP. És sintàcticament idèntica a la capçalera http:// normalment utilitzada en l'accés de recursos fent servir HTTP. Utilitzar una URI https:// indica que s'utilitzarà HTTP, però amb un port TCP per defecte diferent (el 443) i una capa d'encriptació/autenticació entre HTTP i TCP. Aquest sistema va ser dissenyat per Netscape Communications Corporation per oferir autenticació i comunicació encriptada i és àmpliament utilitzat a la World Wide Web per a comunicacions en què la seguretat és important com ara transaccions de pagaments i accés a sistemes informàtics corporatius.

Cal fer advertir que l'accés a una pàgina HTTPS (segura) no impedeix que aquesta pàgina continga elements HTTP (no segurs). En aquests casos, el nostre navegador web ens ho notificarà mitjançant un missatge d'avís. És utilitzat principalment per entitats bancàries, botigues en línia, i qualsevol mena de servei que requeresca l'enviament de dades personals o contrasenyes. Per a saber si la pàgina web que estem visitant fa servir el protocol HTTPS i és, per tant, segura quant a la transmissió de les dades que estem transmetent, hem d'observar si al començament de la barra d'adreça del nostre navegador web es mostren les lletres https en comptes de http.

Parlant estrictament, HTTPS no és un protocol separat, sinó que fa referència a la combinació d'una interacció HTTP normal sobre una connexió Secure Sockets Layer o Transport Layer Security. Això assegura protecció raonable davant d'escoltes indesitjades i atacs de man-in-the-middle.

Un URL https pot especificar un port TCP; si no ho fa, la connexió fa servir el port 443 (HTTP insegur fa servir el port 80 habitualment). Per a preparar un servidor web perquè accepte connexions https, l'administrador ha de crear un certificat de clau pública per al servidor web. Aquests certificats poden ser creats per servidors basats en Unix amb eines com ara ssl-ca d'OpenSSL o gensslcert de SuSE. Aquest certificar ha d'estar signat per una autoritat certificadora d'una forma o una altra, per tal de certificar que el posseïdor del certificat és realment l'entitat que diu ser. Els navegadors web normalment venen amb els certificats de signatura de les autoritats certificadores principals, per a poder verificar els certificats signats per aquestes.

Les organitzacions també poden ser la seua pròpia autoritat certificadora, particularment si són responsables de configurar navegadors per a accedir als seus llocs (per exemple, llocs en una intranet d'empresa), ja que d'una forma molt senzilla poden afegir el seu propi certificat de signatura a aquells que ja venen amb el navegador.

Alguns cops, especialment en aquells operats per aficionats, es fan servir certificats autosignats en llocs públics. Fer servir aquests ofereix protecció contra escoltes indesitjades simples, però a diferència del que ocorre amb un certificat ben-conegut, la prevenció de l'atac de man-in-the-middle amb un certificat autosignat requereix que el lloc faça disponible algun altre mètode segur per la verificació del certificat.

El sistema també pot ser utilitzat per autenticació de client, per tal de restringir l'accés a un servidor web a només usuaris autoritzats. Per a això, habitualment l'administrador del lloc crea certificats per a cada usuari i aquests certificats són carregats al navegador de l'usuari corresponent. Aquests normalment contenen el nom i l'adreça d'e-mail de l'usuari autoritzat, i són automàticament comprovats pel servidor a cada reconnexió per a verificar la identitat de l'usuari, sense haver d'introduir mai la contrasenya.

El nivell de protecció depén de la correctesa de la implementació per part del navegador web, el software de servidor i l'algorisme de xifratge fet servir realment. HTTPS només protegeix les dades en trànsit d'escoltes no desitjades i d'atacs de man-in-the-middle. Un cop les dades arriben a la seua destinació, només són tan segures com els ordinadors en les quals estan.

 

HTTPS - Assegurar Apache amb Let's Encrypt en Debian 9

letsencryptLet's Encrypt és una Autoritat de certificació (AC o CA per les seues sigles en anglés), que proporciona una manera senzilla d'obtenir i instal·lar certificats TLS/SSL gratuïts, permetent així l'HTTPS xifrat en servidors web. Simplifica el procés proporcionant un client de software 'Certbot', que intenta automatitzar la majoria dels passos requerits (si no tots). Actualment, tot el procés d'obtenció i instal·lació d'un certificat està totalment automatitzat tant en Apache com en Nginx. Activa automàticament HTTPS al vostre lloc web amb el Certbot de l'EFF implementats certificats de Let's Encrypt.

En aquest tutorial, utilitzaràs Certbot per obtenir un certificat SSL gratuït per a Apache a Debian 9 i configurar el certificat per renovar-lo automàticament. Aquest tutorial utilitzarà un fitxer Virtual Hosts del Servidor Apache independent, en compte del fitxer de configuració predeterminat, Configuració del Virtual Hosts. Recomane crear nous fitxers Virtual Hosts per a cada domini, perquè ajuda a evitar errors comuns i manté els fitxers predeterminats com una configuració alternativa.

Per seguir aquest tutorial, segurament necessiteu:

  • Un Servidor Debian 9 configurat seguint aquesta guia Configuració inicial, incloent un usuari no root amb privilegis sudo i un fireway.
  • Un nom de domini totalment registrat. Aquest tutorial utilitzarà exemple.com en tot. Podeu comprar un nom de domini a Namecheap, No-IP, obtenir-ne un gratuit a Freenom, No-IP, o utilitzar el registrador de domini que vulgueu.
  • El registre o registres DNS configurats per al vostre servidor. Podeu seguir Redreçament del DNS dinàmic, per obtenir detalls sobre com afegir-los. Aquest tutorial utilitzarà: Un registre amb exemple.com i un altre registre amb www. exemple.com, tots dos apunten a l'adreça IP pública del servidor.
  • Apache instal·lat, Com instal·lar Apache. Assegureu-vos que teniu un fitxer host virtual per al vostre domini. Aquest tutorial utilitzarà /etc/apache2/sites-available/exemple.com.conf com a exemple.
  • Si el Servidor està al darrere d'un Router a casa vostra, deureu obrir el Port 443 amb el protocol TCP, per permetre l'accés HTTPS del servidor.

Tindre un lloc sota https té alguns avantatges, una d'elles és poder fer servir el GPS i notificacions en un web, diuen que ajuda per al SEO, en fi ja ho veurem. Des de fa temps els valedors de Let's Encrypt ofereixen certificats SSL/TLS gratuïts, això ens estalviarà alguns diners.

Nota IMPORTANT: Per a aquesta instal·lació necessitem el compte root del servidor i crear un usuari amb privilegis sudo, si el teu usuari està als sudoers, 'sudo' botará fins a la instal·lació de Let's Encrypt. En cas contrari obtindreu errors en l'obtenció dels certificats.

 

Crear un usuari amb privilegis SUDO (no ROOT)

Inici de sessió com a root

Si encara no esteu connectat al vostre servidor, inicieu la sessió com a usuari arrel utilitzant l'ordre següent (substituïu la part destacada de l'ordre amb l'adreça IP del vostre servidor):

$ ssh root@ip_servidor

El següent pas és configurar un compte d'usuari alternatiu amb un abast d'influència reduït per al treball diari.

Creació d'un usuari nou

Aquest exemple crea un nou usuari anomenat roig, però haureu de reemplaçar-lo amb altre nom d'usuari:

# adduser roig

Concedir privilegis administratius

Ara tenim un nou compte d'usuari amb privilegis de compte regulars. No obstant això, de vegades hem de fer tasques administratives. Per evitar haver de tancar sessió del nostre usuari normal i tornar a iniciar sessió com a compte de root, podem configurar el que es coneix com a 'superusuari' o privilegis de root per al nostre compte normal. Això permetrà al nostre usuari normal executar ordres amb privilegis administratius posant la paraula sudo abans de cada ordre.

Per afegir aquests privilegis al nostre nou usuari, hem d'afegir el nou usuari al grup sudo. De manera predeterminada, a Debian 9 els usuaris que pertanyen al grup sudo poden utilitzar l'ordre sudo. Com a root , executeu aquesta ordre per afegir el vostre nou usuari al grup sudo (substituïu la paraula ressaltada pel vostre nou usuari):

# usermod -aG sudo roig

És possible que hàgeu d'instal·lar sudo:

# apt update
# apt install sudo

Ara, quan hàgeu iniciat la sessió com a usuari habitual, podeu escriure sudo abans de les ordres per realitzar accions amb privilegis de superusuari.

 

Que és Certbot

certbotCertbot és un client automàtic fàcil d'utilitzar que busca i implementa certificats SSL/TLS per al vostre servidor web. Certbot va ser desenvolupat per EFF, anteriorment es coneixia com 'El client oficial de Let's Encrypt' o 'Let's Encrypt Python client'. Certbot també funcionarà amb qualsevol altra CA que suporte el protocol ACME.

Si bé hi ha molts altres clients que implementen el protocol ACME per obtenir certificats, Certbot és el client més extens i pot configurar automàticament el vostre servidor web per començar a publicar HTTPS immediatament, també pot automatitzar automàticament tasques de seguretat com ara les suites de configuració de xifratge i habilitar funcions importants de seguretat. Certbot té com a objectiu construir una xarxa més estructuralment privada, segura i protegida contra la censura.

El primer pas per utilitzar Let's Encrypt i obtenir un certificat SSL, és instal·lar el software Certbot al vostre servidor.

Instal·lació de Certbot

Certbot no està disponible des dels dipòsits de programari de Debian de manera predeterminada, utilitzant apt, haureu d'afegir el dipòsit de backports al vostre fitxer sources.list. Backports són paquets de proves de Debian i distribucions inestables que es recopilen perquè s'executen sense noves biblioteques en distribucions estables de Debian. Per afegir el dipòsit de backports, obriu (o creeu) el fitxer sources.list en el directori /etc/apt/:

sudo nano -w /etc/apt/sources.list

A la part inferior del fitxer, afegiu la següent línia:

deb http://ftp.debian.org/debian stretch-backports main

Això inclou els paquets main, compatibles amb Debian Free Software Guidelines (DFSG), així com els components non-free i contrib, que no són compatibles amb DFSG o que inclouen dependències d'aquesta categoria. Deseu i tanqueu el fitxer prement CTRL+X, Y i després ENTER, a continuació. actualitzeu les vostres llistes de paquets:

sudo apt update

A continuació, instal·leu el Certbot (en el servidor Apache) amb la següent ordre. Tingueu en compte que l'opció -t indica a apt  que busque el paquet en el repositori backportsd que acaba d'afegir:

sudo apt install python-certbot-apache -t stretch-backports

Certbot ja està a punt per a ser usat, però per a configurar SSL en Apache, hem de verificar que Apache s'haja configurat correctament.

 

Configuració del certificat SSL

Certbot necessita poder trobar l'amfitrió virtual correcte a la vostra configuració del servidor Apache, per poder configurar automàticament SSL. Concretament ho fa cercant una directiva ServerName, que coincidesca amb el domini que sol·licita el certificat.

Si seguiu el pas de configuració de l'amfitrió virtual (VirtualHosts) en el tutorial d'e Configuració del Virtual Hosts, haureu de tindre un bloc VirtualHost, del vostre domini a /etc/apache2/sites-available/exemple.com.conf amb la directiva ServerName ja establerta de manera adequada.

Per comprovar, obriu el fitxer host virtual del vostre domini usant nano o el vostre editor de text preferit:

sudo nano /etc/apache2/sites-available/exemple.com.conf

Cerqueu la línia ServerName existent. Hauria de ser així, amb el vostre propi nom de domini en comptes de 'exemple.com':

.  .  .  .  .  .
ServerName exemple.com
.  .  .  .  .  .

Si no és així, actualitzeu la directiva ServerName per indicar el vostre nom de domini. A continuació, deseu el fitxer i tanqueu l'editor, després verifiqueu la sintaxi de les modificacions de configuració:

sudo apache2ctl configtest

Si no hi han errors de sintaxi, veureu aquesta sortida:

Syntax OK

Si obteniu un error, torneu a obrir el fitxer de l'amfitrió virtual i comproveu si hi han errors o caràcters que falten. Una vegada que la sintaxi del fitxer de configuració siga correcta, torneu a carregar Apache. per carregar la nova configuració:

sudo systemctl reload apache2

Certbot ara podrà trobar el bloc VirtualHost correcte i actualitzar-lo. A continuació, actualitzem el servidor de seguretat per permetre el trànsit HTTPS.

 

Permetre HTTPS a través del Fireway

Si teniu activat el tallafoc, consulteu les guies prèvies necessàries, haureu d'ajustar la configuració per permetre el trànsit HTTPS. Afortunadament, quan s'instal·la a Debian, ufw ve empaquetat amb alguns perfils que ajuden a simplificar el procés de canvi de les regles del tallafoc per al trànsit HTTP i HTTPS.

Podeu veure la configuració actual escrivint:

roig@server-angles:~$ sudo ufw status
Status: active

To                        Action         From
--                         ------           ----
OpenSSH           ALLOW       Anywhere
WWW                 ALLOW      Anywhere
OpenSSH (v6)   ALLOW       Anywhere (v6)
WWW (v6)         ALLOW      Anywhere (v6)

Per permetre a més que ingresse trànsit HTTPS, permeta el perfil "WWW Full" i elimine l'assignació redundant del perfil "WWW":

sudo ufw allow 'WWW Full'
sudo ufw delete allow 'WWW'

El vostre estat ara hauria de ser així:

roig@server-angles:~$ sudo ufw status
Status: active

To                        Action          From
--                         ------            ----
OpenSSH            ALLOW       Anywhere
WWW Full           ALLOW       Anywhere
OpenSSH (v6)    ALLOW       Anywhere (v6)
WWW Full (v6)   ALLOW       Anywhere (v6)


Si sols voleu, permetre el transit HTTPS entrant, i UFW no té cap perfill WWW activat (recorda segons el teu cas, sempre com a root o fent ús de sudo):

ufw allow 443/tcp

A continuació, executem Certbot, i obtindrem els nostres certificats.

 
Obtenció dels Certificats SSL

Certbot ofereix diverses maneres d'obtindre certificats SSL mitjançant connectors. El connector d'Apache s'encarregarà de reconfigurar l'Apache i tornar a carregar la configuració sempre que siga necessari. Per utilitzar aquest connector, escriviu el següent:

sudo certbot --apache -d exemple.com -d www.exemple.com

Això executa Certbot amb el connector --apache , utilitzant -d  per especificar els noms per als dominis que voleu obtenir el certificat validat.

Si aquesta és la primera vegada que executeu certbot, se us demanarà que introduïu una adreça de correu electrònic i que accepteu les condicions del servei. Després de fer-ho, certbot es comunicarà amb el servidor Let's Encrypt, i després executarà un desafiament per verificar que vostè controla el domini per al qual sol·licita un certificat.

Si això és correcte, certbot us preguntarà com voleu configurar la vostra configuració de HTTPS (Trieu si voleu o no redirigir trànsit HTTP a HTTPS, suprimint l'accés HTTP):

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Seleccioneu la vostra configuració preferida i premeu ENTER. La configuració s'actualitzarà i Apache es tornarà a carregar per recollir la nova configuració. certbot acabarà amb un missatge que l'informarà que el procés s'ha realitzat correctament i on s'emmagatzemen els seus certificats.

Els certificats seran baixats, s'instal·laran i és carregaran. Proveu de tornar a carregar el lloc web amb https:// i observeu l'indicador de seguretat del vostre navegador. Hauria d'indicar que el lloc està degudament protegit, normalment amb una icona de bloqueig verd. Si proveu el vostre servidor amb la prova de SSL Labs Server Test, i haureu d'obtenir un grau''.

 

Provar el procés de Renovació

Els certificats de Let's Encrypt's només són vàlids durant noranta dies. Això és per animar als usuaris a automatitzar el procés de renovació del certificat. El paquet certbot que instal·lem s'ocupa d'això per a nosaltres, afegint un script de renovació a /etc/cron.d. Aquest script s'executa dues vegades al dia i renovarà automàticament qualsevol certificat que siga dins dels trenta dies a la seua expiració.

Per provar el procés de renovació, podeu fer una operació de prova amb certbot:

sudo certbot renew --dry-run

Si no veus errors, és perquè tot és correcte i està llest. Quan siga necessari, Certbot renovarà els seus certificats i recarregarà Apache per recollir els canvis. Si el procés de renovació automàtica falla, Let 's Encrypt enviarà un missatge al correu electrònic especificat advertint-li, quan el seu certificat està a punt de caducar.

 

En aquest tutorial, ha instal·lat el client Certbot (per Apache). Let 's Encrypt, ha descarregat els certificats SSL per al seu domini, ha configurat Apache per utilitzar aquests Certificats i ha configurat la renovació automàtica de certificats. Si té més preguntes sobre l'ús de Certbot, la seua documentació és un bon lloc per començar.

 

Referències: