【问题标题】:Managing deployment of encrypted connection string (IIS)管理加密连接字符串 (IIS) 的部署
【发布时间】:2013-01-14 13:05:37
【问题描述】:

我已经在我的电脑里跑了

aspnet_regiis -pe "connectionStrings" -app "/MyApp" -site "MySite"

它在 web config 中创建了一个加密的 xml 元素

现在每次我将我的应用程序部署到新环境时
web.config 正在“web 转换”为新的 web.config,然后进行部署。
我了解每台机器的加密都是唯一的。 我试图复制加密的值,但它没有用。

  1. 是否需要在每次部署时以及在每台计算机上运行“aspnet_regiis -pe...”命令?
    有更好的做法吗?
  2. 我的计算机在加密中使用的唯一密钥是什么/在哪里?
    我是否需要保护它以防潜在的攻击?
    谢谢。

【问题讨论】:

    标签: security iis encryption iis-7 connection-string


    【解决方案1】:

    1) 是的,我建议将未加密的 web.config 文件部署到新服务器,然后在“部署过程”中运行您的加密命令。

    2) 操作系统和框架应该已经为您保护了默认加密密钥。您可以通过以下链接了解有关所有这些内部结构的更多信息:

    http://msdn.microsoft.com/en-us/library/dtkwfdky%28v=vs.100%29.aspx

    “本演练使用在 Machine.config 文件中指定并命名为“RsaProtectedConfigurationProvider”的默认 RsaProtectedConfigurationProvider 提供程序。默认 RsaProtectedConfigurationProvider 提供程序使用的 RSA 密钥容器名为“NetFrameworkConfigurationKey”。” em>

    请记住,用于加密/解密 web.config 文件的密钥不是机器密钥(它是单独的)。但是,如果您要部署到网络场,您还需要确保机器密钥是一致的,否则您会看到出现奇怪的错误。

    【讨论】:

    • 1.谢谢。我想到了在我的部署服务器中使用一个签名密钥的可能性。然后用它签署所有已部署的环境,并使用二进制文件发布密钥。
    • 2.运行加密命令的进程是谁?
    • 不确定我是否遵循 1。每个服务器可能会有不同的密钥(这很好)。您只需将带有 web.config(未加密)的 Web 应用程序复制到服务器并在 IIS 中进行设置,然后运行 ​​aspnet_regiis 命令来加密您喜欢的 web.config 的任何部分。您将在每台服务器上运行它,这只是部署应用程序过程中的另一个步骤。 2..您需要以可以读取密钥的身份运行加密命令,以便管理员启动。上面的链接还描述了如何授予对其他身份的读取权限。
    • 此线程对您的问题进行了更多讨论,听起来您最感兴趣的是“网络农场中的 web.config 加密”。 stackoverflow.com/questions/7998666/…
    • @CarlosMagnoRosa - 是的,你应该能够做到这一点。只要您不触摸文件的加密部分,就可以了。
    猜你喜欢
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多