将预加密的配置文件部署到生产环境

2023-11-30

我们想要加密部署到服务器的所有 Web 应用程序配置文件。我们更愿意将其作为构建过程中的一个步骤,并将预加密的文件包含在 MSI 中。

这意味着我们的构建服务器(加密器)和生产服务器(解密器)需要相同的密钥。所以我现在正在尝试做一个非常基本的测试。在 MachineA 上加密 Web.Config - 在 MachineB 上解密。这是迄今为止我尝试测试的内容

在我的本地电脑上创建一个新的 RSA 密钥对容器。

aspnet_regiis -pc "MyContainer" -exp

向我和 NetworkService 用户授予 ACL 权限。

aspnet_regiis -pa "MyContainer" "MyDomain\My.Account"
aspnet_regiis -pa "MyContainer" "NT AUTHORITY\NETWORK SERVICE"

将该密钥对导出到 xml 文件

aspnet_regiis -px "MyContainer" C:\MyContainer.xml -pri

将该文件复制到另一台电脑并导入

aspnet_regiis -pi "MyContainer" C:\MyContainer.xml

授予我的同事和他的机器 NetworkService 用户对新导入文件的权限

aspnet_regiis -pa "MyContainer" "MyDomain\My.Colleague"
aspnet_regiis -pa "MyContainer" "NT AUTHORITY\NETWORK SERVICE"

接下来,我在本地计算机上创建了一个非常简单的 web.config。

<?xml version="1.0"?>
<configuration>
    <appSettings>
        <add key="SecretKey" value="ValueWeWantToHide" />
    </appSettings>
    <configProtectedData>
        <providers>
            <add name="SampleProvider"
                 type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
                 keyContainerName="MyContainer"
                 useMachineContainer="true" />
        </providers>
    </configProtectedData>
</configuration>

我可以使用命令轻松地加密和解密此处的 appSettings 部分。他们成功加密和解密,并且加密部分在加密后标记有正确的提供程序(<appSettings configProtectionProvider="RsaProtectedConfigurationProvider">)

aspnet_regiis -pef appSettings D:\testapp
and
aspnet_regiis -pdf appSettings D:\testapp

但是,当我将加密的 web.config 复制到同事的 PC 上,并尝试使用上面的命令对其进行解密时,解密失败。它给出了一个非常无用的错误

Failed to decrypt using provider 'RSAProtectedConfigurationProvider'. Error message from provider: Bad Data

现在我被困住了。我在 SO 上发现了几个类似的问题,但没有具体解决他们的问题。我是否在某个地方错过了一步。我假设my密钥设置有效,因为我可以本地加密/解密。我是否可能搞砸了关键导入或错过了同事机器上的某些步骤。任何帮助表示赞赏。


您正在使用加密/解密default您计算机上的提供商(每台计算机都不同)。

您需要指定提供商:

aspnet_regiis -pef appSettings D:\testapp -prov "SampleProvider"

在你同事的机器上:

aspnet_regiis -pdf appSettings D:\testapp
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将预加密的配置文件部署到生产环境 的相关文章

