Medium Trustホスティングに関するドキュメントにデジタル的に署名する方法はありますか?

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

質問

ホスティングサーバーは実行しないだけです。

SignedXml.ComputeSignature();

fromxmlおよびトクシュムルの方法には完全な信頼が必要だと思いました。しかし、これは驚きでした。現在、ドキュメントにデジタルに署名することは不可能です。

ネットを検索すると、私はこれを見つけました:共有Webホスティング環境でRSA公開キー暗号化を使用する

誰かがこれを以前または他の方法で使用しましたか?

役に立ちましたか?

解決

私は最終的にオンラインアクティベーションシステムを開発することができました 賞金城 セキュリティAPI。

利用可能な直接的な方法はありませんが、ベースAPIを使用してデジタル署名を生成できます。

他のヒント

私はこの投稿が古いことを知っていますが、誰かがそれを役に立つと思うかもしれません:ソリューションは中程度の信頼でASP .NET 3.5で動作します:

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

記事の著者は、基本的に、いくつかの機能コードを取得するために異なるピースをまとめることにより、ホイールを再発明しています。彼らのアプローチは機能するはずであり、あなたはいくつかの同様のアプローチを自分で発明することができます(あちこちでコードを取り、それを機能させようとします)、彼らは(歴史上)修正されたバグがあることを確認し、私はより多くのバグがあると思いますそこの。

JFYI:提供します XMLセキュリティコンポーネント 限られた環境では機能します。なぜなら、すべてのコードが自分自身を書いており、アセンブリに含まれているからです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top