Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 键集不存在_Xml_Vb.net_Soap_X509certificate2_Signedxml - Fatal编程技术网

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”(密钥集不存在)。我已经将密钥证书注册到我的计算机上。但它仍然不起作用。你解决了这个问题吗?