Manejar contraseñas en la configuración de producción para la implementación automatizada

He visto preguntas relacionadas aquí, pero no parecen responder exactamente lo que necesito.

Utilizamos scripts de Powershell para implementar nuestras aplicaciones y la información como las contraseñas en los archivos de configuración para la mayoría de los entornos (UAT, etc.) están en texto plano. No es un gran problema, pero cuando se trata de PREPROD y PROD, es un gran problema. Así que teníamos algunos marcadores en la configuración como "{{prompt-password}}", que proporcionarán un cuadro de diálogo de inicio de sesión Get-Credential) y la persona que realiza la implementación puede ingresar la credencial y la implementación continúa.

Pero esto realmente no ayuda para la implementación automatizada (es decir, la implementación con un solo clic a través de herramientas como TeamCity)

¿Debo elegir cifrado asimétrico http: //msdn.microsoft.com/en-us/library/as0w18af.asp) donde la contraseña se cifra utilizando una clave pública, ingresada en la configuración y la clave privada se almacena (como se describe aquíhttp: //msdn.microsoft.com/en-us/library/tswxhw92.asp) en el "agente" (como en una VM desde donde TeamCity activará la implementación y que tiene acceso restringido) ejecutando la implementación automatizada y puede descifrar la contraseña. No es realmente fuerte en Criptografía y esas cosas, pero ¿esto suena como el camino a seguir? ¿Cualquier otra sugerencia? ¿Cómo manejan las personas dicha implementación automatizada?

Actualizar

Ok, he seguido adelante y lo implementé. He escrito una aplicación de consola en C # que usa las bibliotecas de criptografía. La aplicación genera las claves:

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

También obtengo la clave pública:

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

Entregue la clave pública a cualquier persona que tenga que cifrar la contraseña y solicite que la ingresen en la configuración. Coloque el archivo keys.kez en cualquier agente que tenga que ejecutar la implementación.

Respuestas a la pregunta(6)

Su respuesta a la pregunta