【发布时间】:2026-01-14 19:40:01
【问题描述】:
我正在根据给定的证书数据和密钥数据创建自己的 pkcs12 证书。关键数据是一个 base64 编码的字符串。是pkcs1格式的。
byte[] keyData = null;
byte[] certData = null;
if (!string.IsNullOrWhiteSpace(clientCertificateKeyData))
{
keyData = Convert.FromBase64String(clientCertificateKeyData);
}
if (!string.IsNullOrWhiteSpace(clientCertificateData))
{
certData = Convert.FromBase64String(clientCertificateData);
}
object key;
using (var reader = new StreamReader(new MemoryStream(keyData)))
{
key = new PemReader(reader).ReadObject();
var keyPair = key as AsymmetricCipherKeyPair;
if (keyPair != null)
{
key = keyPair.Private;
}
}
var rsaPrivateKeyParams = (RsaPrivateCrtKeyParameters)key;
var rsaParameters = DotNetUtilities.ToRSAParameters(rsaPrivateKeyParams);
var cspParams = new CspParameters
{
KeyContainerName = Guid.NewGuid().ToString(),
KeyNumber = (int)KeyNumber.Exchange,
Flags = CspProviderFlags.NoFlags
};
RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(cspParams);
rsaKey.ImportParameters(rsaParameters);
X509Certificate2 certificate = new X509Certificate2(certData);
certificate.PrivateKey = rsaKey;
var base64Cert = Convert.ToBase64String(certificate.Export(X509ContentType.Pkcs12));
return base64Cert;
我正在创建一个导入 RsaParameters 的 RSACryptoServiceProvider(第 131 行),然后将其分配给证书的私钥(第 135 行)。我目前正在使用 DotNetUtilities 创建 RsaParameters(第 122 行)。 我想知道是否有任何方法可以使用 .NET 库将 keyData 转换为 RsaParameters。 AsymmetricCipherKeyPair、RsaPrivateCrtKeyParameters 和 DotNetUtilities 来自 Bouncy castle 而 RSACryptoServiceProvider 和 RsaParameters 是 .Net 类。
【问题讨论】:
标签: .net ssl-certificate rsa