随机推荐

  • 在 CasperJS 的表单之外使用选择

    我想选择一个条目进入选择 我如何使用 CasperJS 做到这一点 您需要了解的一些信息 我无法修改页面 我的任务只是编写测试 选择标记不包含在表单中 我无法使用document querySelector MY SELECT select
  • Angular 2 节点波本错误

    ERROR in node modules css loader sourceMap false importLoaders 1 node modules postcss loader lib ident postcss sourceMap
  • 去掉标签,但保留第一个

    例如我怎样才能保留第一个img标记但剥离所有其他的 来自 HTML 字符串 example p some text img src aimage jpg alt desc width 320 height 200 img src aimag
  • iPhone 上的 Lua

    我正在尝试在 iPhone 上运行时加载 Lua 脚本 有可能这样做吗 我该如何开始使用 Lua 我找不到东西 我唯一能找到的是这应该是可能的 但我想知道如何实现 查看科罗娜SDK
  • 熊猫留在原地

    我有一个大数据框df和一个小数据框df right有 2 列a and b 我想做一个简单的左连接 查找a无需复制df 我想出了这段代码 但我不确定它有多强大 dtmp pd merge df a df right on a how lef
  • SKSpriteNode 框架偏离

    我正在尝试从 UIBezierPath 创建一个开放圆 并将其转换为 SKShapeNode 稍后将其转换为 SKSpriteNode 我遇到了一个问题 我不知道如何缩小精灵 而它的线宽没有缩小 您可以在这里查看解决方案 调整精灵大小而不缩
  • C#,Gmap.net:使用 Gmap.net 库在谷歌地图上绘制 5 个标记时生成异常

    我正在使用 Gmap net 库在谷歌地图上的三角测量算法进行计算后在特定的时间绘制标记 当我为两个标记工作时 它工作正常 但当我尝试绘制 5 个标记时 它向我显示异常 System InvalidOperationException 类型
  • Python使用key和lambda进行排序,lambda有什么作用?

    所以我有一个值列表 如下所示 values date 2015 04 15T11 15 34 val 30 val 90 date 2015 04 19T11 15 34 val 25 date 2015 04 16T11 15 34 我用
  • Pandas 循环访问数据帧列表和更改索引

    这是一个基本问题 但我想循环遍历数据帧列表 并对于每个数据帧 将索引设置为数据帧中的列之一 下面代码的问题是它没有使用新索引保存数据框 如何格式化此 For 循环 以便数据帧在 for 循环之外永久更改 谢谢 dflist df 1 df
  • Xamarin Studio 中的 java Lang UnsupportedClassVersion 错误

    当我构建项目时 出现以下错误 我该如何纠正这个问题 C Program Files x86 MSBuild Xamarin Android Xamarin Android Common targets 3 3 错误 java lang Un
  • Windows Phone 8 中的地图点击事件/鼠标按下事件?

    我正在使用 Windows Phone 模拟器 我写了一个非常简单的程序 当用户点击地图一次时在地图上绘制一个标记 然后我使用map tap事件 并获取点击的位置 如下所示 private void map Tap object sende
  • 4.1 中的 java.lang.NoClassDefFoundError 和使用 5.1.在 android studio 中使用 multidex

    三天以来我陷入了一个非常愚蠢的问题 但仍然没有运气 我使用 Parse com 进行注册和登录 我还使用 Twitter 和 Facebook 我的应用程序类 oncreate 方法 public void onCreate super o
  • MongoDB - 聚合和

    我正在尝试计算我们数据库中跟踪的总花费金额 每个订单文档包含一个字段 total price 我正在尝试使用以下代码 db orders aggregate group id null total sum total price 不幸的是
  • 角度变量生成html

    我正在尝试使用 angularJS 制作一个博客页面 在消息部分我有一个像这样的 div div class post content jsonPost message div 在变量 jsonPost message 中我得到了一个像这样
  • Mac OS X 10.9之后无法安装PIL

    我刚刚将我的 Mac 操作系统更新到 10 9 我发现我的一些 全部 Python 模块不再存在 尤其是 Image 模块 所以我尝试执行sudo pip install pil 但我收到此错误 Applications Xcode app
  • 如何使自定义控件的属性打开文件对话框?

    我有一个自定义控件 其属性保存目标计算机上存在的文件位置的名称 完整路径 确切的路径会根据目标电脑的类型而有所不同 并且通常在我将自定义控件添加到表单后立即设置 同时我仍处于项目的设计模式 以便当我的应用程序运行时 它会从以下位置获取文件名
  • 如何在 GTK 3.8 中强制刷新屏幕?

    找到了解决方案 见下文 我使用GTK 3 8gtk grid在滚动窗口中 C 代码处理大量数据并在网格中显示一些数据 GTK 在程序处理完所有数据之前不会绘制网格 添加数据时如何强制 GTK 3 刷新屏幕 I tried gtk widge
  • UIImageWriteToSavedPhotosAlbum 仅保存 10 张图像中的 5 张。为什么?

    正如标题所示 我遇到了问题 是否有任何限制 例如 每秒仅导出 3 个图像 或类似的限制 for int frameStepper 0 frameStepper lt Something frameCount frameStepper Get
  • Java - Reader 流内的动态字符串替换

    我在磁盘上有一个 文本 文件 我需要将其读入带有 Reader 对象的库中 在阅读此文件时 我想对数据执行正则表达式字符串替换 我当前的解决方案是将整个文件作为一个字符串读入内存 进行字符串替换 然后为此字符串创建一个 StringRead
  • 将预加密的配置文件部署到生产环境

    我们想要加密部署到服务器的所有 Web 应用程序配置文件 我们更愿意将其作为构建过程中的一个步骤 并将预加密的文件包含在 MSI 中 这意味着我们的构建服务器 加密器 和生产服务器 解密器 需要相同的密钥 所以我现在正在尝试做一个非常基本的