简体   繁体   English

如何在powershell 5中加载PEM证书?

[英]How to load PEM certificate in powershell 5?

I already have pemfile with private key inside.我已经有里面有私钥的 pemfile 了。 I try to do smth like this how to get private key from PEM file?我尝试这样做如何从 PEM 文件中获取私钥? but I have stuck when create certificate object from file但是从文件创建证书对象时我卡住了

in short:简而言之:

$SourceCertificateFile= gc "E:\PSW\test.pem"
$EncCert=[Convert]::FromBase64String( ($SourceCertificate)[1..($SourceCertificate.Count -2 )] -as [string] )

New-Object   System.Security.Cryptography.X509Certificates.X509Certificate( @(, $EncCert)) #doesn`t work -Exception calling ".ctor" with "1" argument(s): object not found

New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 ($EncCert) #Cannot find an overload for "X509Certificate2" and the argument count: "1104"

[System.Security.Cryptography.X509Certificates.X509Certificate2]::new($SourceCertificateFile) #doesn`t work -Exception calling ".ctor" with "1" argument(s): object not found

$x=[System.Security.Cryptography.X509Certificates.X509Certificate2]::New()
$x.Import($EncCert) #Exception calling "Import" with "1" argument(s): object not found

I see that exist X509Certificate2Collection.ImportFromPemFile method, but I don't understand how to properly initialize constructor我看到存在 X509Certificate2Collection.ImportFromPemFile 方法,但我不明白如何正确初始化构造函数

Thanks for any suggestions感谢您的任何建议

pem files generated on linux host as在 linux 主机上生成的 pem 文件作为

openssl genrsa -out private.pem 2048

PEM File (fresh generated): PEM 文件(新生成的):

-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAxK8JzchUpUhM67QEvVKjykOuauSMN+E/pdg11gco++hOX6ix
D8MFLMwTbdYfsnoW+OIYuPysiKIaUAwWv7PIRgwKVXU69DWsd72srX3MV0CFUmq3
5Ge2fHGVLzOOuMgv2Pvv9OLEudeO6ZAELr+rA1vOq1oLrs1V8W9X0jeK+/5sXi4Z
n/iCeD8LF9IlDGELV3t/ed2nyEsIWlnnIwwfbkcPCgjnNM0XWmLGhB+YIKBgorjL
PNmNUpMkGJM3WLRCfBS9nRPBrsXCkVrR5hsXqmRsuJfA7XG2dIAEdeccfEnzhqIx
tNhmgfQ/p/18bwbjvhbB+KaxNy/xX7XMq7vdLwIDAQABAoIBAGhAp5+uGj/pzOv6
5bA8h5kEuwTp0/EisgwESLUD4pN0FWbbEc9a/fk6yumjX/XIhTizD4uuUv2xfuUD
I2PFtdh7NVcK5o7fjGWD4m2rio6NIp4G9yZYWwAnbH4yg+oqIkKPeCeDs+cV/SiM
L8tfyRPkq+1js2GacX2iGRjSXBcpXOxTYFbHi8z/miL6SYB57JPndpUgtwcVNh/P
ZrJ3eP9L8wqPJlH0vg+ZNrmE8xuNwKsyI3yBLMlf3a9icFB3tOsOZr7dxg3PuL/G
dmRCCgP8uQHvlb01h8vHO/MqdnPLE9YzwcEkKZQSQaETpGKkjwvO59PL5EY0FVdg
MNJu9tECgYEA5nyy/UxRGV7Wok9UWQWq2TUCy1KKeHmbbm5XRKSpIQm+5Wsr5YdS
ASjsbIvJPB99OZlHskOWaSvWDQXI6+BMG1vP7Ia8BH/5nawmlQWyogsVg8DrI+m3
XGt/gRKsxRNWHICqVMaOuxnJJLYQOkbOzcFq7RlmPfYR2WWjIQl3x7UCgYEA2nR0
fOylBMC2qh3P0MB0oSJ02nDgku3ZfrxgrhCQ3XmdxG8qtB0IH4U6lTNH1kKKzz63
i2MVLQFe5paCyKuu7v6jwGD2Q4uyygEUxN382UWWTEX6Si0TcOKz5wUHTa4vQVNZ
twQHPGvW7v+f5dwozc7Rn/CDWX10u3b5TadtF9MCgYEAmjSd8DhKHiZEha17ql/P
UalU6EGeIUKDSlwKiQN9oHwLuyR75wIlTF9b5reTeGU8+/dgb5UmodDRUj8nkSCs
6rT/pKj0TDJvCB2wZo28WQv/ZfoBmDJ7GhtV4D5lVyk7uLAgxb1eqzFyUNx6ePL8
085vQph2vkfO41tLzAOwnu0CgYEAvLVer0+pWUq0QI4SKC0oUs22DcD2blYizLUj
+xl6WqelHrw9MmvlyXzIV3x98Nt4l4CBA1qrPz5w4VZhUcHlErVLdXMNKNozrwZy
D4IH2xSeufK1PIBly906NTWF0pfGYHMFC/Dh41Lwz3JoiSK+6NJhCP22KYcTYKFs
yKT5u1sCgYEAzYXqnkLdeq9+rVK5dvdkqw6Zn2ZCEUhzLe+qcSaakoCmIimUjXbx
6Lspzefp78oXyS7e1BfioMLgk5dvemCDNFPp4jBu7jobiw++bSbCMhA1GPy9EN/8
atfeGFXshPzwvmE4keQRSscnlgmqeOwwBtjqGgQrJz7UcI/fyhnQWgQ=
-----END RSA PRIVATE KEY-----

Your file is an RSA private key, not a certificate.您的文件是 RSA 私钥,而不是证书。

You'd load something like that with something like你会用类似的东西加载类似的东西

using (RSA rsa = RSA.Create())
{
    rsa.ImportFromPem(File.ReadAllText("private.pem"));
    // use the key here.
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM