帮助SAML错误:“键集不存在”

时间:2011-04-17 05:08:04

标签: c# saml

我们有两个环境应该是相同的,但是当我们尝试生成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();
        }

异常消息是

  

密钥集不存在

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

提前致谢。

2 个答案:

答案 0 :(得分:3)

您好,请在设置中查看以下内容。

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

    Manage Private Keys

  • 如果仍然无效,请为IIS_IUSRS添加修改访问角色。 IIS_IUSRS

希望它会对你有所帮助。

谢谢!

答案 1 :(得分:0)

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

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