Quale problema ci sarebbe con una chiave privata aperta da usare per gli sviluppatori?

0

Trovo sempre un problema creare una nuova chiave per lo sviluppo e stavo pensando di fare qualcosa di simile sia per me stesso che per aiutare altri sviluppatori a uscire:

  1. Registra un dominio come fakesite.com
  2. Ottieni un certificato ssl con caratteri jolly
  3. Rendi disponibili al pubblico sia il certificato che i file della chiave privata
  4. Testare localmente i miei siti aggiungendo voci ai miei file host per quello che voglio testare (ad esempio api.fakesite.com, www.fakesite.com, ecc.) o puntando a 127.0.0.1 o al mio ip sul mio locale rete e utilizzando il certificato pubblicamente disponibile e la chiave privata.

fakesite.com invierebbe tutti i sottodomini a una pagina sul sito web principale che spiegherebbe a cosa serviva. Il certificato effettivo e la chiave privata sarebbero resi disponibili altrove, come in un repository github.

Gli unici problemi che potrei pensare sarebbero

1) L'attaccante può eseguire un attacco MITM reindirizzando il DNS al suo sito Web, che può rendere sicuro utilizzando la "chiave privata" disponibile pubblicamente e indurti a navigare in una pagina web come "citibank.fakesite.com 'e inserendo le tue informazioni.

2) Come sviluppatore ho sbagliato a digitare un url e inviato traffico a apu.fakesite.com, che viene usato come sopra in modo da poter catturare il traffico che intendevo inviare al mio computer locale

In realtà sembra più sicuro per me come sviluppatore che creare un certificato autofirmato usando strumenti disponibili pubblicamente e avendo la chiave sul disco fisso per i miei strumenti da utilizzare. Se qualcuno lo capisce, potrebbe spoofare qualsiasi sito web per me perché devo fidarmi di esso, giusto?

Usando un posto come LetCrypt per l'autorità, possono dire che il mio certificato / chiave è valida solo per quel dominio, che dovrebbe essere usato solo per test e sviluppo locali.

Ci sono problemi a cui non sto pensando, o è il numero 1 abbastanza probabile che questa sia una cattiva idea?

    
posta Jason Goemaat 09.09.2018 - 06:04
fonte

1 risposta

2

Ho la sensazione che tu stia cercando di affrontare il problema che hai dalla parte sbagliata:

I always find it a pain to create a new key for development ...

Non sono sicuro di quello che stai facendo e questo causa così tanto dolore, ma se stai facendo sempre gli stessi passaggi, potrebbe essere davvero utile trovare un modo per automatizzare questi passaggi per te.

It actually seems more secure for me as a developer than creating a self-signed certificate using publicly available tools and having the key sitting around on my hard drive for my tools to use. If anyone got that, they could spoof any website for me because I have to trust it, right?

Se lo interpreto correttamente, stai creando un certificato server autofirmato con vincoli di base CA true (ad esempio, questo certificato può essere utilizzato per emettere certificati). È corretto che questo possa essere usato per creare più certificati e quindi accedere al certificato e la sua chiave può essere usata per man-in-the-middle tutti i siti - sempre che tu abbia importato questo certificato come CA attendibile (autorità di certificazione) invece di un certificato server affidabile. Si noti che l'aggiunta di un'eccezione solo una volta che il browser si lamenta non aggiungerà questo certificato come autorità di certificazione.

Significa anche che l'attaccante deve avere accesso al tuo sistema in primo luogo - nel qual caso potrebbe fare ancora più male. Tuttavia, questo particolare problema può essere facilmente mitigato:

  • La maggior parte dei browser (tutti?) in realtà possono importare un certificato server autofirmato con vincoli di base CA falsi. Esistono però strumenti che non possono gestire questo aspetto e si aspettano che CA sia true su un certificato autofirmato.
  • Si potrebbe creare una CA con la propria chiave privata, lasciare emettere alcuni certificati foglia (vincoli di base CA falsi) con un'altra chiave privata e quindi gettare via la chiave privata della CA. La CA può ancora essere importata come affidabile nel browser in modo che anche tutti i certificati emessi da questa CA vengano considerati attendibili. Poiché la chiave privata della CA viene cancellata, non è possibile creare più certificati.

fakesite.com would send all subdomains to one page on the main website which would explain what it was for. The actual certificate and private key would be made available elsewhere such as in a github repository.

Non è una buona idea usare un dominio pubblicamente disponibile per questo. Il problema è che non è sicuro per impostazione predefinita, ovvero il browser risolverà il dominio e tenterà di connettersi ad esso e man in the middle gli attacchi al dominio non saranno rilevati poiché tutti conoscono la chiave privata per montare attacchi invisibili. E poi l'attaccante potrebbe fare gli attacchi che hai già descritto e forse di più.

Fortunatamente la CA pubblica che ha emesso il certificato revocherà comunque il certificato se la chiave privata viene resa pubblica e quindi questa idea non funzionerebbe (a condizione che i browser controllino la revoca - che molti non fanno o non fanno correttamente).

Ma l'idea generale potrebbe essere modificata per essere più sicura. Se si utilizza semplicemente un dominio che non esisterà mai pubblicamente, un browser può connettersi al dominio solo se il sistema è configurato appositamente per questo. RFC 2606 definisce alcuni domini di primo livello che potrebbero essere utilizzati per questo, ovvero .example , .test , .invalid e .localhost . Quando si utilizza uno di questi domini di primo livello, un utente malintenzionato può solo danneggiare i sistemi di sviluppo che sono specificatamente configurati per risolvere tali domini e che hanno importato esplicitamente questo certificato come certificato di un server affidabile, invece di essere in grado di danneggiare sistemi arbitrari.

    
risposta data 09.09.2018 - 07:36
fonte

Leggi altre domande sui tag