C# .pem X509Certificate2的私钥
我有一个.pem作为私钥:C# .pem X509Certificate2的私钥,c#,x509certificate,x509certificate2,C#,X509certificate,X509certificate2,我有一个.pem作为私钥: -----BEGIN RSA PRIVATE KEY----- KEY -----END RSA PRIVATE KEY----- 当我尝试转换为X509Certificate2时,出现以下错误: 找不到请求的对象 我所尝试的: static byte[] PEM(string type, byte[] data) { string pem = Encoding.ASCII.GetString(data); string header = Strin
-----BEGIN RSA PRIVATE KEY-----
KEY
-----END RSA PRIVATE KEY-----
当我尝试转换为X509Certificate2时,出现以下错误:
找不到请求的对象
我所尝试的:
static byte[] PEM(string type, byte[] data)
{
string pem = Encoding.ASCII.GetString(data);
string header = String.Format("-----BEGIN {0}-----", type);
string footer = String.Format("-----END {0}-----", type);
int start = pem.IndexOf(header) + header.Length;
int end = pem.IndexOf(footer, start);
string base64 = pem.Substring(start, (end - start));
return Convert.FromBase64String(base64);
}
static X509Certificate2 LoadCertificateFile(string filename)
{
X509Certificate2 x509 = null;
using (FileStream fs = System.IO.File.OpenRead(filename))
{
byte[] data = new byte[fs.Length];
fs.Read(data, 0, data.Length);
if (data[0] != 0x30)
{
data = PEM("RSA PRIVATE KEY", data);
}
if (data != null)
x509 = new X509Certificate2(data); //Here i get the error
}
return x509;
}
client_pk = LoadCertificateFile(@"..\private.pem");
我可以从.PFX文件导入完整的证书。我认为您可以使用OpenSSL将.PEM转换为.PFX。下面是为我加载.PFX文件而编写的代码:
SecureString secStr = new SecureString();
"<your_password>".ToCharArray().ToList().ForEach(c => secStr.AppendChar(c));
var cert = new X509Certificate2();
cert.Import("<your path to .PFX file>", secStr, X509KeyStorageFlags.Exportable);
SecureString secStr=new SecureString();
“”.tocharray().ToList().ForEach(c=>secStr.AppendChar(c));
var cert=新的X509Certificate2();
cert.Import(“”,secStr,X509keystrageFlags.Exportable);
我可以从.PFX文件导入完整的证书。我认为您可以使用OpenSSL将.PEM转换为.PFX。下面是为我加载.PFX文件而编写的代码:
SecureString secStr = new SecureString();
"<your_password>".ToCharArray().ToList().ForEach(c => secStr.AppendChar(c));
var cert = new X509Certificate2();
cert.Import("<your path to .PFX file>", secStr, X509KeyStorageFlags.Exportable);
SecureString secStr=new SecureString();
“”.tocharray().ToList().ForEach(c=>secStr.AppendChar(c));
var cert=新的X509Certificate2();
cert.Import(“”,secStr,X509keystrageFlags.Exportable);
您的文件仅为私钥。它不是证书,这就是代码失败的原因。您的文件只是私钥。它不是证书,这就是代码失败的原因。