Xml 键集不存在
我有一个证书文件并分配给Xml 键集不存在,xml,vb.net,soap,x509certificate2,signedxml,Xml,Vb.net,Soap,X509certificate2,Signedxml,我有一个证书文件并分配给X509Certificate2类 cert = New X509Certificate2("mycertificate.cer") 此证书只有公钥,我将使用该公钥签署我的xml文件 然后我做这个 dim doc as New XmlDocument doc.PreserveWhitespace = True doc.Load("myxmlfile.xml") signedXml = New SignedXml(doc) signedXml.SigningKey = c
X509Certificate2
类
cert = New X509Certificate2("mycertificate.cer")
此证书
只有公钥,我将使用该公钥签署我的xml
文件
然后我做这个
dim doc as New XmlDocument
doc.PreserveWhitespace = True
doc.Load("myxmlfile.xml")
signedXml = New SignedXml(doc)
signedXml.SigningKey = cert.publickey.key
dim reference as New Reference
reference.Uri = ""
dim trns as New XmlDsigC14NTransform
reference.AddTransform(trns)
signedXml.AddReference(reference)
keyInfo = New KeyInfo()
keyInfo.AddClause(New KeyInfoX509Data(cert))
signedXml.KeyInfo = keyInfo
signedXml.ComputeSignature()
xmlDigitalSignature = signedXml.GetXml()
在第signedXml.ComputeSignature()
行中,出现了一些错误
“密钥集不存在”
我对这个案子一无所知。我如何解决这个问题?这可能已经包括在内-请在此处查看答案:
显然,您可能不会使用IIS,但权限可能仍然存在问题。要进行签名,您需要与证书对应的私钥。您只加载了证书,因此收到了此异常
从p12文件加载证书和私钥,或从windows应用商店选择证书。无论哪种方式,都必须设置PrivateKey属性。但我只有另一端的公钥。我必须使用公钥签名,他们读取他们的私钥。然后你不需要签名,但你可能想要加密xml。那么只有私钥持有者才能读取。这是不对称的,先生。。我认为私有到enc和公有到解密或者公有到加密和私有到解密并不重要。。主要问题是我想用公钥加密,但它不起作用。Computesignature将始终使用您没有的私钥进行加密。在非对称加密技术中,当使用一部分加密时,只能使用另一部分解密。签名是用私钥加密的我想你错过了什么长官。。如果我们用公钥加密,用私钥解密,这是可能的。但是在这种情况下,我已经有了公钥,但是响应仍然是“keyset not existing”(密钥集不存在)。我已经将密钥证书注册到我的计算机上。但它仍然不起作用。你解决了这个问题吗?