将Aspnet_regiis加密存储在外部配置文件中的连接字符串信息

本文关键字:配置文件 连接 信息 字符串 外部 Aspnet regiis 加密 存储 | 更新日期: 2023-09-27 18:36:30

现在我们需要一个安全的地方来放置我们的连接字符串。我们希望将这些连接字符串放在独立于 Web.config 的外部文件中,以便于部署,但为了安全起见,我们也希望对其中的信息进行加密。

有没有办法使用 Aspnet_regiis 工具完成此操作?我了解如何使用它来加密 Web.config 文件中的部分,我们喜欢使用此方法加密意味着在使用站点时自动为我们进行解密。但我发现的关于这个主题的信息似乎相互矛盾。

使用aspnet_regiis加密 ASP.NET 中的自定义配置部分这个指向另一个问题的链接似乎表明,我所要做的就是像往常一样设置外部配置文件,将敏感的连接字符串信息放在其中,然后正常运行Aspnet_regiis工具,外部文件将被加密。

http://www.velocityreviews.com/forums/t722875-encrypting-external-config-section.html但是,该链接中的响应指出Aspnet_regiis不能用于加密外部部分。

那么这能做到吗,如果不能,以编程方式完成所有这些是唯一的方法吗?

将Aspnet_regiis加密存储在外部配置文件中的连接字符串信息

我自己刚刚尝试过这个,我可以确认Aspnet_regiis工具确实会加密存储在外部配置文件中的连接字符串。在 Web.config 文件中,我使用 "configSource" 属性引用了外部定义的连接字符串,并在运行该工具后对其进行了加密。

可以使用

C# 加密连接字符串

ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
                configMap.ExeConfigFilename = modulePath + "Web.Release.config";
                System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
                System.Configuration.ConfigurationSection section = config.GetSection("connectionStrings");
                if (!section.SectionInformation.IsProtected)
                {
                                   section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
                    config.Save();
                }