0

X509Certificate2証明書ファイルが 1 つあり、クラスに割り当てます。

cert = New X509Certificate2("mycertificate.cer")

これcertには、ファイルの署名に使用する公開鍵のみがあり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()に何か問題があります。

「キーセットが存在しません」。

このケースについてはわかりません。どうすればこれを解決できますか?

4

2 に答える 2

1

これはすでにカバーされている可能性があります - ここで答えをチェックしてください:

https://stackoverflow.com/a/6799315/2319909

明らかに、IIS を使用することはないでしょうが、アクセス許可は依然として問題になる可能性があります。

于 2014-08-20T10:08:41.383 に答える
0

署名を行うには、証明書に対応する秘密鍵が必要です。証明書のみをロードしたため、この例外を受け取りました。

p12 ファイルから証明書と秘密鍵をロードするか、Windows ストアから証明書を選択します。いずれにしても、PrivateKey プロパティを設定する必要があります。

于 2014-08-21T05:15:49.683 に答える