Импорт закрытого ключа из файла .keyC#

Место общения программистов C#
Ответить
Anonymous
 Импорт закрытого ключа из файла .key

Сообщение Anonymous »

Мне нужно выполнять запросы с использованием mtls, у меня есть файл .key и файл .pem, но у меня возникли проблемы с импортом файла .key. Я нашел несколько примеров того, как это сделать, но ни один из них не работает в моем случае. До «certObject» все в порядке, просто в «LoadPrivateKeyFromPem» я не смог сделать что-то работающее (из-за этого на данный момент тип возвращаемого значения пуст). к сожалению, не могу поделиться архивом, но структура моего файла .key такая:

Код: Выделить всё

-----BEGIN PRIVATE KEY-----
Some hash here
-----END PRIVATE KEY-----
Код после вызова LoadPrivateKeyFromPem. Я не уверен, правильный ли он, но я позабочусь об этом после решения этой проблемы.

Код: Выделить всё

private static X509Certificate LoadCertificate()
{
var certBasePath = Environment.GetEnvironmentVariable("CERT_BASE_PATH");
var pathEnviroment = $"{Settings.Ambiente}";
var keyPath = Path.Combine(certBasePath, pathEnviroment, "my_client.key");
var certificatePath = Path.Combine(certBasePath, pathEnviroment, "my_client.pem");

var certPem = File.ReadAllText(certificatePath);
var keyPem = File.ReadAllText(keyPath);

var certObject = LoadCertificateFromPem(certPem);
var key = LoadPrivateKeyFromPem(keyPem);

var store = new Pkcs12Store();
var certificateEntry = new X509CertificateEntry(certObject);
store.SetCertificateEntry("cert", certificateEntry);
store.SetKeyEntry("key", new AsymmetricKeyEntry(key.Private), new[] { certificateEntry });

using (var ms = new MemoryStream())
{
store.Save(ms, new char[0], new SecureRandom());
return new X509Certificate2(ms.ToArray(), "", X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
}
}

private static Org.BouncyCastle.X509.X509Certificate LoadCertificateFromPem(string pem)
{
var certReader = new PemReader(new StringReader(pem));
var certObject = certReader.ReadObject() as Org.BouncyCastle.X509.X509Certificate;

if (certObject is null)
throw new InvalidOperationException("Não foi possível converter para certificado X509 o arquivo PEM.");

return certObject;
}

private static void LoadPrivateKeyFromPem(string pem)
{
var keyReader = new PemReader(new StringReader(pem));
//Here is my trouble :(
}
Я пытался прочитать архив в нескольких разных форматах, но безуспешно, и в большинстве примеров, которые я нашел, использовалась пара ключей, и из-за этого, когда я пытался прочитать у меня ошибка, потому что у меня нет пары ключей. А опыта работы с мтлс у меня нет, поэтому надеюсь, что кто-нибудь сможет помочь. Спасибо :)

Подробнее здесь: https://stackoverflow.com/questions/786 ... m-key-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»