Я использую общий код базы данных между веб-приложением и приложением WinForms.Я исследовал и разработал, как зашифровать раздел строк подключения файла web.config и app.config.Эта часть в порядке.Я также определил, как расшифровывать строки подключения в моем веб-приложении Azure, это нормально.Я также могу прочитать строки подключения в своем приложении WinForms после загрузки файла .pfx в хранилище сертификатов компьютера, но после перезагрузки происходит сбой, поскольку не удается найти закрытый ключ в файле pfx.
Я использую сертификат, созданный с помощью этих команд:
makecert -r -pe -n "CN = myconfig" -sky exchange "myconfig.cer" -sv "myconfig.pvk"
pvk2pfx-pvk "myconfig.pvk" -spc "myconfig.cer" -pfx "myconfig.pfx" -pi
Это дает мне 3 файла: myconfig.pvk, myconfig.cer, myconfig.pfx
Я предполагаю, что проблема в том, что закрытый ключ не хранится в файле pfx и должен проходить повторную аутентификацию каждый раз после перезагрузки, но я не знаю достаточно о шифровании, чтобы знать, как это сделать.Кроме того, приложение WinForms предназначено для очень ограниченного распространения на управляемые машины, поэтому я бы хотел установить каждый сертификат вручную.
Я новичок в шифровании и застрял.Могу ли я загрузить файл .pfx на компьютер, ввести закрытый ключ (который я знаю, но не скажу пользователю) и сохранить его постоянно?Я что-то упустил - есть другой файл сертификата, который я должен установить, или способ его создания?Я не хочу оставлять закрытый ключ доступным.Если кто-то украдет app.config, я не хочу, чтобы он мог его расшифровать.
Примечание. Я читал о RsaProtectedConfigurationProvider и DPAPIProtectedConfigurationProvider.Я решил использовать PKCS12ProtectedConfigurationProvider, поскольку он работает с Azure, ref: http://blogs.msdn.com/b/sqlazure/archive/2010/09/07/10058942.aspx