Installare Certificati SSL Let’s Encrypt su uno Stack LEMP

Questa guida approfondisce l’installazione di certificati SSL gratuiti forniti da Let’s Encrypt utilizzando Certbot e configurandoli su uno stack LEMP (Linux, Nginx, MySQL, PHP) in un server Ubuntu.

Prerequisiti

  • Un server Ubuntu configurato seguendo la guida di configurazione iniziale (documentazione ufficiale).
  • Un nome di dominio registrato con i record DNS correttamente configurati (A record per il dominio principale e il sottodominio www).
  • Nginx installato e configurato con blocchi server per il dominio.

Passaggi

1. Installare Certbot

Certbot può essere installato tramite Snap. Aggiorna Snap core ed elimina versioni precedenti di Certbot se necessario:


sudo snap install core; sudo snap refresh core
sudo apt remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

2. Configurare Nginx

Assicurati che Nginx sia configurato con il corretto blocco server, includendo la direttiva server_name:


server {
    server_name example.com www.example.com;
    ...
}

3. Configurare il Firewall

Permetti il traffico HTTPS tramite il profilo Nginx Full:


sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'

4. Ottenere un Certificato SSL

Esegui Certbot per ottenere e configurare automaticamente il certificato:


sudo certbot --nginx -d example.com -d www.example.com

5. Verificare il Rinnovo Automatico

Certbot configura automaticamente un timer per il rinnovo dei certificati. Verifica lo stato del timer:


sudo systemctl status snap.certbot.renew.service

Simula un rinnovo per verificare la configurazione:


sudo certbot renew --dry-run

Riferimenti

Installazione del LEMP Stack su Ubuntu

Questa guida descrive i passaggi per installare il LEMP Stack (Linux, Nginx, MySQL, PHP) su un server Ubuntu.
Al termine, configureremo un esempio di pagina PHP per mostrare una lista di articoli di un e-commerce.

Passaggi principali

  1. Installazione di Nginx
  2. Installazione di MySQL
  3. Installazione di PHP
  4. Configurazione di Nginx per PHP
  5. Test di una pagina PHP
  6. Esempio di pagina PHP per e-commerce

1. Installazione di Nginx

Aggiorna i pacchetti e installa Nginx:

sudo apt update
sudo apt install nginx

Verifica che Nginx sia in esecuzione:

sudo systemctl status nginx

2. Installazione di MySQL

Installa il server MySQL:

sudo apt install mysql-server

Esegui lo script di sicurezza:

sudo mysql_secure_installation

3. Installazione di PHP

Installa PHP e il modulo per MySQL:

sudo apt install php-fpm php-mysql

4. Configurazione di Nginx per PHP

Crea un blocco server per il tuo dominio:

sudo nano /etc/nginx/sites-available/ecommerce

Inserisci la seguente configurazione:

server {
    listen 80;
    server_name ecommerce.test www.ecommerce.test;
    root /var/www/ecommerce;
    index index.php index.html;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
}

Attiva il sito e ricarica Nginx:

sudo ln -s /etc/nginx/sites-available/ecommerce /etc/nginx/sites-enabled/
sudo systemctl reload nginx

5. Test di una pagina PHP

Crea un file info.php:

sudo nano /var/www/ecommerce/info.php

Aggiungi il seguente codice:

<?php
phpinfo();

Visita http://ecommerce.test/info.php per verificare.

6. Esempio di pagina PHP per e-commerce

Crea un file products.php:

sudo nano /var/www/ecommerce/products.php

Aggiungi il seguente codice:

<?php
// Connessione al database
$conn = new mysqli('localhost', 'username', 'password', 'ecommerce');
if ($conn->connect_error) {
    die("Connessione fallita: " . $conn->connect_error);
}

// Query per ottenere gli articoli
$result = $conn->query("SELECT id, nome, prezzo FROM prodotti");
if ($result->num_rows > 0) {
    echo "<table><tr><th>ID</th><th>Nome</th><th>Prezzo</th></tr>";
    while ($row = $result->fetch_assoc()) {
        echo "<tr><td>" . $row["id"] . "</td><td>" . $row["nome"] . "</td><td>" . $row["prezzo"] . "</td></tr>";
    }
    echo "</table>";
} else {
    echo "Nessun prodotto trovato.";
}
$conn->close();

Visita http://ecommerce.test/products.php per visualizzare la lista di prodotti.

Riferimenti

Configurare msmtp: un Client SMTP Leggero

msmtp è un client SMTP leggero e versatile, ideale per inviare email da script o applicazioni collegandosi ad un servizio smtp quindi senza dovere installare e configurare un server di posta completo.
Si integra facilmente con strumenti come Mailutils o
Mutt. Questo articolo esplora le funzionalità di msmtp e fornisce esempi pratici di configurazione.

Configurazione di base

msmtp utilizza un file di configurazione per definire i parametri necessari alla connessione a un server SMTP.
Il file di configurazione predefinito è ~/.msmtprc. Assicurati che i permessi del file siano impostati correttamente per garantire la sicurezza:


chmod 600 ~/.msmtprc

    

Esempio 1: Configurazione per Gmail personale

Questa configurazione consente di utilizzare un account Gmail personale per inviare email.


# ~/.msmtprc
account gmail
host smtp.gmail.com
port 587
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
user your-email@gmail.com
password your-password
from your-email@gmail.com
logfile ~/.msmtp.log

    

Per maggiore sicurezza, utilizza un file separato per salvare la password e modifica il parametro password per leggerla da lì.

Esempio 2: Configurazione per Gmail aziendale (Google Workspace)

Questa configurazione è specifica per gli account aziendali di Google Workspace (ex G Suite).


# ~/.msmtprc
account gmail-workspace
host smtp.gmail.com
port 587
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
user your-business-email@domain.com
password your-password
from your-business-email@domain.com
logfile ~/.msmtp.log

    

Esempio 3: Configurazione per Yahoo Mail

Per inviare email tramite un account Yahoo, utilizza questa configurazione:


# ~/.msmtprc
account yahoo
host smtp.mail.yahoo.com
port 587
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
user your-email@yahoo.com
password your-password
from your-email@yahoo.com
logfile ~/.msmtp.log

    

Esempio 4: Utilizzo di msmtp con Amazon SES

Amazon Simple Email Service (SES) richiede una configurazione leggermente diversa:


# ~/.msmtprc
account amazon-ses
host email-smtp..amazonaws.com
port 587
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
user your-smtp-username
password your-smtp-password
from your-verified-email@example.com
logfile ~/.msmtp.log

    

Riferimenti