Sitecore developers often use PowerShell to create new self signed certificates in their work. New-SelfSignedCertificate and Export-PfxCertificate worked great in PowerShell 5.1, but PowerShell 7 has an open issue making it difficult. Fortunately, there is a workaround. Merging this into a snippet from Mihály Árvai gives us the following code:
Import-Module PKI -UseWindowsPowerShell
$session = Get-PSSession -Name WinPSCompatSession
$secPw = Read-Host -Prompt "Enter password" -AsSecureString
$pfxPath = '.\SitecoreIdentityTokenSigning.pfx'
$outPath = '.\secrets\sitecore-identitycertificate.txt'
Invoke-Command $session {
$cert = New-SelfSignedCertificate -DnsName "localhost" `
-FriendlyName "Sitecore Identity Token Signing" `
-NotAfter (Get-Date).AddYears(5) `
-KeyExportPolicy 'Exportable'
Export-PfxCertificate -Cert $cert `
-Path $pfxPath `
-Password $using:SecPw | Out-Null
}
[System.Convert]::ToBase64String(
[System.IO.File]::ReadAllBytes(
(Get-Item $pfxPath))
) | Out-File -Encoding ascii `
-NoNewline `
-Confirm `
-Path $outPath