J'ai le code .Net suivant (asp.net) pour signer en utilisant un certificat client."Impossible de trouver le certificat et la clé privée pour le déchiffrement" pour le certificat pfx pkcs # 12 avec la clé privée
J'ai un certificat client stocké sous l'ordinateur local et non l'utilisateur actuel.
Le certificat client est PFX PKCS # 12 et a la clé privée
clé privée importés ne sont pas marqués comme exportables. Ma clé privée dans le certificat client protégé par un mot de passe.
Sur la dernière ligne ci-dessus, j'obtiens l'erreur "Impossible de trouver le certificat et la clé privée pour le décryptage".
Il semble que la clé privée n'est pas accessible lors de l'utilisation de mon code.
Y a-t-il un moyen pour moi d'associer la clé privée à mon certificat client? Aucune suggestion ?
public void FirmarConCertificado(string nombreCertificado, X509Certificate2 certificate)
{
try
{
var mensaje = "Datos de prueba";
System.Text.Encoding enc = System.Text.Encoding.Default;
byte[] data = enc.GetBytes(mensaje);
var contentInfo = new System.Security.Cryptography.Pkcs.ContentInfo(data);
var signedCms = new System.Security.Cryptography.Pkcs.SignedCms(contentInfo, true);
var cmsSigner = new System.Security.Cryptography.Pkcs.CmsSigner(certificate);
// Sign the CMS/PKCS #7 message
signedCms.ComputeSignature(cmsSigner); // <<<<<<< FAILS HERE
// Encode the CMS/PKCS #7 message
var ret = Convert.ToBase64String(signedCms.Encode());
Message.Text += "Firmado con Certificado " + nombreCertificado + " encontrado en " + StoreLocation.LocalMachine;
}
catch (Exception ex)
{
Message.Text = "Error al firmar con certificado: " + ex.ToString();
Message.Text += "<br /><br />InnerException: " + ex.InnerException;
}
}
EDIT: Problèmes d'identité dans AppPool. L'utilisateur qui installe le certificat dans LocalMachine Store doit être l'identité de AppPool of WebSite et se trouve dans le groupe IIS_WPG.
SOLUTION: Créer un utilisateur dans un domaine, l'ajouter au groupe IIS_WPG, l'ajouter comme Identity AppPool. Installez les certificats dans l'ordinateur local de stockage en utilisant cet utilisateur créé.
Problèmes d'identité dans AppPool. L'utilisateur qui installe le certificat dans LocalMachine Store doit être l'identité de AppPool of WebSite et se trouve dans le groupe IIS_WPG. – Kiquenet