Sadece XML güvenliğini öğrenmeye başlıyorum. VS-2005 & ASP.Net 2.0 var. XML'i dış bir URL'ye göndermek istiyorum ve şifrelenmesi gerekiyor. MSDN makaleleri tam olarak ne yapıyor yapıyorum ms229744 & ms229943 yapıyor, ancak DecryptDocument() yöntemini yaparken, "Şifre çözme anahtarı alınamıyor." SSL web sertifikamı kullanıyorum ve şu anda XML'i dijital olarak imzalamak için X509Certificate kullanıyor ve iyi çalışıyor.X509Bakım şifreleme/şifre çözme
Ayrıca başka bir dükkandan bunu denemelerini ve aynı hatayı almasını istedim. X509 şifre çözme yöntemleri ile belgelenmiş bir sorun var mı? Aşağıdaki test kodunda, XML'i XML'in şifresini çözmeye çalışan başka bir web sayfasına gönderiyorum. Anlamadığım şey, Açık anahtarın gömülü olup olmadığını denetlemezse DecryptDocument() yönteminin nasıl çalışabileceğidir. Bu sorun mu? Eğer öyleyse, XML'de gömülü olduğundan emin olmak için nasıl kontrol ederim? Herhangi bir yardım takdir edilir. Teşekkürler!
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