Pinning SSL: gestione delle modifiche nella certificazione aggiunta sul lato client

0
  • Supponiamo di avere un client applicazione che comunica con un server tramite SSL.
  • Supponiamo inoltre che il client stia utilizzando il blocco del certificato SSL, ovvero il client rifiuterà il certificato del server a meno che non sia conforme a uno specifico codice codificato con cui il client è stato rilasciato.

Poiché i certificati hanno date di scadenza, il certificato in sospeso del server dovrà eventualmente essere sostituito. Questo processo richiede generalmente un aggiornamento dell'applicazione / client per rendere il client consapevole del nuovo certificato "pin".

Esistono best practice su come gestire questa transizione / cambiamento?

Sto pensando a qualcosa di più sofisticato di due persone che premono un pulsante allo stesso tempo (cioè il certificato del server che sta aggiornando e l'applicazione che obbliga l'utente ad aggiornare) ... I processi organizzativi qui coinvolti possono essere non banali, soprattutto perché i cicli di rilascio e manutenzione di client / server / operazioni potrebbero essere eseguiti in base a diversi programmi e priorità.

Forse qualcosa di simile (sto solo scrivendo un approccio piuttosto ingenuo qui):

  • Il client ha più certificati memorizzati per il server, con periodi di validità diversi ma sovrapposti.
  • Se un certificato in sospeso è scaduto, il client verifica se ha un altro ancora valido ...

- > Ciò consentirebbe ai nuovi certificati "appuntati" per un server di essere consegnati con largo anticipo rispetto al passaggio effettivo dei certificati sul server.

    
posta fgysin 30.01.2017 - 14:24
fonte

1 risposta

3

È possibile bloccare più di un certificato e si dovrebbe pin almeno 2. Se in qualche modo si perde l'accesso a un certificato, è possibile utilizzare il secondo. Con un solo certificato, nessuno collegato al tuo sito con il blocco abilitato sarà in grado di connettersi al tuo sito tramite HTTPS fino alla scadenza del certificato (ma possono connettersi tramite HTTP). Se hai impiegato HSTS, nessuno che sia mai connesso potrà nemmeno tramite HTTP.

Quindi, se si dispone di un certificato valido, è possibile modificare la configurazione del server Web per inviare il certificato corrente e il nuovo sulla stessa risposta e i browser inseriranno anche nella cache il nuovo.

Ad esempio, il tuo server utilizza la configurazione corrente:

Public-Key-Pins: max-age=2592000;
pin-sha256="abcd9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=";

E il certificato con impronta digitale abcd9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g= scadrà tra 2 mesi. Basta modificare la configurazione del server per aggiungere il nuovo certificato LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ= con le intestazioni di risposta:

Public-Key-Pins: max-age=2592000;
pin-sha256="abcd9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=";
pin-sha256="LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=";

Ma se lasci scadere il certificato, devi aspettare fino alla scadenza di max-age per poter inviare un altro certificato.

    
risposta data 30.01.2017 - 14:57
fonte

Leggi altre domande sui tag