2014-07-18 55 views
1

我正在構建一個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只是這項工作的錯誤工具?

回答

1

Azure WebSites AFAIK不能使用自定義證書。

但是,您可以將連接字符串放入Azure門戶網站的連接字符串部分。以下是有關如何閱讀後的詳細信息:http://azure.microsoft.com/blog/2013/07/17/windows-azure-web-sites-how-application-strings-and-connection-strings-work/

儘管上述方法不能解決加密問題,但它至少會將CS從AppConfig中刪除。這就是我們用Azure Web服務總線連接字符串所做的工作。WebJobs SDK http://azure.microsoft.com/blog/2014/06/18/announcing-the-0-3-0-beta-preview-of-microsoft-azure-webjobs-sdk/

Webjobs似乎是您嘗試執行的正確工具。

+0

哦,哇,不知何故,我從來沒有想過在WebJob的門戶中嘗試應用程序設置和連接字符串;我以爲他們只會爲網站本身工作。但它運作良好,所以我會說這回答了這個問題。但是,我還應該注意,它絕對可以爲Azure網站上傳自定義SSL證書(但除非您使用自定義域,否則不需要)。資料來源:http://azure.microsoft.com/en-us/documentation/articles/web-sites-configure-ssl-certificate/ – TinKorcim

相關問題