Generare un certificato self signed da PowerShell
Negli ambienti di test può tornare utile avere un certificato self signed.
Lo si può generare con un comando PowerShell come questo:
viene aggiunto un certificato adfs.sgart.local nel certificate store LocalMachine\My.
Per vedere se il certificato è stato caricato correttamente:
oppure da mmc.exe
Il certificato può anche essere esportato per poi importarlo su un altra macchina:
Per importarlo sulla macchina di destinazione in LocalMachine\My:
Con PowerShell possiamo anche verificare quali sono i certificati in scadenza entro i prossimi 20 giorni:
oppure, cercare un certificato con un determinato thumbprint
Mentre se voglio cercare tutti i certificati scaduti in tutti gli store di LocalMachine, uso il parametro -Recurse:
Lo si può generare con un comando PowerShell come questo:
PowerShell
$dnsName= "adfs.sgart.local";
$cert = New-SelfSignedCertificate -KeyLength 2048 -NotAfter (Get-Date).AddYears(2) -certstorelocation "cert:\LocalMachine\My" -dnsname $dnsName
Per vedere se il certificato è stato caricato correttamente:
PowerShell
dir Cert:\LocalMachine\My | where-object { $_.subject -like "*$dnsName*"}
Il certificato può anche essere esportato per poi importarlo su un altra macchina:
PowerShell
#per $cert e $dnsName vedi esempio precedente
#$cert = dir Cert:\LocalMachine\My | where-object { $_.subject -eq "CN=$dnsName"}
# prima creo una password per proteggerlo
$pwdSecure = ConvertTo-SecureString -String ‘Fg5lWW@_34!1’ -Force -AsPlainText
#lo salvo nel percorso locale con nome dns e data di esportazione
$certFileName = "$pwd\$($cert.DnsNameList[0].Unicode)-$(Get-Date -Format yyyymmdd).pfx"
# recupero la posizione univoca
$certPath = $cert.PSPath
# lo esporto su file system
Export-PfxCertificate -cert $certPath -FilePath $certFileName -Password $pwdSecure
La variabile di sistema $pwd (print working directory), ritorna il percorso corrente.
Equivale all'output del comando Get-location (alias pwd)
Equivale all'output del comando Get-location (alias pwd)
Per importarlo sulla macchina di destinazione in LocalMachine\My:
PowerShell
$pwdSecure = ConvertTo-SecureString -String ‘Fg5lWW@_34!1’ -Force -AsPlainText
Import-PfxCertificate .\adfs.sgart.local-20185017.pfx -CertStoreLocation Cert:\LocalMachine\My -Password $pwdSecure
Con PowerShell possiamo anche verificare quali sono i certificati in scadenza entro i prossimi 20 giorni:
PowerShell
$dtExpire = (Get-Date).AddDays(20)
dir Cert:\LocalMachine\My\ | Where-Object {$_.NotAfter -lt $dtExpire}
PowerShell
dir Cert:\LocalMachine\My\ | Where-Object {$_.Thumbprint -eq "0BA874A0224012AA05B2D46C61D5B5E8E2A69C820"} | select *
Mentre se voglio cercare tutti i certificati scaduti in tutti gli store di LocalMachine, uso il parametro -Recurse:
PowerShell
$dtExpire = get-date
dir Cert:\LocalMachine\ -Recurse | Where-Object {$_.NotAfter -lt $dtExpire} | select Thumbprint, NotAfter, Subject, PSParentPath