2011-04-17 82 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

相關問題