http://halr9000.com/article/531

ел похожие вопросы здесь, но они, кажется, не отвечают точно, что мне нужно.

Мы используем сценарии Powershell для развертывания наших приложений, а информация, такая как пароли, в файлах конфигурации для большинства сред (UAT и т. Д.) В виде простого текста. Это не большая проблема, но когда дело доходит до PREPROD и PROD, это большая проблема. Таким образом, у нас были некоторые маркеры в конфигурации, такие как «{{prompt-password}}», которые будут давать диалог входа в систему (Get-Credential) и лицо, выполняющее развертывание, может ввести учетные данные, и развертывание продолжается.

Но это не очень помогает для автоматического развертывания (то есть развертывание в один клик с помощью таких инструментов, как TeamCity)

Должен ли я пойти на асимметричное шифрование (http://msdn.microsoft.com/en-us/library/as0w18af.aspx ) где пароль зашифрован с использованием открытого ключа, введен в конфигурации и хранится закрытый ключ (как описано здесьhttp://msdn.microsoft.com/en-us/library/tswxhw92.aspx ) в «агенте» (как в виртуальной машине, откуда TeamCity инициирует развертывание и имеет ограниченный доступ), запускающей автоматическое развертывание, и она может расшифровать пароль? Не очень сильны в криптографии и прочем, но похоже ли это на путь? Любые другие предложения? Как люди справляются с таким автоматическим развертыванием?

Обновить:

Хорошо, я пошел вперед и реализовал это. Я написал консольное приложение на C #, которое использует библиотеки Crypography. Приложение генерирует ключи:

RSACryptoServiceProvider rsa = GetRsa(containerName);
File.WriteAllText("keys.kez",rsa.ToXmlString(true));

Я также выхожу из открытого ключа:

File.WriteAllText("public.pke", rsa.ToXmlString(false));

Дайте открытый ключ любому, кто должен зашифровать пароль, и попросите его ввести пароль в конфигурации. Поместите файл keys.kez в любой агент, который должен запустить развертывание.

Ответы на вопрос(6)

Ваш ответ на вопрос