Como no tiene acceso al servidor, deberá ejecutar el comando para encriptar las secciones de su web.config a través del código. Puede hacer esto creando una página web simple y ejecutarla en la carga de la página o haciendo clic en un botón. A continuación se muestra el bloque de código que deberá ejecutar, solo ligeramente modificado desde la fuente que tomé de Microsoft (http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.protectsection.aspx). Aunque ... este código en realidad no funcionó para mí. No es que el código sea incorrecto, sino porque mi cuenta no tiene permiso para el almacén de claves Rsa, sus resultados pueden variar. Si esto no funciona, entonces sigue leyendo para la opción 2.
' Get the current configuration file.'
Dim config As System.Configuration.Configuration = Web.Configuration.WebConfigurationManager.OpenWebConfiguration(Nothing)
' Get the section.'
Dim section As AppSettingsSection = CType(config.GetSection("appSettings"), AppSettingsSection)
' Protect (encrypt) the section.'
section.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider")
' Save the encrypted section.'
section.SectionInformation.ForceSave = True
config.Save(ConfigurationSaveMode.Full)
Crédito: He encontrado que enlazan con el código a través de Need Encrypted connection string and stmp information in the web.config.
Opción 2: Por razones de seguridad, aún desea utilizar la clave del equipo, de modo que si alguien logra descargar su archivo web.config, no podrá descifrar su configuración. Una forma de hacerlo es codificar a mano todas las configuraciones utilizando la clave del equipo y descifrarlas cada vez que necesite usarlas, o puede almacenarlas en el caché cada vez que inicie una aplicación.
Para cifrado y descifrar un valor de clave de aplicación se puede utilizar un código como éste:
Dim encryptedString As String = Convert.ToBase64String(ProtectedData.Protect(System.Text.UTF8Encoding.UTF32.GetBytes("Testing"), Nothing, DataProtectionScope.LocalMachine))
Dim decryptedString As String = System.Text.UTF8Encoding.UTF32.GetString(ProtectedData.Unprotect(Convert.FromBase64String(encryptedString), Nothing, DataProtectionScope.LocalMachine))
Response.Write(encryptedString + " - " + decryptedString)
¿Cómo almacena la clave de una manera que permite que la aplicación utilice la contraseña sin dejar la llave en una posición insegura ? – Tyrsius
Existen algunas opciones para esto ... puede usar la clave que está en el archivo web.config (MachineKey), o puede crear su propia clave y ponerla en una opción web.config encriptada. –
@Tyrsius - Agregué algunos detalles también con las opciones solo para darle algunas ideas. –