gpt4 book ai didi

powershell - 将base64字符串转换为X509证书

转载 作者:行者123 更新时间:2023-12-03 00:17:42 25 4
gpt4 key购买 nike

我使用PowerShell,到目前为止,我已经弄清楚了如何获取X509证书平面文件,例如Cert.cer并将其协调为Base64字符串进行存储(例如在数据库中以字符串等形式),然后将其再次转换回System.Security.Cryptography.X509Certificates.X509Certificate2对象

到目前为止,请参阅下面的代码:

$CertifcateFileFullPath = "C:\temp\cert.cer"
$Cert = new-object security.cryptography.x509certificates.x509certificate2 -ArgumentList $CertifcateFileFullPath

$Obj2 = [System.Convert]::ToBase64String($Cert.RawData)

$Obj3 = [System.Security.Cryptography.X509Certificates.X509Certificate2]([System.Convert]::FromBase64String($Obj2))

现在,我想将对象 $obj3作为平面文件(例如Cert.cer)写回到文件系统,该文件可以读取/用作原始证书。

如果我使用|输出文件C:\ Temp2 \ Cert.cer等...我得到的文件比原始文件大得多并且不可读(例如,不能作为普通证书文件打开)。我认为将对象写到文件系统时是编码问题(我相信证书文件是ASN 1编码的二进制文件)

最佳答案

问题在于,默认情况下PewrShell是Unicode,而CryptoAPI解码器需要ASCII编码(其中每个字符使用一个字节进行编码)。为此,请将-Encoding ASCII参数添加到Out-File cmdlet。

顺便说一句,不需要以二进制格式存储证书文件。 CryptoAPI支持Base64格式的证书文件。由于.NET依赖于CryptoAPI,因此不会出现兼容性问题。

关于powershell - 将base64字符串转换为X509证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30237307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com