I have a PowerShell script that installs a pfx certificate in LocalMachine's certificate store. The function is as follows:
function Add-Certificate { param ( [Parameter(Position=1, Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$pfxPath, [Parameter(Position=2, Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$pfxPassword ) Write-Host "Installing certificate" -ForegroundColor Yellow try { $pfxcert = new-object system.security.cryptography.x509certificates.x509certificate2 $pfxcert.Import($pfxPath, $pfxPassword, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]"PersistKeySet") $store = new-object system.security.cryptography.X509Certificates.X509Store -argumentlist "MY", LocalMachine $store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]"ReadWrite"); $store.Add($pfxcert); $store.Close(); return $pfxcert } catch { throw } }
When I open the certificate manager to verify the installation, I see that it installed correctly.
The next step in my process is to assign permissions to the service account certificate.
function Set-CertificatePermission { param ( [Parameter(Position=1, Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$pfxThumbPrint, [Parameter(Position=2, Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$serviceAccount ) $cert = Get-ChildItem -Path cert:\LocalMachine\My | Where-Object -FilterScript { $PSItem.ThumbPrint -eq $pfxThumbPrint; };
This feature does not work. In particular, this function does not work when trying to evaluate the Get-Acl command with the following error: Get-Acl: Cannot find the path 'C: \ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys \ 59f1e969a4f7e5de90224f68bc9be536_1d508f5e-0cbc-4eca- a402-3b
As it turned out, the key file was installed in my roaming profile C: \ Users \ MyUserName \ AppData \ Roaming \ Microsoft \ Crypto \ RSA \ S-1-5-21-1259098847-1967870486-1845911597 -155499
I am sure that something is wrong with the Add-Certificate function, but I can not understand what it is. How to make it install the key file in the directory C: \ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys?
powershell permissions pfx
stephenl
source share