Engadir cifrado https con certbot nun servidor Apache

certbot

1. Instalar certbot e python-cerbot-apache

apt-get install -t certbot
apt-get install -t python-certbot-apache

2. Activamos módolos ssl

sudo a2enmod ssl

pero se ao reiniciar o servizo de apache, é posible que falle.

systemctl restart apache2

Solución

Non conseguía que arrancara o Apache, daba erro. O problema era debido a que outro programa está  empregando o porto 443. Coa seguinte instrucción pódese averiguar de cal se trata, moi probablemente sexa o sshd. Debemos de paralo, e seguidamente iniciamos de novo o servizo de Apache. No meu caso tiven que reinstalar posteriormente o ssh-server.

netstat -tlpn | grep 443

service sshd stop

systemctl restart apache2

 

3. Creamos os ficheiros coas chaves públicas e privadas. Unha vez creadoos, aparecerán na seguinte ruta: /etc/letsencrypt/live/

certbot certonly --webroot -w /var/www/html/tic -d blog.atio.es

Se ao final aparece a seguinte mensaxe, fixémolo ben

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/www.atio.es/fullchain.pem. Your cert will
   expire on 2018-05-16. To obtain a new or tweaked version of this
   certificate in the future, simply run certbot again. To
   non-interactively renew *all* of your certificates, run "certbot
   renew"
 - 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

 

4. Debemos de configurar o virtual host /etc/apache2/site-avaliable

#Páxina web do servidor do centro
<VirtualHost 128.199.58.55:80>
ServerAdmin martindetecnoloxia@gmail.com
ServerName  http://www.atio.es
ServerAlias blog.atio.es
# Indexes + Directory Root.
DirectoryIndex index.php
DocumentRoot /var/www/html/drupal
Options FollowSymLinks
<Directory "/var/www/html/drupal">
      AllowOverride All
</Directory>
 RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost 128.199.58.55:443>
ServerAdmin martindetecnoloxia@gmail.com
ServerName  http://www.atio.es
ServerAlias blog.atio.es
# Indexes + Directory Root.
DirectoryIndex index.php
DocumentRoot /var/www/html/drupal
Options FollowSymLinks
<Directory "/var/www/html/drupal">
      AllowOverride All
</Directory>
SSLEngine on
       SSLCertificateFile /etc/letsencrypt/live/blog.atio.es/cert.pem
       SSLCertificateKeyFile /etc/letsencrypt/live/blog.atio.es/privkey.pem
       SSLCertificateChainFile /etc/letsencrypt/live/blog.atio.es/chain.pem
</VirtualHost>

Co seguinte código engadido no código que acabamos de visualizar forzamos a visualización da páxina en https

 RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Borramos /etc/apache2/site-enabled/atio.es.conf

Volemos a /etc/apache2/site-avaliable

a2ensite atio.es.conf

systemctl reload apache2

 

5. Abrimos o cortafuegos. No meu caso engadín as seguintes instrucións

sudo ufw allow 'WWW Full'

sudo ufw allow 'SSH' 

sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

 

6. Engadimos unha tarefa cron para que nos renove os certificados, pois caducan aos 90 días

Crontab -e

30 1 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log

 

Actualización de Debian Jessie a Stretch nun VPS DigitalOcean

digitalocean

Deixo por aquí como actualicei o servidor de DigitalOcean no cal teño aloxado entre otras cousas este blog. Con moita probabilidade o proceso é moi parecido para outros servizos de VPS. Fixen unha actualización de Debian Jessie 8.2 a Debian Stretch 9.2. A primeira razón pola que fixen a actualización foi para enredar e pasalo ben, pois como teño sinalado noutras ocasións, GNU/Linux é divertido. A segunda razón foi para engadir PHP 7.0, que como xa lera na web, incrementa moito a velocidade de resposta do Drupal e outras páxinas, como comprobei máis tarde. Con toda seguridade hai outras formas de facelo, moito máis profesionais e sinxelas, pero este blog non deixa de ser unhas anotacións para internautas como ti que só procura aprender e disfrutar da informática.

root@debian:~:# apt update && apt upgrade

Facemos unha copia de seguridade do ficheiro sources.list:

root@debian:~:# cp /etc/apt/sources.list /etc/apt/sources.list.orig

root@debian:~:# nano /etc/apt/sources.list

E engadimos o seguinte contido:

deb http://mirrors.digitalocean.com/debian stretch main

deb-src http://mirrors.digitalocean.com/debian stretch main

deb http://security.debian.org/ stretch/updates main

deb-src http://security.debian.org/ stretch/updates main

deb http://mirrors.digitalocean.com/debian stretch-updates main

deb-src http://mirrors.digitalocean.com/debian stretch-updates main

Actualizamos as fontes e facemos un upgrade:

root@debian:~:# apt update && apt upgrade

Facemos o salto á versión Stretch

root@debian:~:# apt dist-upgrade

Reiniamos e comprobamos a versión instalada

root@debian:~:# reboot

root@debian:~:# cat /etc/debian_version

Obtendo o seguinte resultado: 9.2

Sen embargo non me funcionaba o Apache2. Decidín reinstalar LAMP (Apache, php e mysql)

O primeiro que fixen foi unha copia dos sites-avaliable e sites-enabled do Apache2 e seguidamente reinstalar os servizos.

root@debian:~:# cp -r /etc/apache2/sites* /home/copia_sites

root@debian:~:# apt remove --purge apache2

root@debian:~:# apt install apache2

root@debian:~:# apt-get remove php5

root@debian:~:# apt install php

root@debian:~:# /etc/init.d/mysql stop

root@debian:~:# apt-get --purge remove mysql-client mysql-server mysql-common

root@debian:~:# apt-get install mysql-client mysql-server mysql-common

root@debian:~:# service mariadb start

root@debian:~:# sudo apt-get install php-mysql

E ademais instalamos dúas utilidades, sendo necesaria a primeira para que funcione correctamente o phpmyAdmin

root@debian:~:# apt install php-mcrypt php-curl php7.0-gd

E finalmente debemos de cambiar a confirguación do apache2.conf. Debemos de substituir AllowOverride None por AllowOverride All

root@debian:~:# nano /etc/apache2/apache2.conf

<Directory /var/www/>
        Options Indexes FollowSymLinks
#       AllowOverride None
        AllowOverride All
        Require all granted
</Directory>