如何为Azure WebJob加密App.config ?

本文关键字:App config 加密 WebJob Azure | 更新日期: 2023-09-27 18:13:29

我正在构建一个基于Azure网站的解决方案,需要在后台定期联系服务总线中继端点。我计划的设计方法是使用Azure WebJob作为这个后台任务的执行引擎——我将我的服务总线连接字符串与共享的秘密凭证存储在App.config中,使用Pkcs12ProtectedConfigurationProvider与我的站点的自定义SSL证书加密它,一切都会完美地工作!

唯一的问题是,WebJobs似乎无法访问其包含网站的证书。我的WebJob的代码可以非常简单(但请注意,App.config的appSettings部分是加密的):

public static void Main()
{
    string connectionString = ConfigurationManager.AppSettings["Microsoft.ServiceBus.ConnectionString"];
    Console.WriteLine(connectionString);
}

如果我在本地机器上导入站点的证书并在那里运行WebJob可执行文件,一切都如预期的那样工作。但是当我上传带有二进制文件和.exe的ZIP文件时。配置文件到Azure中,作业总是失败,并出现以下错误。

[07/18/2014 22:53:24 > 621d84: ERR ] Unhandled Exception:
System.Configuration.ConfigurationErrorsException: Failed to decrypt using provider 'Pkcs12Provider'.
Error message from the provider: No certificate was found for thumbprint <My Certificate's Thumbprint>
(C:'DWASFiles'Sites'<My Site Name>'Temp'jobs'triggered'<My Job Name>'hzcfdtn5.f22'WebJob.exe.Config line
XX) ---> System.ApplicationException: No certificate was found for thumbprint <My Certificate's Thumbprint>

我猜测WebJob不能访问相应网站的证书存储是正确的吗?这将使它几乎不可能使用Pkcs12提供程序来加密我的WebJob的秘密—是否有更好的选择可用?或者WebJob只是一个错误的工具?

如何为Azure WebJob加密App.config ?

Azure网站无法使用自定义证书。

但是,您可以将连接字符串放在Azure门户网站的连接字符串部分。以下是如何阅读的详细信息:http://azure.microsoft.com/blog/2013/07/17/windows-azure-web-sites-how-application-strings-and-connection-strings-work/

虽然以上不能解决加密问题,但至少可以从AppConfig中删除CS。这就是我们对Azure WebJobs SDK的服务总线连接字符串所做的事情http://azure.microsoft.com/blog/2014/06/18/announcing-the-0-3-0-beta-preview-of-microsoft-azure-webjobs-sdk/

webjobs似乎是你想要做的正确的工具。