Question

Le serveur qui héberge juste n'exécuter:

SignedXml.ComputeSignature();

Je pensais que les méthodes fromXML et toXml nécessaires confiance totale. Mais ce fut une surprise. Maintenant, il est impossible de signer numériquement un document.

En cherchant sur le net, j'ai trouvé ceci: L'utilisation de RSA public clé de chiffrement dans un environnement d'hébergement Web partagé

Toute personne a utilisé ce avant ou tout autre sur le chemin?

Était-ce utile?

La solution

Je fini par développer le système d'activation en ligne en utilisant

Château Bounty API de sécurité. >

Il n'y a pas une méthode directe disponible, mais l'API de base peut être utilisée pour générer une signature numérique.

Autres conseils

Je sais que ce post est vieux, mais peut-être quelqu'un trouvera utile: Les travaux de solution avec ASP .NET 3.5 en fiducie moyen:

    private XmlDocument GetSignedDoc(XmlDocument doc)
{
      X509Certificate2 certificate = null;
                    try
                    {
                        certificate = new X509Certificate2(AppDomain.CurrentDomain.BaseDirectory + licenceFile, licenceFilePass, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);

                        if (certificate == null)
                            throw new Exception("The certificate i

s null!!!");
                }
                catch (Exception ex)
                {
                    exception += "X509Certificate2 fail! Did not get certificate " + AppDomain.CurrentDomain.BaseDirectory + licenceFile;
                    exception += FormatException(ex);
                    goto SetError;
                }
            RSACryptoServiceProvider myRSASigner = null;

            try
            {
                myRSASigner = (RSACryptoServiceProvider)certificate.PrivateKey;

                if (myRSASigner == null)
                {
                    throw new Exception("No valid cert was found");
                }


                    doc = SignXmlFile(doc, myRSASigner);

           catch (Exception ex)
                {
                    exception += "SignXmlFile failed";
                    exception += FormatException(ex);
                    goto SetError;
                }

}

private static XmlDocument SignXmlFile(XmlDocument doc, RSACryptoServiceProvider myRSA)
            {
                byte[] sign_this = Encoding.UTF8.GetBytes(doc.InnerXml);
                byte[] signature = myRSA.SignData(sign_this, new SHA1CryptoServiceProvider());
                string base64_string = Convert.ToBase64String(signature);

                XmlElement Signature = doc.CreateElement("Signature");
                Signature.AppendChild(doc.CreateTextNode(base64_string));
                doc.DocumentElement.AppendChild(doc.ImportNode(Signature, true));

                return doc;
            }

Les auteurs de l'article sont essentiellement réinvente la roue en obtenant différentes pièces ensemble afin d'obtenir un code de travail. Bien que leur approche devrait fonctionner et vous pourriez inventer une approche similaire vous (prendre un certain code ici et là et essayer de le faire fonctionner), ils confirment (dans l'histoire) qu'il y avait des bugs qui ont été corrigés et je suppose qu'il peut y avoir plus de bugs Là.

JFYI: nous offrons qui travaillent dans des environnements limités parce que nous ont tout le code écrit nous-mêmes et inclus dans nos assemblées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top