Un certificato , correttamente denominato, non include una chiave privata. Un certificato contiene una chiave pubblica e un'identità ed è firmato da un'autorità di certificazione . Sfortunatamente, una serie di documentazioni diffuse usa il termine "certificato" per designare la combinazione di un certificato e la chiave privata corrispondente; questo diffonde confusione.
Una richiesta di certificato (il cosiddetto "CSR") contiene solo la chiave pubblica, non la chiave privata. Quando IIS genera una CSR, in realtà genera una nuova coppia di chiavi (chiave pubblica e privata), quindi avvolge la chiave pubblica nella richiesta di certificato e la firma utilizzando la chiave privata. La chiave privata non va da nessuna parte; il CA non lo vede mai. Quando la CA riceve il CSR, prende la chiave pubblica da esso, la inserisce in un certificato che firma e restituisce. In nessun caso la chiave privata lascia la tua macchina, ed è così che dovrebbero essere fatte le cose.
Ora alcuni CA insistono nel generare la coppia di chiavi privata / pubblica e nell'inviare sia la chiave privata che il certificato. Ciò rende le cose tecnicamente più semplici per la CA, ma comporta potenziali problemi di sicurezza, perché in tal caso la CA dispone anche di una copia della chiave privata e la chiave privata ha in qualche modo la possibilità di tornare indietro. Di solito, viene utilizzato un archivio PKCS # 12 (noto anche come "file PFX"), poiché tale formato include la protezione basata su password.
La generazione di chiavi private sul lato CA può essere una buona idea quando la chiave privata viene utilizzata per crittografare i dati in modo permanente (ad esempio una chiave privata per e-mail crittografate), poiché la perdita di tale chiave implica la perdita di dati. Pertanto, è necessario eseguire il backup di quel tipo di chiave privata e la CA è un bel punto centrale per tali backup. Tuttavia, questo non si applica a SSL, in cui la chiave privata viene utilizzata solo transitoriamente per stabilire la connessione. Pertanto, quando il certificato è per IIS, è necessario utilizzare la generazione di chiavi private sul lato server, e questo è ciò che fa IIS.