[FIX] TLS-DB nis2: guard anti-outage — salta SSL su connessione via UNIX socket
Lezione 2026-06-10 (3 outage): forzare SSL su una connessione via socket (DB_HOST 'localhost'/vuoto/path) da' PDOException [2002] "Cannot connect to MySQL using SSL" su ogni richiesta -> app giu'. sslOptions() ora ritorna [] (resta in chiaro + log) se DB_HOST indica un socket, anche col flag/env attivo. SSL si applica solo alle connessioni TCP. Il socket e' IPC locale: nessun transito di rete da cifrare. Cosi' riaccendere .db_ssl_on mentre l'app e' su socket NON puo' piu' causare outage. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
dc05e316a0
commit
4548cc6ff2
@@ -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).');
|
||||
|
||||
Reference in New Issue
Block a user