diff --git a/application/config/database.php b/application/config/database.php index c1cfa1b..a422d58 100644 --- a/application/config/database.php +++ b/application/config/database.php @@ -85,6 +85,18 @@ class Database return []; } + // GUARD anti-outage (lezione 2026-06-10, 3 outage): il TLS NON si applica a + // una connessione via UNIX socket (DB_HOST 'localhost', vuoto o path '/...'). + // Forzarlo da' PDOException [2002] "Cannot connect to MySQL using SSL" su OGNI + // richiesta. Il socket e' IPC locale (nessun transito di rete da cifrare): + // restiamo in chiaro + log, anche se il flag/env e' attivo. SSL si applica solo + // alle connessioni TCP (es. 127.0.0.1 o un host di rete). + $host = defined('DB_HOST') ? (string) DB_HOST : ''; + if ($host === '' || strcasecmp($host, 'localhost') === 0 || $host[0] === '/') { + error_log('[Database] DB_SSL attivo ma connessione via UNIX socket (DB_HOST=' . $host . '): SSL non applicabile, resto in chiaro (socket = IPC locale, nessun transito da cifrare).'); + return []; + } + $ca = Env::get('DB_SSL_CA', __DIR__ . '/db-ca.pem'); if (!$ca || !is_file($ca) || !is_readable($ca)) { error_log('[Database] DB_SSL attivo ma CA non trovato/leggibile (' . $ca . '): connessione NON cifrata (serve il CA file).');