Ho il mio X509Certificate memorizzato in un database (in byte[]
) in modo che la mia applicazione possa recuperare il certificato e utilizzarlo per firmare i miei JWT.Impossibile accedere al privateKey del mio X509Certificate2 in Azure
Il mio x509Certificate è passato da un file .pfx che ho generato sulla mia macchina, ma ora si trova in un database come una stringa di byte.
La mia applicazione funziona perfettamente bene localmente quando lo eseguo. L'applicazione può creare correttamente un'istanza di X509Certificate2 e utilizzarla per le mie esigenze, tuttavia il problema sorge quando provo a utilizzarlo nella mia applicazione web azurewebsites.
in fondo non posso accedere variabile di istanza PrivateKey i certificati, ottengo un'eccezione
System.Security.Cryptography.CryptographicException: Keyset does not exist
E sto ri-Instantiating il certificato con questo
var cert = new X509Certificate2(myCertInBytes, myCertPass,
X509KeyStorageFlags.PersistKeySet |
X509KeyStorageFlags.MachineKeySet |
X509KeyStorageFlags.Exportable);
Sto usando ASPNET 5 rc1 -update1. Ho anche provato a farlo su una macchina diversa e funziona bene, ho solo questo problema quando pubblico su Azure. E per aggiungere anche qualcos'altro, questa applicazione funzionava quando stavo eseguendo lo stesso progetto che era in esecuzione usando la versione DNX beta7
Qualsiasi aiuto apprezzato.
Sei sicuro che il certificato nel tuo database abbia incluso il set di chiavi private? Non è un certificato pubblico per caso, vero? –
@ZainRizvi è sicuramente incluso, posso recuperare la chiave privata, (dal CERT X509 su DB di Azure) se eseguo la chiave localmente in locale. Tuttavia non può essere recuperato quando lo distribuisco in Azure. – Lutando