将 OpenSSL p12 创建命令转换为 Powershell and/or .NET Core 2.0
Translating a OpenSSL p12 creation command to Powershell and/or .NET Core 2.0
在打破我的头脑之前,我想到了社区(也许这在一般情况下会有用),如何将以下内容翻译成 Powershell and/or .NET Core 2.0?
openssl pkcs12 -export -out p12file.p12 -inkey privatekeygenerateinsomeportal.pem -in clientcertificatedownloadedfromsomeportal.pem
我绝对不知道如何在 .NET Core 2.0 中做到这一点 () and I haven't yet found the appropriate Powershell spell either. It appears Windows facilities have not supported pem
format, which makes this a tad difficult (hence .NET Core 2.0 to rescue?), like extracted from How to convert a PFX to .PEM format? Or how to generate a .PEM file? Using Native/Standard Windows tool
Windows do not support PEM format
或者有一些第三方库,如图here。
它也感觉 .p12
格式中可能存在导致互操作性问题的微妙之处(例如,当结果将通过 Xamarin.Forms 和诸如此类的东西用于各种环境时)。
假设你要做的是:
- 从文件加载证书
- 从文件加载私钥
- 将它们一起保存在一个 PFX 中
那么 .NET Core 唯一无法为您轻松完成的部分就是加载私钥。如果你能弄清楚如何获取密钥(从 RSAParameters 或活动对象,或其他),你可以做
using (var cert = new X509Certificate2("cert.pem"))
using (var mated = cert.CopyWithPrivateKey(key))
{
return mated.Export(X509ContentType.Pfx, password);
}
大概File.WriteAlllBytes那个值。
CopyWithPrivateKey 是 Core 2.0 中的新增功能,需要使用 netcoreapp20
TFM 进行编译。
加载密钥文件在 .NET 的待办事项列表中:https://github.com/dotnet/corefx/issues/20414
在打破我的头脑之前,我想到了社区(也许这在一般情况下会有用),如何将以下内容翻译成 Powershell and/or .NET Core 2.0?
openssl pkcs12 -export -out p12file.p12 -inkey privatekeygenerateinsomeportal.pem -in clientcertificatedownloadedfromsomeportal.pem
我绝对不知道如何在 .NET Core 2.0 中做到这一点 (pem
format, which makes this a tad difficult (hence .NET Core 2.0 to rescue?), like extracted from How to convert a PFX to .PEM format? Or how to generate a .PEM file? Using Native/Standard Windows tool
Windows do not support PEM format
或者有一些第三方库,如图here。
它也感觉 .p12
格式中可能存在导致互操作性问题的微妙之处(例如,当结果将通过 Xamarin.Forms 和诸如此类的东西用于各种环境时)。
假设你要做的是:
- 从文件加载证书
- 从文件加载私钥
- 将它们一起保存在一个 PFX 中
那么 .NET Core 唯一无法为您轻松完成的部分就是加载私钥。如果你能弄清楚如何获取密钥(从 RSAParameters 或活动对象,或其他),你可以做
using (var cert = new X509Certificate2("cert.pem"))
using (var mated = cert.CopyWithPrivateKey(key))
{
return mated.Export(X509ContentType.Pfx, password);
}
大概File.WriteAlllBytes那个值。
CopyWithPrivateKey 是 Core 2.0 中的新增功能,需要使用 netcoreapp20
TFM 进行编译。
加载密钥文件在 .NET 的待办事项列表中:https://github.com/dotnet/corefx/issues/20414