Создание доверенного самоподписанного сертификата в консольном приложении .NetCore - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь создать доверенный самозаверяющий сертификат для localhost. Этот сертификат будет использоваться для Self Hosted Web API внутри консольного приложения. В соответствии с требованиями этого проекта, соединение localhost должно быть доверенным, и приложение будет установлено на клиентских ПК, что означает, что сертификат должен быть сгенерирован программно.

Мне удалось сделать это правильно в .Net Framework, и все, кажется, работает на 100%, но как только я переместил его в .NetCore, я попал в стену. Я совсем новичок в .NetCore, поэтому мои знания очень ограничены.

Я использую Bouncy Castle для генерации сертификатов, но по какой-то причине, когда я пытаюсь назначить закрытый ключ для самозаверяющего сертификата в .NetCore, я получаю «System.PlatformNotSupportedException:« Операция на этом не поддерживается Платформа." исключение. Это исключение возникает, когда я пытаюсь преобразовать RsaPrivateCrtKeyParameters в PrivateKey , используя " DotNetUtilities.ToRSA (rsaparams) ".

Я следовал за точным ответом по этой ссылке " Создание самозаверяющего сертификата на лету ".

Поскольку мои знания в .NetCore очень ограничены, было бы очень признательно, если бы кто-то указал мне правильное направление.

1 Ответ

0 голосов
/ 12 ноября 2018

Конкретная проблема заключается в том, что .NET Core не поддерживает установщик для cert.PrivateKey.

Ближайший аналог - cert.CopyWithPrivateKey, но код другой. Вместо

cert.PrivateKey = key;
return cert;

тебе нужно что-то похожее на

return cert.CopyWithPrivateKey(key);

, поскольку CopyWithPrivateKey создает новый объект X509Certificate2, оставляя целевой объект без изменений.

FWIW, теперь вы можете выполнить создание сертификата полностью без дополнительных зависимостей, как показано в Генерация и подпись запроса сертификата с использованием чистого .net Framework .

...