7

XML セキュリティを学び始めたばかりです。VS-2005 と ASP.Net 2.0 があります。XML を外部 URL に送信したいのですが、暗号化する必要があります。MSDN の記事ms229744ms229943が行っていることを正確に行っていますが、DecryptDocument() メソッドを実行すると、「復号化キーを取得できません」というメッセージが表示され続けます。私は SSL Web 証明書を使用しています。現在、X509Certificate を使用して XML にデジタル署名していますが、問題なく動作しています。

また、他の人に別のショップからこれを試すように依頼しましたが、同じエラーが発生しています. X509 復号化方法に関する文書化された問題はありますか? 以下のテスト コードでは、XML を復号化しようとしている別の Web ページに XML を投稿しています。私が理解していないのは、公開鍵が埋め込まれているかどうかを確認することさえしない場合、DecryptDocument() メソッドがどのように機能するかということです。これが問題ですか?もしそうなら、それが XML に埋め込まれていることを確認するにはどうすればよいですか? どんな助けでも大歓迎です。ありがとう!

Private Function EncryptXml(ByVal xmlDoc As XmlDocument, ByVal Cert As X509Certificates.X509Certificate2) As XmlDocument

   Dim dataNodes As XmlNodeList = xmlDoc.SelectNodes("Agency")
   If dataNodes.Count <> 1 Then
       Return Nothing 
   End If  
   Dim elementToEncrypt As XmlElement = CType(xmlDoc.GetElementsByTagName("Agency")(0), XmlElement)
   Dim eXml As New EncryptedXml()
   Dim Key As RSACryptoServiceProvider = CType(Cert.PrivateKey, RSACryptoServiceProvider)
   Dim edElement As EncryptedData = eXml.Encrypt(elementToEncrypt, Cert)
   EncryptedXml.ReplaceElement(elementToEncrypt, edElement, False)
   Return xmlDoc 
End Function



Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
If Not IsPostBack Then
   If Request.Form("hdnSignedXML") IsNot Nothing Then
   Dim strXML As String = Request.Form("hdnSignedXML")
   Dim xmlDoc As New XmlDocument
   xmlDoc.LoadXml(strXML)
   xmlDoc.PreserveWhitespace = True
   Response.ContentType = "text/plain"
   Response.Write(strXML)

   Dim exml As New Xml.EncryptedXml(xmlDoc)
   exml.DecryptDocument()
   xmlDoc.Save("C:/inetpub/TestExampleDecrypted.xml")


   Response.End()

End If

End Sub

JP

4

1 に答える 1

0

Web プロセスが秘密鍵にアクセスできない可能性があります。私は一度同じことに遭遇し、この項目に回答を投稿しました:

コマンドラインから証明書の読み取り権限を設定する

それでも問題が解決しない場合は、暗号化ルーチンについてhttp://msdn.microsoft.com/en-us/magazine/cc163454.aspxを参照してください。

于 2011-09-01T19:20:01.370 に答える