Skip to main content

How to import an SSL certificate file into the local machine's root certificate store.

# To import an SSL certificate file into the local machine's root certificate store:
Import-Certificate -FilePath C:\path\to\certificate.crt -CertStoreLocation Cert:\LocalMachine\Root

#
# Working Example (NOTE: Requires Windows 8+, Windows Server 2012+)
# ----------------------------------------------------------------------------

function Write-Info
{
    param([string] $message)

    Write-Host "$message" -ForegroundColor Cyan
}

function Write-Success
{
    param([string] $message)

    Write-Host "$message" -ForegroundColor Green
}

function Write-Err
{
    param([string] $message)

    Write-Error "$message" -ForegroundColor Red
}

function Import-Intermediate-Cert
{
    param([string] $certpath)

    $fileBaseName = [System.IO.Path]::GetFileName($certpath)

    Write-Info "> Importing '$fileBaseName' into 'LocalMachine' 'Intermediate Certification Authorities' Store"

    Import-Certificate -FilePath "$certpath" -CertStoreLocation Cert:\LocalMachine\CA

    Write-Host "Done."
    Write-Host
}

function Import-Root-Cert
{
    param([string] $certpath)

    $fileBaseName = [System.IO.Path]::GetFileName($certpath)

    Write-Info "> Importing '$fileBaseName' into 'LocalMachine' 'Trusted Root Certification Authorities' Store"

    Import-Certificate -FilePath "$certpath" -CertStoreLocation Cert:\LocalMachine\Root

    Write-Host "Done."
    Write-Host
}

function Main
{
    $baseDir = Split-Path $script:MyInvocation.MyCommand.Path

    # Import DEV Chain
    Import-Intermediate-Cert "$baseDir\certs\dev\Dev_Issuing.cer"
    Import-Root-Cert "$baseDir\certs\dev\Dev_Root.cer"

    #Import QA Chain
    Import-Intermediate-Cert "$baseDir\certs\qa\Qa_Issuing.cer"
    Import-Root-Cert "$baseDir\certs\qa\Qa_Root.cer"

    if ($? -eq $true)
    {
        Write-Success "Finished."
    }
    else
    {
        Write-Err "Finished (with errors)."
    }
}

Main