TLS pour PowerAdmin

TLS pour PowerAdmin#

Nous allons configurer nginx pour activer TLS.

dnf install -y certbot
certbot --version

Nous allons devoir configurer nginx pour livrer un fichier utilisable par certbot.

mkdir -p /var/www/acme/.well-known/acme-challenge
chown -R root:root /var/www/acme

Le fichier nginx pour livrer la conf /etc/nginx/conf.d/certbot.conf, et aussi rediriger vers le https.

server {
    listen 80;
    listen [::]:80;
    server_name _;

    location ^~ /.well-known/acme-challenge/ {
        root /var/www/acme;
        default_type "text/plain";
    }

    location / { return 301 https://$host$request_uri; }
}

Nous allons rapidement desactiver le backend poweradmin pour generer le premier certificat.

mv /etc/nginx/conf.d/poweradmin.conf /etc/nginx/conf.d/poweradmin.conf.disable
systemctl restart nginx

Et donc nous pouvons generer le premier certificat.

certbot certonly \
  --webroot -w /var/www/acme \
  -d galaxy.as51144.net \
  --key-type ecdsa \
  --agree-tos -m noc@g3e.fr \
  --no-eff-email

Maintenant que le certificat est genere, nous allons pouvoir activer le TLS sur le backend /etc/nginx/conf.d/poweradmin.conf.

mv /etc/nginx/conf.d/poweradmin.conf.disable /etc/nginx/conf.d/poweradmin.conf

Dans /etc/nginx/conf.d/poweradmin.conf, remplacer les lignes deja ecrites et ajouter les autres.

listen 443 ssl;
server_name galaxy.as51144.net;
root /var/www/poweradmin;
index index.php;

ssl_certificate     /etc/letsencrypt/live/galaxy.as51144.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/galaxy.as51144.net/privkey.pem;
ssl_protocols       TLSv1.2 TLSv1.3;
ssl_session_cache   shared:SSL:10m;

add_header Strict-Transport-Security "max-age=63072000" always;
add_header X-Frame-Options DENY always;
add_header X-Content-Type-Options nosniff always;
systemctl restart nginx

Si jusqu’a present tout s’est bien passe, nous allons juste faire la derniere etape : le renouvellement automatique du certificat.

mkdir -p /etc/letsencrypt/renewal-hooks/deploy

cat > /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh <<'EOF'
#!/bin/sh
systemctl reload nginx
EOF
chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
systemctl enable --now certbot-renew.timer
systemctl list-timers certbot-renew.timer