2011-04-17 81 views
1

我们有两个应该相同的环境,但其中一个环境会在我们尝试生成SAML消息签名时引发错误。我没有看过SAML之前,我不完全知道它试图做的代码有关SAML错误的帮助:“Keyset does not exist”

部分:

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(); 
     } 

异常消息为

Keyset does not exist

没有人有任何我应该看什么的想法?

在此先感谢。

+1

您可以将加载X509Certificate2的代码发布到HttpApplicationState对象中吗? – arcain 2011-04-17 05:50:30

回答

0

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

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

2

嗨,请检查以下您的设置。

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

    Manage Private Keys

  • 如果仍然没有工作,加上修改访问角色也为IIS_IUSRS。 IIS_IUSRS

希望它能帮助你。

谢谢!

+1

谢谢 - 你的答案解决了我的问题! – Adam 2012-09-24 20:43:58

相关问题