我有一个ASP.NET应用程序,该应用程序访问证书存储中证书中的私钥.在Windows Server 2003上,我可以使用winhttpcertcfg.exe授予对网络服务帐户的私钥访问权限.如何授予访问IIS 7.5网站中Windows Server 2008 R2上证书存储(本地计算机\个人)中证书中私钥的权限?
我已try 使用证书MMC(Server 2008 R2)为"Everyone"、"IIS AppPool\DefaultAppPool"、"IIS_IUSRS"和我能找到的其他所有安全帐户授予完全信任访问权限.但是,下面的代码表明,该代码无权访问使用私钥导入的证书的私钥.每次访问私钥属性时,代码都会抛出并出错.
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Import Namespace="System.Security.Cryptography.X509Certificates" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "100">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="repeater1" runat="server">
<HeaderTemplate>
<table>
<tr>
<td>
Cert
</td>
<td>
Public Key
</td>
<td>
Private Key
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%#((X509Certificate2)Container.DataItem).GetNameInfo(X509NameType.SimpleName, false) %>
</td>
<td>
<%#((X509Certificate2)Container.DataItem).HasPublicKeyAccess() %>
</td>
<td>
<%#((X509Certificate2)Container.DataItem).HasPrivateKeyAccess() %>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table></FooterTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
Default.aspx.cs