我正在構建一個Azure基於網站的解決方案,需要在後臺定期聯繫服務總線中繼端點。我的計劃設計方法是使用Azure WebJob作爲此後臺任務的執行引擎 - 我將Service Bus連接字符串與共享密鑰憑證一起存儲在App.config中,使用Pkcs12ProtectedConfigurationProvider將其與我的網站的自定義SSL證書進行加密,然後一切都會完美的工作!我應該如何加密Azure WebJob的App.config?
唯一的問題是,看起來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只是這項工作的錯誤工具?
哦,哇,不知何故,我從來沒有想過在WebJob的門戶中嘗試應用程序設置和連接字符串;我以爲他們只會爲網站本身工作。但它運作良好,所以我會說這回答了這個問題。但是,我還應該注意,它絕對可以爲Azure網站上傳自定義SSL證書(但除非您使用自定義域,否則不需要)。資料來源:http://azure.microsoft.com/en-us/documentation/articles/web-sites-configure-ssl-certificate/ – TinKorcim