¿Hay alguna forma para firmar digitalmente un documento de confianza medio de alojamiento?

StackOverflow https://stackoverflow.com/questions/4432332

Pregunta

El servidor que aloja apenas no ejecute:

SignedXml.ComputeSignature();

pensé métodos fromXML y toXML requieren plena confianza. Pero esto fue una sorpresa. Ahora bien, es imposible firmar digitalmente cualquier documento.

En la búsqueda de la red he encontrado esto: El uso de RSA claves públicas de cifrado en un alojamiento web compartido de Medio Ambiente

Cualquier persona usa esto antes o cualquier otra salida?

¿Fue útil?

Solución

Me fue finalmente capaz de desarrollar el sistema de activación de línea usando Bounty Castillo API de seguridad.

No hay un método directo disponible, pero el API se puede utilizar para generar una firma digital.

Otros consejos

Sé que este post es antiguo, pero tal vez alguien le resultará útil: Funciona la solución con ASP .NET 3.5 en un medio de confianza:

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

Los autores del artículo son, básicamente, reinventar la rueda por conseguir diferentes piezas juntas con el fin de conseguir un poco de código de trabajo. Aunque su enfoque debería funcionar y se podía inventar un enfoque similar a sí mismo (tomar algún código aquí y allá y tratar de hacer que funcione), confirman (en la historia) que había errores corregidos y supongo que no puede haber más errores ahí.

JFYI: ofrecemos XML href="http://www.eldos.com/sbb/net-xml.php" que trabajan en entornos limitados porque tiene todo el código escrito a nosotros mismos e incluido en nuestras asambleas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top