我正在构建一个基于 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.config 文件的 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 只是这个工作的错误工具?