Прежде всего, я рекомендую вам хранить сертификат в хранилище сертификатов с закрытым ключом, сохраненным как не экспортируемый. Теперь несколько аргументов.
Существуют различные способы сохранить на машине личный секрет или другую личную информацию. Самый старый способ - API LsaStorePrivateData
и LsaRetrievePrivateData
(см. http://msdn.microsoft.com/en-us/library/ms721818%28VS.85%29.aspx).. Он имеет ограничение на количество секретов, но все секреты можно разделить на локальные, глобальные и машинные.
Следующим способом является использование DPAPI (см. http://msdn.microsoft.com/en-us/library/ms995355.aspx): CryptProtectData
и CryptUnprotectData
в нашем случае.
Я добавляю ссылки на эти два способа, потому что вы хотите сравнить различные возможные способы, чтобы убедиться, что ваш путь лучше всего подходит для вашей задачи.
Я думаю, что самый важный вопрос, который вы должны задать, - это лучший способ защитить мой закрытый ключ? Я думаю, вам следует выбрать способ, который защитит ваш ключ для копирования . Поэтому я рекомендую вам использовать хранилище сертификатов. В хранилище сертификатов вы можете хранить закрытый ключ с пометкой не экспортируемый . Это главное преимущество на мой взгляд. Вы можете развернуть сертификат с соответствующим закрытым ключом различными способами. Убедитесь, что сохраненный на машине закрытый ключ не помечен как экспортируемый .
Использование файла PFX на диске не дает вам этого преимущества. Кроме того, либо ваш PFX не зашифрован, либо вы получаете проблему , в которой вам нужно сохранить пароль в файл PFX . Поэтому вы должны использовать DPAPI (CryptProtectData
и CryptUnprotectData
) или LSA API (LsaStorePrivateData
и LsaRetrievePrivateData
), и пароль можно экспортировать.