Защитите файлы ключей защиты данных с помощью сертификата в ASP .NET Core 2 и Linux.

Я пытаюсь защитить неактивные ключи с помощью метода ProtectKeysWithCertificate, но у меня возникают некоторые проблемы, когда код работает в Linux (RHEL7). Если я использую метод ProtectKeysWithCertificate("thumbprint"), он не может найти сертификат в папке /etc/ssl/certs. Поэтому я попытался выполнить поиск Local Machine\Root в Linux и самостоятельно загрузить сертификат X509 из хранилища сертификатов с помощью метода ProtectKeysWithCertificate(). Это загружает сертификат для шифрования, но ничего не может расшифровать (я получаю сообщение об ошибке «Невозможно получить ключ расшифровки») и просто создает новые файлы ключей каждый раз при перезапуске службы.

Единственный способ защитить хранящиеся ключи данных в Linux — это использовать PFX-файл и указать свой собственный пароль, но это означает, что мне нужно где-то хранить пароль в виде открытого текста, чего я действительно не хочу делать.

Будем очень признательны за любую помощь в этом или в том, как заставить его работать в Linux!


person Eric    schedule 06.09.2018    source источник


Ответы (1)


Я опубликую свой ответ на случай, если кто-то ищет что-то подобное в Linux. Чтобы загрузить сертификат X509 с закрытым ключом, мне пришлось использовать библиотеку .NET Core Bouncy Castle для чтения закрытого ключа и получения объекта RSACryptoServiceProvider. Получив открытый сертификат и файл закрытого ключа, я использовал метод .NET Core CopyWithPrivateKey(csp), чтобы получить копию сертификата X509 с закрытым ключом, который затем был совместим с методом ProtectKeysWithCertificate().

person Eric    schedule 01.10.2018