【问题标题】:Help with SAML error: "Keyset does not exist"帮助解决 SAML 错误:“密钥集不存在”
【发布时间】:2011-04-17 05:08:04
【问题描述】:

我们有两个应该相同的环境,但是当我们尝试生成 SAML 消息签名时,其中一个会引发错误。我以前没有看过 SAML,我不确定它会做什么

部分代码:

X509Certificate2 x509Certificate = (X509Certificate2)Application[ASP.global_asax.IdPX509Certificate];

        try
        {
            SAMLMessageSignature.Generate(samlResponse, x509Certificate.PrivateKey, x509Certificate);
        }
        catch (Exception ex)
        {
            app = File.AppendText(@"C:\SAML.txt");
            app.WriteLine(ex.Message.ToString());
            app.Flush();
            app.Close();
        }

异常消息是

键集不存在

有人知道我应该看什么吗?

提前致谢。

【问题讨论】:

  • 您能否发布将 X509Certificate2 加载到 HttpApplicationState 对象中的代码?

标签: c# saml


【解决方案1】:

您好,请检查以下设置。

  • 为您安装的证书设置正确的访问控制条目 ACL。
  • 将网络服务的修改访问角色添加到证书。
  • 如果您使用的是 Windows 2008 和 Windows 7,您可以从证书中访问私钥 MMC 中的管理单元。

  • 如果仍然无法正常工作,请同时为 IIS_IUSRS 添加修改访问角色。

希望对您有所帮助。

谢谢!

【讨论】:

    【解决方案2】:

    检查存储在 HttpApplicationState 对象的密钥 ASP.global_asax.IdPX509Certificate 中的证书是否已成功加载。如果证书是从 PFX 文件加载的,请确保它存在于磁盘上并且可由运行 Web 应用程序的帐户访问。如果证书是从证书存储加载的,请确保它安装在正确的存储中,并且运行您的 Web 应用程序的帐户可以访问该证书。

    您可以使用 winhttpcertcfg.exe 将证书安装到系统密钥库中并管理证书 ACL。知识库文章http://support.microsoft.com/kb/901183 包含一些附加信息。

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多