Защитите файлы ключей защиты данных с помощью сертификата на ASP .NET Core 2 и Linux - PullRequest
0 голосов
/ 06 сентября 2018

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

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

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

1 Ответ

0 голосов
/ 01 октября 2018

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

...