Frage

Der Hosting-Server wird gerade nicht ausgeführt werden:

SignedXml.ComputeSignature();

dachte ich fromXML und ToXml Methoden volles Vertrauen erforderlich. Aber das war eine Überraschung. Nun ist es unmöglich, digital jedes Dokument zu unterzeichnen.

Auf der Suche im Netz ich dies gefunden: Mit RSA Public Key-Verschlüsselung in einem Shared Web Hosting-Umgebung

Jeder verwendet, um dieses vor oder irgendeine andere Art und Weise aus?

War es hilfreich?

Lösung

war ich schließlich in der Lage, das Online-Aktivierung System zu entwickeln, das unter Verwendung von Bounty Castle Sicherheits-API.

Es gibt keine direkte Methode zur Verfügung, aber der Basis-API verwendet werden kann, um eine digitale Signatur zu erzeugen.

Andere Tipps

Ich weiß, dass dieser Beitrag ist alt, aber vielleicht jemand findet es nützlich: Die Lösung arbeitet mit ASP .NET 3.5 in mittlerer Vertrauenswürdigkeit:

    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;
            }

Die Autoren des Artikels sind neu zu erfinden grundsätzlich das Rad, indem sie verschiedene Stücke zusammen, um einige Arbeitscode zu erhalten. Während sollten ihren Ansatz arbeiten und Sie könnten einen ähnlichen Ansatz selbst (nehmen einige Code hier und dort und versuchen, damit es funktioniert) erfinden, sie bestätigen (in der Geschichte), dass es Fehler waren, die behoben wurden und ich gehe davon kann es mehr Bugs Dort.

JFYI: bieten wir XML-Sicherheitskomponenten denen die Arbeit in begrenzten Umgebungen, weil wir haben alle Code selbst geschrieben und in unseren Versammlungen enthalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top