Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline VitalyKrasovsky  
#1 Оставлено : 23 июля 2025 г. 17:29:47(UTC)
VitalyKrasovsky

Статус: Новичок

Группы: Участники
Зарегистрирован: 16.11.2022(UTC)
Сообщений: 3

Коллеги, подскажите как наиболее правильно с точки зрения безопасности организовать хранение пароля от сертификата, чтобы в дальнейшем его можно было передать в SecureString, установить пароль к сертификату и автоматизировано подписывать большое число XML-файлов.

Делаю интеграцию с ГИС ЖКХ на C#. Соответственно отправляется в ГИС большое количество XML'ок, которые должны быть подписаны сертификатом. Для подписи под Windows использую КриптоПро .NET и его SDK. Процесс подписи выглядит примерно следующим образом:
1. На компьютере установлен КриптоПро CSP, КриптоПро .NET и SDK, сертификат добавлен в хранилище локального компьютера с паролем.
2. Подготавливаются XML'ки на подпись.
3. Из хранилища локального компьютера получаю сертификат.
4. Затем формирую SecureString примерно следующим методом:
Код:

protected static SecureString GetSecureString(string pkPwd)
{
    var secureString = new SecureString();
    foreach (var ch in pkPwd)
        secureString.AppendChar(ch);

    return secureString;
}

5. Далее задаю пароль сертификату, скармливая SecureString в provider.SetContainerPassword.
6. Далее для каждой xml вычисляется подпись с помощью SignedXml.

Проблема в том, что для получения SecureString нужно пароль сертификата передавать в незашифрованном виде, а соответственно и хранить его где-то в конфиге также в незашифрованном виде. Я пробовал не задавать пароль сертификата при добавлении его в систему, но тогда при каждой попытке вычисления подписи xml вылетает окошко КриптоПро с просьбой ввести пароль, что недопустимо при автоматизированной подписи большого количества xml. Также пробовал установить галочку "запомнить пароль" при добавлении его в систему, но в таком случае подпись вообще перестает работать по какой-то причине и окно криптопро не вылезает. Единственный нормально рабочий вариант - хранить пароль, преобразовывать в SecureString и задавать его через SetContainerPassword. В таком случае с помощью одного инстанса сертификата можно подписать большое количество xml.

Подскажите пожалуйста, каким способом можно организовать хранение пароля от сертификата, чтобы он не хранился в открытом виде, но при этом его можно было задать через SetContainerPassword. Или может быть существуют какие-то другие способы задать пароль сертификата?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.