que estaba teniendo el mismo problema:
WinHttpCertCfg
parece haber sido abandonado sin una alternativa razonable.
- Mi Administrador de certificados no incluía una opción "Administrar claves privadas" como se menciona en this old MSDN blog post.
- Compilación
FindPrivateKey
es sobrecarga no razonable en un entorno Windows.
Establecer el permiso para un certificado implica otorgar al grupo de aplicaciones el derecho de lectura en el archivo cert.
Esto se puede lograr usando icacls.exe (la interfaz de usuario de seguridad Explorador de Windows no admite grupos de aplicaciones):
icacls C:\ProgramData\Microsoft\crypto\rsa\machinekeys\9876abcdeblahblahblah /grant "IIS AppPool\AppPoolName:R"
teclas de Windows máquina almacena en C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
, pero los nombres de los archivos no están relacionados con el certificado. El nombre de archivo para cada certificado se puede obtener utilizando el código de PowerShell:
ls Cert:\LocalMachine\TrustedPeople |
select Subject,@{n='FileName';e={$_.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName}} |
Format-List
(Change "TrustedPeople" si su certificado es en otra tienda.)
El nombre del grupo de aplicaciones se puede obtener desde el nodo Grupos de aplicaciones del Administrador de IIS, o mediante la ejecución de este código PowerShell:
Import-Module WebAdministration; ls IIS:\AppPools
Este script PowerShell 3 utilizará Out-GridView (ogv) como una lista de selección GUI para el CERT y el grupo de aplicación, a continuación, conceder el permiso:
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"
revise esto http://weblogs.asp.net/hernandl/archive/2005/02/09/WinHttpCertCfgTool.aspx Atentamente, Vivek – Vivek
Ya probé esa muestra. Mi certificado tiene acceso a muchos usuarios ahora. Pool User, domain administrator, everyone ... Parece que el dominio de aplicación se ejecuta en "LocalSystem" y no veo la manera de dar acceso a este usuario como dice la documentación, este es el usuario con acceso de administrador. – bkhanal