Domanda

Mi ritrovo a dover archiviare i certificati di chiave pubblica e un singolo certificato di chiave privata per un'applicazione interna.

Un membro del nostro team ha suggerito di archiviare i certificati X509 nel database, invece di archiviarli nell'archivio certificati di Windows, come abbiamo fatto finora. Non mi piace reinventare la ruota, ma devo almeno considerare l'idea. significherebbe mantenere i nostri dati più centralizzati, il che è positivo, suppongo.

Le barriere iniziali che posso vedere sono:

  • La chiave privata deve ancora essere archiviata da qualche parte e non so se inserirla in una tabella "chiave pubblica" sia una buona idea. Non mi piace neanche l'idea di creare una tabella per un singolo elemento. Forse tieni semplicemente la chiave privata come file locale? (file .pfx, ad esempio).
  • Elenchi di revoca. Probabilmente dovremmo istituire un processo per gestire le chiavi pubbliche revocate.

Non ho molta esperienza con i certificati X509, quindi la mia domanda è: ci sono altri problemi che potremmo riscontrare nell'archiviazione dei certificati con chiave pubblica in un database, invece che nell'archivio certificati di Windows?

Vale la pena ricordare che questa applicazione verrà implementata su più server di client aziendali, quindi mantenere tutti i dati in un unico posto renderà i backup più facili. Oh, e l'app in-house in questione è in fase di sviluppo con C # ..

Grazie!

È stato utile?

Soluzione

Qual è lo scopo della tua applicazione?

Se stai gestendo tutte le criptovalute nella tua applicazione e puoi fare riferimento a un cert PKCS # 12 + file di chiave privata, allora probabilmente il percorso del database va bene.

Se è necessario utilizzare l'API di Windows Crypto per accedere a certs, probabilmente si vorrà continuare a utilizzare l'archivio certificati incorporato. Qui ottieni alcuni vantaggi in quanto puoi proteggere la chiave privata su un dispositivo esterno, come una smart card o Hardware Security Module (HSM).

Dovrai assicurarti di compiere uno sforzo significativo per proteggere la chiave privata se stai memorizzando tutto sul disco locale. Assicurati di utilizzare una passphrase forte e di utilizzare le migliori pratiche per proteggere questa passphrase nella tua app.

Altri suggerimenti

Sarei riluttante a spostare la chiave privata in qualsiasi altra posizione a meno che non sia veramente necessario. Non è necessario se la chiave viene utilizzata per la firma e sarebbe necessaria solo se la chiave viene utilizzata per la decrittografia e si desidera archiviarla per il futuro. Anche in questo caso l'autorità di certificazione che ha emesso il certificato sarebbe generalmente in grado di gestire l'archiviazione e il recupero. Questo è certamente il caso delle CA più popolari come Microsoft e affidare.

Se è necessario memorizzarlo, crittografarlo utilizzando AES e una chiave che è possibile proteggere in un HSM (Hardware Security Module) o su una smart card. Non lasciare questa chiave in testo normale (in un file o nel registro).

Vorresti anche proteggere questa chiave in transito tra la sua posizione di generazione e il database centrale. SSL o VPN ecc.

Gli elenchi di revoche sono pubblicati dall'autorità di certificazione nella maggior parte degli ambienti, di solito in un LDAP o nella directory o in entrambi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top