Hi,
I'm trying to format a PEM certificate into one line so I can use it in a JSON request to replace Horizon UAG certs.
So instead of:
-----BEGIN CERTIFICATE-----
MIIF3DCCBMSgAwIBAgISBCkuTZLrEXMdLGqMq4wmzVgvMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xOTExMTMwMDIwMjhaFw0y
MDAyMTEwMDIwMjhaMB4xHDAaBgNVBAMTE3ZkaS5ob2JiaXRjbG91ZC5jb20wggGi
MA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK
I get:
-----BEGIN CERTIFICATE-----\nMIIF3DCCBMSgAwIBAgISBCkuTZLrEXMdLGqMq4wmzVgvMA0GCSqGSIb3DQEBCwUA\nMEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD\nExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xOTExMTMwMDIwMjhaFw0y\nMDAyMTEwMDIwMjhaMB4xHDAaBgNVBAMTE3ZkaS5ob2JiaXRjbG91ZC5jb20wggGi\nMA
(notice the "\n" that embedded).
I can do it in Awk using:
awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' cert-name.pem
However, I need to achieve the same in PowerCLI.
I'm trying variations of
$cert = (Get-Content vdi.hobbitcloud.com-chain.pem' | Out-String) -replace "`r?`n(?!`r?`n)"
But can't seem to manage it.
Does anyone have any ideas on what I need to use?
Many thanks,
-Mark
Not 100% sure what exactly you want to do, but I guess the following should come close.
It creates and reads a multi-line .pem file.
And then converts the data to a single string, replacing <CR><LF> with '\n'.
-----BEGIN CERTIFICATE-----
MIICMzCCAZygAwIBAgIJALiPnVsvq8dsMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV
BAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNVBAcTA2ZvbzEMMAoGA1UEChMDZm9v
MQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2ZvbzAeFw0xMzAzMTkxNTQwMTlaFw0x
ODAzMTgxNTQwMTlaMFMxCzAJBgNVBAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNV
BAcTA2ZvbzEMMAoGA1UEChMDZm9vMQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2Zv
bzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzdGfxi9CNbMf1UUcvDQh7MYB
OveIHyc0E0KIbhjK5FkCBU4CiZrbfHagaW7ZEcN0tt3EvpbOMxxc/ZQU2WN/s/wP
xph0pSfsfFsTKM4RhTWD2v4fgk+xZiKd1p0+L4hTtpwnEw0uXRVd0ki6muwV5y/P
+5FHUeldq+pgTcgzuK8CAwEAAaMPMA0wCwYDVR0PBAQDAgLkMA0GCSqGSIb3DQEB
BQUAA4GBAJiDAAtY0mQQeuxWdzLRzXmjvdSuL9GoyT3BF/jSnpxz5/58dba8pWen
v3pj4P3w5DoOso0rzkZy2jEsEitlVM2mLSbQpMM+MUVQCQoiG6W9xuCFuxSrwPIS
pAqEAuV4DNoxQKKWmhVv+J0ptMWD25Pnpxeq5sXzghfJnslJlQND
-----END CERTIFICATE-----
'@
$data | Set-Content -Path .\test.pem
$dataRead = Get-Content -Path .\test.pem -Raw
$single = $dataRead.Replace("`r`n",'\n')
$single | Set-Content -Path .\out.txt
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Not 100% sure what exactly you want to do, but I guess the following should come close.
It creates and reads a multi-line .pem file.
And then converts the data to a single string, replacing <CR><LF> with '\n'.
-----BEGIN CERTIFICATE-----
MIICMzCCAZygAwIBAgIJALiPnVsvq8dsMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV
BAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNVBAcTA2ZvbzEMMAoGA1UEChMDZm9v
MQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2ZvbzAeFw0xMzAzMTkxNTQwMTlaFw0x
ODAzMTgxNTQwMTlaMFMxCzAJBgNVBAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNV
BAcTA2ZvbzEMMAoGA1UEChMDZm9vMQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2Zv
bzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzdGfxi9CNbMf1UUcvDQh7MYB
OveIHyc0E0KIbhjK5FkCBU4CiZrbfHagaW7ZEcN0tt3EvpbOMxxc/ZQU2WN/s/wP
xph0pSfsfFsTKM4RhTWD2v4fgk+xZiKd1p0+L4hTtpwnEw0uXRVd0ki6muwV5y/P
+5FHUeldq+pgTcgzuK8CAwEAAaMPMA0wCwYDVR0PBAQDAgLkMA0GCSqGSIb3DQEB
BQUAA4GBAJiDAAtY0mQQeuxWdzLRzXmjvdSuL9GoyT3BF/jSnpxz5/58dba8pWen
v3pj4P3w5DoOso0rzkZy2jEsEitlVM2mLSbQpMM+MUVQCQoiG6W9xuCFuxSrwPIS
pAqEAuV4DNoxQKKWmhVv+J0ptMWD25Pnpxeq5sXzghfJnslJlQND
-----END CERTIFICATE-----
'@
$data | Set-Content -Path .\test.pem
$dataRead = Get-Content -Path .\test.pem -Raw
$single = $dataRead.Replace("`r`n",'\n')
$single | Set-Content -Path .\out.txt
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Hey Luc!
I should probably have put this link in:
Convert Certificate Files to One-Line PEM Format
Thanks, I’ll give that a try and report back!
-Mark
Thanks Luc, (unsurprisingly) your answer is correct and exactly what I needed 🙂
Many thanks,
-Mark
You're welcome :smileygrin:
Working while honeymooning?!?
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
No rest for the wicked