Шифрование строк подключения в app.config для приложения WinForms - PullRequest
0 голосов
/ 03 декабря 2010

Я использую общий код базы данных между веб-приложением и приложением 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

1 Ответ

0 голосов
/ 06 декабря 2010

Я наткнулся на ответ, когда развернул приложение в своем локальном IIS, и получил ошибку «Не удалось расшифровать с помощью поставщика« CustomProvider ». Сообщение об ошибке от поставщика: набор ключей не существует»

Возникла проблема с правами доступа с закрытым ключом, решаемая с помощью этой статьи:

CryptographicException «Набор ключей не существует», но только через WCF

В статье приведен ряд возможных причин, одна из которых, которая исправила мою проблему, заключалась в исправлении разрешений в «Управление личными ключами» из оснастки «Сертификаты MMC» (см. Ссылку, шаги хорошо изложены).

...