Diciamo che ho firmato la mia chiave pubblica con una CA attendibile e che la CA ha fornito al mio un certificato firmato e voglio che qualsiasi applicazione client verifichi contro questo certificato. Il processo generale è che il client verifica contro la chiave pubblica della CA, e non la mia, quindi non ho nemmeno bisogno di trasmettere la chiave pubblica, ma qual è la migliore pratica per implementarla in un'applicazione client C #?
Il mio attuale approccio scelto è quello sull'applicazione server, sto memorizzando il certificato (che contiene la mia chiave privata) nel mio negozio locale, che uso per firmare i dati. Quindi, sull'applicazione client, sto caricando il root store dell'utente corrente e ho passato il nome del certificato della CA che ha firmato il mio certificato, e se questa CA è stata trovata nell'archivio, recupero la sua chiave pubblica e ho verificato contro quello. Se la mia chiave pubblica è stata firmata dalla CA, la verifica dovrebbe avere esito positivo, altrimenti fallirà. È questo il modo corretto di implementarlo? In caso contrario, fornisci soluzioni migliori.
Le seguenti sono le mie domande riguardo al mio approccio scelto:
-
Il nome del certificato della CA può cambiare? Se così fosse, dovrei cambiarlo nel codice. Se questo può cambiare, cos'altro dovrei usare? cercare il certificato? Forse il numero di serie?.
-
Qualcuno può creare lo stesso Nome certificato. Presumo che tu può. Ad esempio, un hacker potrebbe creare un nome di certificato che è lo stesso di una CA stabilita, ma è ovviamente l'utente a aggiungilo al negozio fidato sulla sua macchina. Se non lo fa, allora il l'hacker non ha alcun potere. Inoltre, non lo penso due certificati possono avere lo stesso numero di serie.
-
Se la mia chiave privata viene dirottata e revoco il certificato, la verifica dovrebbe iniziare a fallire sulle applicazioni del client. esso inizierà a verificare correttamente una volta che avrò iniziato a firmare i messaggi con il nuovo certificato rilasciato dalla CA. È corretto?
Infine, al momento non possiedo un certificato firmato, quindi non posso verificarlo. Ecco perché sto facendo queste domande, così che se questo approccio è corretto, posso procedere all'acquisto di un certificato poiché conosco la strada da seguire. Inoltre, si spera, questa domanda potrebbe aiutare altre persone con lo stesso problema.
Grazie in anticipo.