XMLセキュリティを学び始めました。私たちはVS-2005 & ASP.Net 2.0を持っています。 XMLを外部のURLに送信したいので、暗号化する必要があります。私はMSDNの記事 & ms229943を行っていますが、DecryptDocument()メソッドを実行しているときに、「復号化キーを取得できません」というメッセージが表示され続けます。 SSLウェブ証明書を使用していますが、現在X509Certificateを使用してXMLにデジタル署名しています。X509証明書の暗号化/復号化
私はまた、他の人に別の店からこれを試してもらうように頼みましたが、同じエラーが発生しています。 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