我们有两个环境应该是相同的,但是当我们尝试生成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();
}
异常消息是
密钥集不存在
有没有人知道我应该看什么?
提前致谢。
答案 0 :(得分:3)
您好,请在设置中查看以下内容。
如果您使用的是Windows 2008和Windows 7,则可以从证书中访问私钥 管理单元中的管理单元。
如果仍然无效,请为IIS_IUSRS添加修改访问角色。
希望它会对你有所帮助。
谢谢!
答案 1 :(得分:0)
检查HttpApplicationState对象的密钥ASP.global_asax.IdPX509Certificate
中存储的证书是否已成功加载。如果从PFX文件加载证书,请确保它存在于磁盘上,并且可以由运行Web应用程序的帐户访问。如果从证书存储区加载证书,请确保它已安装在正确的存储中,并且运行Web应用程序的帐户可以访问证书。
您可以使用 winhttpcertcfg.exe 将证书安装到系统密钥库并管理证书ACL。知识库文章http://support.microsoft.com/kb/901183包含一些其他信息。