2015-08-03 185 views
0

我遇到了一個Azure雲服務問題,讓我有點難住。我正在開發一個與第三方REST API交互的項目,該API需要使用SSL證書對所有請求進行簽名。在開發中或在生產VM上,這是一個非問題。該證書通常安裝在適當的商店,然後可以通過指紋在磁盤上或從像這樣的嵌入式資源加載,從文件:Azure雲服務 - SSL簽名證書

_certificate = new X509Certificate2(Properties.Resources.Cert, 
       "password, X509KeyStorageFlags.MachineKeySet); 

我現在想遷移系統天青的一部分並且很難獲得證書工作。我相信這個問題是賽門鐵克尚未安裝的中間證書。到目前爲止,我已經嘗試編寫Powershell和批處理文件(即certutil),我已經編寫了C#代碼來遍歷證書鏈以及遍歷證書集合並執行各種導入,但是它們都沒有允許成功與證書打電話。

是否有人自動安裝和使用Azure雲服務中的簽名證書,如果是的話,您會介意共享該解決方案嗎?

回答

0

我所做的是在Azure Cloud服務上獲取證書文件,然後運行啓動任務(以提升模式)將證書安裝到機器存儲中。

所以,你可能需要做的是:

  1. 編寫安裝證書一個.cmd或PowerShell腳本。請確保將其與您的應用捆綁在一起(type = content,copy local = true )
  2. 確保將證書與您的應用捆綁在一起,或編寫一個powershell腳本/ cmd腳本,將證書下載到天藍色 雲服務
  3. 編寫一個調用安裝腳本的啓動任務,該腳本在機器上安裝證書。

此處的啓動任務信息:https://msdn.microsoft.com/en-us/library/azure/hh180155.aspx。注:您需要以「提升」模式運行才能安裝證書。

<Startup> 
    <Task commandLine="Startup.cmd" executionContext="elevated" taskType="simple" > 
    </Task> 
</Startup> 

裏面你Startup.cmd - 例如:

certutil -addstore -enterprise -f -v root Certificates\mycert.cer 

here服用。再次 - 確保將證書捆綁到您的主機應用程序中,或者編寫一個腳本,從某處下載證書 - 在調用certutil命令之前。

+0

Jochen, 謝謝你的幫助。我已經嘗試過這種方法,它仍然失敗,所以我進一步調試,事實證明403我回來實際上是一個403.6(阻止的IP)。該供應商稱他們已經將保留的IP列入白名單,但事實上他們沒有。你的代碼片段是做這件事的正確方法,我只需要以這種方式安裝中級證書,這非常棒。謝謝。 –