2 artigo/s coa etiqueta Https


Instalación do certificado Let's Encrypt para o sitio web

Deixo aquí unhas notas de como instalar un certificado de servidor seguro de Let's Encrypt á meu sitio web. Let's Encrypt fornece certificados para os nosos servidores de balde (gratis).

Inicialmente probei o instalador certbot mais non me foi ben, non acababa de verificar o sitio. Logo vendo algún foro de web2py vin que recomendaba o uso de acme que foi o que finalmente empreguei para obter o certificado do sitio web.

Preparación do cartafol para verificar que o sitio é meu

O primeiro que tiven que facer foi crear un cartafol para que Let's Encrypt puidese verificar que o dominio é meu. Normalmente sería indicar o cartafol raíz do sitio web, por exemplo «/var/www/», no meu caso ó usar web2py, a solución pasa por crear un alias no sitio na configuración do apache, no meu caso foi engadir dentro do virtualhost o seguinte alias tal como indican na guía de acme:

Para apache 2.4 en diante:

Alias "/.well-known/acme-challenge/" "/home/www-data/lets_encrypt/"

  AllowOverride None
  Options None
  Require all granted

Para apache 2.2 e anteriores:

Alias "/.well-known/acme-challenge/" "/home/www-data/lets_encrypt/"

  AllowOverride None
  Options None
  # Order allow, deny  OLLO! no meu caso tiven que comentar esta liña
  Allow from all

Instalación de acme

Para elo seguín as instrucións indicadas na guía:

# echo 'deb http://ppa.launchpad.net/hlandau/rhea/ubuntu xenial main' > \
 /etc/apt/sources.list.d/rhea.list
# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys \
9862409EF124EC763B84972FF5AC9651EDB58DFA
# apt-get update
# apt-get install acmetool

Unha vez instalado executei a orde:

# acmetool quickstart
  • Tipo de certificado que queremos: opción 1, live
  • Como imos verificar o sitio: opción 1, WEBROOT
  • Indico a ruta que indiquei no alias (na configuración do apache): /home/www-data/lets_encrypt/

Con isto queda o sitio verificado, o seguinte paso é a solicitude dos certificados, para elo empregase a orde:

# acmetool want www.damufo.com

Se quixese tamén o certificado para o sitio sen as www empregaría a orde:

# acmetool want damufo.com www.damufo.com

Os certificados obtidos son gardados en «/var/lib/acme/live/www.damufo.com/».

Para ver o estado dos certificados solicitados, emprégase a orde:
# acmetool status

Finalmente queda engadir os certificados ó virtualhost seguro do apache (o do porto 443), para elo engádese dentro das etiquetas de dito virtualhost o seguinte:

SSLEngine on  # Isto en teoría xa debería estar
SSLCertificateFile    /var/lib/acme/live/www.damufo.com/cert
SSLCertificateKeyFile /var/lib/acme/live/www.damufo.com/privkey
SSLCertificateChainFile /var/lib/acme/live/www.damufo.com/fullchain

Deixo aquí esta ligazón sobre a configuración do SSL do apache que fornece Mozilla por se é de interese.

Finalmente queda comprobar que a sintaxe do ficheiro apache está ben, para elo empregase a orde:

# apache2ctl configtest

E se todo está ben, reiniciase o apache coa orde:

# service apache2 restart

Forzar https e uso de www no Apache

Deixo aquí estas notas de como configurar o Apache para forzar ó sitio a usar https e que o emprego de www. antes no nome de dominio.

Para elo fixen uso do módulo Rewrite do Apache.

O primeiro foi engadir dentro de as liñas:

 RewriteEngine on
# Forzar o emprego de https
  RewriteCond %{HTTPS} off
  RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

Con isto, o tráfico é redirixido do porto 80 ó 443 que é o que emprega a conexión segura https.

Logo, queda forzar ó emprego de «www.» no caso de non estar presente antes do nome do dominio, para elo engadín dentro de as liñas:

RewriteEngine on
  #Forzar o emprego de www.
  RewriteCond %{HTTP_HOST} ^damufo.com [NC]
  RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI}

Se, pola contra, quixese forzar ó NON emprego de «www.» antes do nome do dominio, no canto de engadir o de arriba, o que faría sería engadir:

  RewriteEngine on
  # Forzar o emprego de non-www
  # RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
  # RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

É imporante que dentro do virtualhost estea establecido o nome do servidor, no meu caso:

ServerName damufo.com