gpt4 book ai didi

c# - 系统.Security.Cryptography.CryptographicException : Keyset does not exist thrown within Visual studio

转载 作者:太空狗 更新时间:2023-10-29 23:22:38 42 4
gpt4 key购买 nike

美好的一天

由于这个错误,我在尝试分配私钥时遇到了严重的问题。

System.Security.Cryptography.CryptographicException: key 集不存在

var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);

var col = store.Certificates.Find(X509FindType.FindBySerialNumber, "00873476DC47C5BB614EA96F2A9CE744A6", false);
var cert = col[0];
var xmlUnSignedSaml = new XmlDocument();
xmlUnSignedSaml.LoadXml(assertion);
xmlUnSignedSaml.PreserveWhitespace = true;
SignedXml signedXml = new SignedXml(xmlUnSignedSaml);

signedXml.SigningKey = cert.PrivateKey; //<<<--- Exception thrown.

我已验证以下内容:

  1. 证书有私钥。
  2. 授予 IUSR、NETWORK SERVICE、LOCAL SERVICE 和 MMC 控制台上的本地用户上下文对证书的读取权限。证书在 localMachine - Personal 文件夹中
  3. 为位于“C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys”的 machinekeys 文件夹授予相同的读取权限。

我已经检查了以下页面的答案,但绝对没有一个对我有用:

我在 Visual Studio 中运行应用程序,在上面的代码段中,它抛出了试图设置 SignedXml 的 SigningKey

的异常

我还能做些什么来启动和运行它?(事后,我也尝试了对证书和文件夹的“所有人”权限 - 即使抛出了同样的异常)

最佳答案

我已经使用以下步骤解决了我的问题:

  1. 已从 Microsoft 下载 WCF_Samples 以访问 FindPrivateKey - 15.5mb in size解决方案。
  2. 解压缩 zip 文件
  3. 导航到 WCF_Samples\WCF\Setup\FindPrivateKey\CS\FindPrivateKey.sln 并构建它。ctrl+shift+B
  4. Main(string args[]) 方法中添加了以下代码行因为我很懒,不想通过控制台来完成:args = new string[ ] { "My", "LocalMachine", "-t", THUMBPRINT_OBTAINED_IN_MMC, "-a"};
  5. 运行应用程序。我找到了 key 的路径并导航到它。事实证明, key 本身的权限未设置

我更改了 key 本身的权限,我的应用程序开始工作了。

关于c# - 系统.Security.Cryptography.CryptographicException : Keyset does not exist thrown within Visual studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24911948/

42 4 0
文章推荐: c# - 删除 List 的重复对