2011-04-28 27 views
5

我有一個託管在Windows Azure中的Web應用程序。我們希望將SSL用於生產部署,並且我們爲該域提供了一個自定義域名和SSL證書,並且所有這些都在生產環境中正確設置並正常運行。Azure - 在分段部署中處理SSL

Web角色目前同時具有HTTP和HTTPS終結點,但我們想禁用HTTP端點,只是使用HTTPS生產。

如果我們刪除HTTP端點,我的問題是:什麼是對付HTTPS端點在Azure中的分期部署的最佳方式是什麼?每當您在Azure中進行新的分段部署時,它都會爲您提供該服務的新臨時域名。在升級過程中,我們是否應該完全不使用SSL證書,並且跳過所有瀏覽器警告,或者當域名隨每個部署更改時,是否有一種在分段中使用SSL的方法?或者當我們切換到生產環境時,是否有辦法在Azure部署中「關閉」(HTTP)端點?

我最初的想法是創建兩個包是有不同的終點,但我不相信天青會讓你熱插拔督促和分期部署,如果他們有不同的端點配置。

回答

9

對於我們的項目之一,我們使用URL rewrite module,其自帶默認安裝在Azure上。它效果很好。在web.config中的一段,使自動重定向到HTTPS所有的HTTP流量:

<rule name="HTTP to HTTPS redirect" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
     <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
    </conditions> 
    <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" /> 
</rule> 

對於臨時環境最好是使用相同的證書作爲生產。這樣可以輕鬆實現生產和分段之間的熱插拔,並且可以在瀏覽器中驗證證書是否正確。缺點是在測試登臺部署時,你必須點擊「繼續訪問網站」。

注意的是,雖然URL重寫模塊總是可用在Azure中,爲DevFabric你必須下載並在你的開發機器上安裝它。下載可在http://www.iis.com

1

對於這種情況,我們所做的是在Azure中創建2個不同的服務部署,這兩個部署都具有其Production \ Staging環境。因此,我們在兩個服務中都使用生產實例,這使URL保持靜態。
服務部署之間沒有熱插拔,但是從一個服務部署升級構建時,它會安裝在第二個服務上,暫存部署,然後完成熱插拔。希望我明確自己。

+0

感謝你的回答,這聽起來像你正在做的事情就像你所期望的一樣好。希望微軟將改進部署功能。 – 2011-04-29 15:14:55

1

我們保持端口80和對生產和分期部署443開放,但我們使用custom HttpModule基於一個藍色的配置設置HTTP流量重定向到HTTPS。如果配置值等於「生產」,則所有流量都將通過HTTPS強制執行。否則,將處理HTTP和HTTPS流量。這對我們很重要,因爲我們不希望我們的用戶在HTTP請求被拒絕時被混淆,因爲他們忘記了用https://前綴URL。是否有一個特定的原因需要禁用HTTP端點?

+0

我認爲你正在做的事可能是我們最終會做的,而不是做兩個單獨的實例。我們不一定需要禁用HTTP,並且我認爲,如果http端點根本不存在,我認爲您有關於用戶體驗的有效評論。我們只是想確保所有HTTP流量都重定向到HTTPS。 – 2011-04-29 17:01:35

+0

另一種可能性是基於域名重定向。例如,如果在yourapp.com上發出請求,請執行重定向並忽略所有其他請求(yourapp.cloudapp.net,tempstagingurl等)。 – 2011-04-29 17:47:27