我有一个证书,必须导入证书/受信任的根证书颁发机构并具有相应的私钥.

要从代码实际访问密钥,您需要设置私钥权限以授予对特定IIS应用程序池的完全访问权限.我完全理解,但问题是这只能在个人证书上设置,而不是在受信任的根证书上设置.

我尝试将相同的证书添加到个人商店,以下代码不会破坏:

X509Store store = new X509Store(StoreName.Root,StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);

foreach (X509Certificate2 cert in store.Certificates)
{
    if (cert.HasPrivateKey)
    {
        // access private key here
    }
}

store.Close();

如果我将StoreName.Root更改为StoreName.My,则设置个人存储中证书的权限.我可以在那里访问它.但是我无法在root中访问它.它只是说:

Keyset does not exist

有什么建议?

附加信息

如果我将应用程序池标识设置为本地系统(对我的计算机具有完全权限),我可以成功访问私钥.因此,主要问题是如何设置应用程序池标识的权限以访问受信任的根存储中的证书的私钥.

Why trusted root store and not personal?
I have a pre-built assembly that accesses this certificate in this particular store,so simply placing the certificate in Personal store won’t do the trick for me. That’s why setting trust permissions on private keys of trusted root certificates is imperative.

我没有尝试使用受信任的根证书颁发机构,但我发现与其他证书商店最简单的做法是将证书拖放到个人存储中,然后设置权限,然后拖放回到原始证书商店.在您的情况下,受信任的根证书颁发机构.

使用证书MMC的步骤:

> Import certificate to the store you want it and mark keys as exportable.(你可以绕过这个并直接导入个人商店,但我还没试过.)
>将导入的证书拖放到个人存储中.
>右键单击个人存储中的证书,然后在上下文菜单中单击“所有任务”,然后在子菜单中单击“管理私钥”.根据您的应用程序池将相应权限设置为referenced in step 1.>设置权限后,将证书拖放回原始存储(在您的情况下为受信任的根证书颁发机构).

windows-7 – 本地计算机“受信任的根”证书的PrivateKey信任权限的更多相关文章

  1. IIS应用程序池标识与Windows帐户

    在IIS中使用内置的应用程序池标识而不是指定Windows帐户的专业人员和内容是什么?对于sqlServer,如果要使用Windows身份验证从.Net应用程序进行连接,我认为如果我使用应用程序池标识,我必须将其与sqlServer中的用户关联,或者通过db授予该应用程序池身份访问权限?

  2. Windows应用程序池在Windows 10中以32位模式失败

    在我的开发机器上,每当我将IIS应用程序池设置为以32位模式运行时,任何启动的Web应用程序都将挂起.在浏览器中访问时,应用程序将“挂起”大约5-10秒,然后才会收到503错误.应用程序的应用程序池将在此时停止,并且必须显式重新启动.在64位(默认)模式下,一切都很好,但是每当池切换到32位时,它甚至会立即挂在新的网站中的静态页面上.当以32位模式发布到我的实时服务器时,相同的应用程序运行正常,因

  3. windows-7 – 本地计算机“受信任的根”证书的PrivateKey信任权限

    我有一个证书,必须导入证书/受信任的根证书颁发机构并具有相应的私钥.要从代码实际访问密钥,您需要设置私钥权限以授予对特定IIS应用程序池的完全访问权限.我完全理解,但问题是这只能在个人证书上设置,而不是在受信任的根证书上设置.我尝试将相同的证书添加到个人商店,以下代码不会破坏:如果我将StoreName.Root更改为StoreName.My,则设置个人存储中证书的权限.我可以在那里访问它.但是我无法在root中访问它.它只是说:Keysetdoesnotexist有什么建议?

  4. .net – 在IIS 7.5中托管WCF与Windows服务的性能注意事项

    我有一个简单直接的问题:是否有任何性能优势,我不知道什么时候比较主机的IIS7.5中的WCF服务与Windows服务?

  5. .net – 使用impersonate = true时如何在IIS中获取当前应用程序池用户?

    在.net中托管的网站如何获得网站运行的当前用户.即,应用程序池用户不是访问该站点的当前用户.使用Windows集成和模拟.要在托管代码中恢复为应用池用户,您可以执行以下操作:

  6. windows-server-2008-r2 – 无法完成操作,因为该文件在IIS Worker Process中已打开

    你从哪个应用程序获得该消息?似乎应用程序本身锁定文件的可能性大于应用程序池本身.对于将来,在自己的应用程序池中运行每个站点,并考虑运行任何需要在其自己的应用程序池中与其他站点分别重新启动的应用程序.应用程序池是稳健性的单位;应用程序是一个具有逻辑但不完全分离的容器.

  7. windows-server-2003 – 如何找出哪些网站正在减慢我的服务器速度?

    有没有什么好的工具可以用来找出哪些网站是我的Windows2003Web服务器资源的最大消耗?服务器一直在慢慢爬行,我想知道哪些站点应该优先进行故障排除.在Windows上,唯一找到的好方法(我知道)是为每个站点设置一个应用程序池.默认情况下,所有内容都在默认应用程序池中一旦他们拥有自己的应用程序池,他们也有自己的进程.拥有自己的流程将向您显示哪一个正在获取任务管理器中的所有资源.祝好运.

  8. windows-server-2008 – 确定哪个应用程序池正在使用CPU /内存

    >我们有一个包含许多网站的Web服务器.>每个网站都有自己的应用程序池.>目前,所有应用程序池都使用同一域用户的标识.当其中一个站点开始使用100%的cpu时,我们无法看到哪个站点负责.一种解决方案是给每个人一个不同的身份.有没有办法确定哪个应用程序池连接到哪个站点而不给它们不同的身份?

  9. windows-server-2008 – 缺少IIS7应用程序池框架版本3.5

    我只是想在IIS7中创建一个新的应用程序池,并为其框架版本指定3.5.但是,它只有“v2.0.50727”或“无托管代码”作为框架版本下拉列表中的选项.怎么可能,我该如何解决?这是对的.只要您在盒子上安装了.net3.5,就会运行.net3.5网络应用程序.“ASP.NET3.5,它仍然基于ASP.NET2.0核心基础.因此,IIS中没有新的应用程序类型取自这里:linktext

  10. windows-7 – 是否会重新启动W3SVC Web发布服务,还会重启IIS中的应用程序池?

    背景:我试图在Windows7构建盒上停止并启动IIS,以便运行验收测试.但据我所知,大多数远程Web管理功能已被Microsoft禁用,试图销售更多WindowsServer2008许可证.仍然出于某种原因,他们没有禁用远程控制IIS的最不方便用户的方式,但它们都是一个彻头彻尾的痛苦.我可以轻松地做的是远程停止并从msbuild任务启动WWW服务.但我想确保这也会重新启动应用程序池,这样当我在新

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部