2012-12-17 2 views
1

Sur .NET dans un environnement Windows, si un fichier .pfx/.p12 contient une clé privée, il peut être installé par programme dans le magasin de certificats de la façon suivante (où rawData est un tableau d'octets contenant le plein .pfx/p12, à la fois la clé publique et privée, et le mot de passe est le mot de passe à l'.pfx/p12):Installation de la clé privée d'un pkcs12 dans Mono Cert Store sous Linux

X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); 
X509Certificate2 certificate = new X509Certificate2(rawData, password, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable); 
store.Open(OpenFlags.ReadWrite); 
store.Add(certificate); 
store.Close(); 

Je cherche à faire exactement la même chose sur Mono dans un environnement Linux. Le code ci-dessus, qui fonctionne sous Windows, n'installera que la clé publique du certificat sous Linux et non la clé privée. J'ai pu installer manuellement la clé privée d'un .p12 en utilisant l'utilitaire certmgr de Mono, mais je cherche une solution programmatique.

Merci!

Répondre

1

Désolé pour cette réponse qui ne résoudra pas votre problème. Mono ne prend pas en charge la persistance d'une clé privée dans un magasin de certificats. Les détails techniques (hautement) peuvent être trouvés dans this interesting discussion.

Dans mon application, j'ai fini par stocker des certificats et des clés privées dans la base de données, car de toute façon, la conception de mon application nécessitait une sorte de stockage centralisé des certificats.

+0

Il peut être possible de le faire manuellement (en dehors de Mono) en convertissant le certificat en PEM via openssh, puis en l'ajoutant au fichier de clés mono dans /sbin/.config/.mono/keypairs (ou partout le quitte) - dans ce cas, il suffit que l'application appelle process.start, selon le cas, pour appeler openssl. – PhonicUK

Questions connexes