bkh*_*nal 14 .net asp.net iis-7 pfx x509certificate
我需要授予IIS用户访问pfx证书的权限.该网站在某个用户AppPoolUser下的App Pool下运行.IIS自动拥有用户名"IIS APPPOOL\AppPoolUser",这是我们在使用aspnet_regiis -ga时需要访问的内容.
但是,当我使用winhttpcertcfg来访问用户"IIS APPPOOL\AppPoolUser"时,它会显示"未找到任何帐户信息".
我使用的命令是
winhttpcertcfg -i <filename> -c <certificateLocation> - g -a <account name>
Run Code Online (Sandbox Code Playgroud)
没有在网上找到任何样品.有任何想法吗?
dst*_*stj 12
我知道这是一个老问题,但我昨天遇到了同样的问题,所以我会回答.
我有同样的问题,但有一个位于LocalMachine - > TrustedPeople商店的证书......
您必须使用icacls
而不是WinHttpCertCfg
从此链接中获取.
基本上,它应该是这样的:
ICACLS <filename> /grant "IIS AppPool\DefaultAppPool":R
Run Code Online (Sandbox Code Playgroud)
为了完成,这里我需要如何访问"受信任的人"商店.部分来自此链接.
使用Microsoft 的FindPrivateKey工具在商店中找到cert的实际文件.必须.\WF_WCF_Samples\WCF\Setup\FindPrivateKey\CS
从Windows Communication Foundation(WCF)和Windows Workflow Foundation(WF).NET Framework 4下载示例的源代码中编译此工具.
FindPrivateKey.exe TrustedPeople LocalMachine -t "<thumbprint of the SSL cert>"
Run Code Online (Sandbox Code Playgroud)icacls
在FindPrivateKey提供的文件上使用.
icacls C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\<path to certificate> /grant "IIS AppPool\<your AppPool name>":R
Run Code Online (Sandbox Code Playgroud)瞧!
对于原始帖子,您只需要将域"IIS APPPool"替换为您计算机的本地域名 - 通常与计算机名称相同.当WinHttpCertCfg运行时,它会变成<计算机名>\<AppPoolUser>到<IIS APPPOOL>\<AppPoolUser>",并授予访问certficate.如果你想与本地IIS的一个开发桌面上工作,这应该解决您的问题. ICACLS仅适用于服务器(您最终将部署到服务器).
您也可以从" mmc
证书"管理单元执行此操作.
只需右键单击相关证书,选择All Tasks -> Manage private keys...
并添加所需的用户(可能IIS APPPOOL\[your app pool]
).
我遇到了同样的问题:
WinHttpCertCfg
似乎在没有合理选择的情况下被抛弃了.FindPrivateKey
在Windows环境中编译是不合理的开销.设置证书的权限涉及授予应用程序池对cert文件的读权限.
这可以使用icacls.exe实现(Windows资源管理器安全UI不支持应用程序池):
icacls C:\ProgramData\Microsoft\crypto\rsa\machinekeys\9876abcdeblahblahblah /grant "IIS AppPool\AppPoolName:R"
Run Code Online (Sandbox Code Playgroud)
Windows存储机器密钥C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
,但文件名与证书无关.可以使用此PowerShell代码获取每个证书的文件名:
ls Cert:\LocalMachine\TrustedPeople |
select Subject,@{n='FileName';e={$_.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName}} |
Format-List
Run Code Online (Sandbox Code Playgroud)
(如果您的证书在另一家商店,请更改"TrustedPeople".)
可以从IIS管理器的"应用程序池"节点获取应用程序池的名称,也可以通过运行此PowerShell代码获取:
Import-Module WebAdministration; ls IIS:\AppPools
Run Code Online (Sandbox Code Playgroud)
此PowerShell 3脚本将使用Out-GridView(ogv)作为证书和应用程序池的GUI选择列表,然后授予权限:
ipmo WebAdministration
$cert = (ls Cert:\LocalMachine\TrustedPeople |
ogv -OutputMode Single -Title "Select Certificate").
PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName
$app = (ls IIS:\AppPools |
ogv -OutputMode Single -Title "Select App Pool").Name
icacls $env:ProgramData\Microsoft\crypto\rsa\machinekeys\$cert /grant "IIS AppPool\$($app):R"
Run Code Online (Sandbox Code Playgroud)
小智 3
安装应用程序时还会添加文档:
C:\Program Files (x86)\Windows 资源工具包\工具
以下示例显示了配置工具的一些使用方法。
此命令列出有权访问注册表 LOCAL_MACHINE 分支的“Root”证书存储中“MyCertificate”证书私钥的帐户。
winhttpcertcfg -l -c LOCAL_MACHINE\Root -s MyCertificate
Run Code Online (Sandbox Code Playgroud)
此命令授予 TESTUSER 帐户对“我的”证书存储中“MyCertificate”证书私钥的访问权限。
winhttpcertcfg -g -c LOCAL_MACHINE\My -s MyCertificate -a TESTUSER
Run Code Online (Sandbox Code Playgroud)
此命令从 PFX 文件导入证书和私钥,并将私钥访问权限扩展到另一个帐户。
winhttpcertcfg -i PFXFile -c LOCAL_MACHINE\My -a IWAM_TESTMACHINE
Run Code Online (Sandbox Code Playgroud)
此命令删除具有指定证书的 IWAM_TESTMACHINE 帐户对私钥的访问权限。
winhttpcertcfg -r -c LOCAL_MACHINE\Root -s MyCertificate -a IWAM_TESTMACHINE
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26471 次 |
最近记录: |