Mon entreprise a une application de gestion de documents Web et j'ai été assigné pour trouver un moyen de signer des fichiers pdf avec le certificat numérique de l'utilisateur.Signer numériquement pdfs
Les pdfs peuvent aller de quelques kb à plus de 100 Mo, c'est sur Internet de sorte que la signature doit ont lieu au niveau du serveur web. Pour ce faire, j'ai construit un contrôle activeX qui demande à l'utilisateur de choisir le certificat, puis le télécharge sur une page web en utilisant WebClient.UploadData envoyant le certificat sous la forme d'un tableau d'octets.
Sur la page Web lorsque j'essaie de signer le document pdf, j'obtiens une erreur "La clé n'existe pas". Cela ne me surprend pas parce que quand j'utilisais le certificat directement sur une connexion https après avoir choisi le bon certificat, je serais prompt pour la clé. Ce n'est pas le cas avec ActiveX.
Voilà comment je suis d'obtenir le certificat de l'utilisateur:
private static X509Certificate2 PickCertificate()
{
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
try
{
store.Open(OpenFlags.ReadOnly);
// pick a certificate from the store
X509Certificate2 cert = X509Certificate2UI.SelectFromCollection(store.Certificates, "Title", "Message", X509SelectionFlag.SingleSelection)[0];
// show certificate details dialog
X509Certificate2UI.DisplayCertificate(cert);
store.Close();
return cert;
}
finally { store.Close(); }
}
Comment puis-je demander à l'utilisateur de fournir la clé que je suis absent?
La version précédente pour signer les fichiers PDF travaillait sur le côté client. Ceci est un problème lorsque vous souhaitez signer un document de 100 Mo car vous devez le télécharger sur le Web. Imaginez à quel point cela prendrait une connexion de téléchargement de 15kb/s ... – Sergio
télécharger/signer/télécharger? Je vois. Ensuite, vous devrez soit envoyer le fichier de clés au serveur, ce qui est dangereux, ou implémenter un système d'entiercement (qui prendra du travail et peut même ne pas être possible en fonction de votre public cible). Implications juridiques (responsabilité) dans l'un ou l'autre scénario. –
Je reçois le certificat d'une carte à puce. Avez-vous des idées sur la façon dont je peux obtenir la clé? – Sergio