匯出 (0) 列印
全部展開

設定 HTTPS 端點的 SSL 憑證

更新日期: 2014年2月

若要將 HTTPS 端點加入至 Windows Azure 服務中的角色,並將它與 SSL 憑證產生關聯,您必須依照下列步驟進行:

  1. 向憑證授權單位取得 SSL 憑證。如需詳細資訊,請參閱<取得 SSL 憑證>。

  2. 將憑證加入至託管服務的憑證存放區。如需詳細資訊,請參閱<將憑證上傳到 Windows Azure>一節。

  3. 將憑證指紋加入至服務組態檔。如需詳細資訊,請參閱<將憑證指紋加入至服務組態檔>一節。

  4. 更新服務定義檔,向託管服務識別憑證。如需詳細資訊,請參閱<在服務定義檔中加入憑證>一節。

  5. 在您的服務定義檔中設定 HTTPS 端點,並將它與憑證產生關聯。如需詳細資訊,請參閱<設定 HTTPS 端點>一節。

  6. 請為網域名稱設定 CNAME 記錄,並發行 SSL 憑證,將流量重新導向此服務。如需有關設定 CNAME 的詳細資訊,請參閱<設定 Windows Azure 雲端服務的自訂網域名稱>。

在開發環境中測試您的 HTTPS 端點時,所有驗證都會使用為 127.0.0.1 提供的自我簽署憑證來進行。如需詳細資訊,請參閱本主題稍後的<在運算模擬器中測試 HTTPS 端點>一節。

用於協助保護 Windows Azure 中 HTTPS 端點的 SSL 憑證必須具有下列功能:

  • 憑證必須包含私密金鑰。

  • 憑證的用途應該是伺服器驗證

  • 憑證的主體名稱必須符合用於存取服務的網域名稱。

  • 至少需要 2048 位元的密碼編譯金鑰大小。

note附註
如果您使用 Windows Azure Tools for Microsoft Visual Studio 開發您的服務,您可以使用角色的屬性頁來設定 HTTPS 端點。

Windows Azure 提供一個安全的憑證存放區,您可以在這裡為您的託管服務維護憑證。當您將憑證與您的服務產生關聯並將憑證上傳到存放區時,Windows Azure 會自動將此憑證部署到您的角色執行個體執行所在的 VM。如需有關憑證存放區的詳細資訊,請參閱<管理憑證>。

若要將您的憑證上傳到憑證存放區,請依照<將新憑證加入至憑證存放區>中的這些步驟進行。

服務組態檔中的憑證指紋會將您在服務定義檔中提供之憑證的邏輯名稱與存放區中的憑證配對在一起。在服務組態檔中維護憑證指紋會將憑證資料與服務封裝分開。這樣可讓您或 IT 管理員可以更新憑證,而不必重新部署服務。

若要在服務組態檔中列出憑證與其憑證指紋,請修改組態檔,並將 Certificates 集合加入至您的角色的項目中。將 Certificate 元素加入至 Certificates 集合,並為此憑證指定邏輯名稱。請務必使用您在服務定義檔中指定的相同名稱。最後,指定憑證指紋以及用來產生憑證指紋的演算法,如這個範例所示:


<ServiceConfiguration serviceName="MyService">
  <Role name=" MyWorkerRole">
    <Instances count="5" />    
    <ConfigurationSettings>
      . . .
    </ConfigurationSettings>
    <Certificates>
      <Certificate name="MySSLCert" thumbprint="8420C0773626D5137A820156EB5BD9D6FDB9BEE9" thumbprintAlgorithm="sha1"/>
    </Certificates>  
  </Role>
</ServiceConfiguration>

如需有關如何取得憑證指紋的詳細資訊,請參閱<建立 Windows Azure 的服務憑證>中的<建立 X.509 v3 憑證>一節。

若要將憑證與 HTTPS 端點產生關聯,您必須為此憑證提供邏輯名稱,此名稱將用來在您的服務中識別此憑證。您也必須指出憑證儲存在執行角色執行個體之虛擬機器上的何處。

在您的服務定義檔中,將 Certificates 元素加入至角色的定義。在 Certificates 集合中,為您的憑證加入一個項目,如這個範例所示:


  <WorkerRole name="MyWorkerRole" vmsize="Small">
    <ConfigurationSettings>
      . . .
    </ConfigurationSettings>
    <LocalResources>
      . . .
    </LocalResources>
    <Endpoints>
      . . .
    </Endpoints>
    <Certificates>
      <Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
  </WorkerRole>
</ServiceDefinition>

在此範例中,存放區位置設定為 LocalMachine,存放區名稱則設定為 My。這兩個屬性指出憑證 (在這裡識別為 MySSLCert) 將安裝在 VM 上的位置。

您可以選擇您希望為憑證的 name 屬性設定的任何名稱。使用此名稱只能參考 HTTPS 端點之定義及服務組態檔中的憑證。

若要將 HTTPS 端點加入至角色中,請編輯您的服務定義檔,並將 InputEndpoint 元素加入至角色的 Endpoints 集合。指定端點的名稱、通訊協定 (HTTPS) 和連接埠。然後針對您在角色的 Certificates 集合中定義的憑證指定邏輯名稱。

下列程序說明如何為 Web 角色加入 HTTP 輸入端點來接聽連接埠 80,並且定義可接聽連接埠 443 的 HTTPS 端點:

  1. 在文字編輯器中,為您的服務開啟 ServiceDefinition.csdef 檔。

  2. 將包含 Certificate 元素的 Certificates 集合元素加入至使用 SSL 維護安全的角色中。將 name 屬性設定為您的憑證的名稱。設定 storeLocationstoreName 屬性來指定憑證在虛擬機器中的位置。

        
    <Certificates>
       <Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
    
    
  3. 將包含 InputEndpoint 元素的 Endpoints 集合元素加入至使用 SSL 維護安全的角色中。設定 HttpsIn 輸入端點的 certificate 屬性,以符合憑證集合中指定的憑證名稱。

       
    <Endpoints>
       <InputEndpoint name="HttpIn" protocol="http" port="80" />
       <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="MySSLCert" />
    </Endpoints>
    
    
  4. 儲存檔案。

完成的服務定義將類似下列範例。


<ServiceDefinition name="MyService">
  <WorkerRole name="MyWorkerRole">
    <ConfigurationSettings>
      . . .
    </ConfigurationSettings>
    <LocalResources>
      . . .
    </LocalResources>
    <Endpoints>
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
      <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="MySSLCert" />
    </Endpoints>
    <Certificates>
      <Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
  </WorkerRole>
</ServiceDefinition>

根據預設,運算模擬器會依賴 IP 位址 127.0.0.1 的自我簽署憑證,該位址對應至 localhost。如果您在安裝或設定之前步驟所設定的憑證時發生問題,運算模擬器將會預設為針對這個自我簽署的憑證 (而不是您的自訂憑證) 進行驗證。如果您的部署預設為針對 127.0.0.1 使用 SSL 憑證,即使您已經定義不同的憑證,請確定您的自訂憑證沒有錯誤,而且已正確安裝。

根據預設,運算模擬器所使用的自我簽署憑證未受根憑證授權單位所信任。當您瀏覽至 HTTPS 時,您將會收到憑證錯誤,除非您將憑證加入至本機電腦上的受信任根憑證授權單位存放區。您可以忽略此錯誤,也可以將憑證加入至受信任的根憑證授權單位來消除此錯誤。

當您在 Windows Azure 運算模擬器中執行託管服務時,SSL 連接埠可以設定為 443 以外的值 (通常是 444 或 445)。如果您指定的連接埠無法使用 (HTTPS 端點的連接埠 443),則運算模擬器會將連接埠號碼遞增,直到找到可用的連接埠為止。

若要使用連接埠 443,您必須關閉使用此連接埠的應用程式或網站,並結束運算模擬器然後重新啟動,以重新載入可用的連接埠清單。關閉模擬器並重新啟動並不會重新載入可用的連接埠清單。

若要判斷連接埠 443 是否正在使用中,您可以開啟命令提示字元,並使用 NETSTAT 命令。如需有關 NETSTAT 命令的詳細資訊,請參閱 Netstat

如果您沒有憑證授權單位發行的任何憑證,您可以產生自我簽署的憑證來搭配 Windows Azure 服務使用。

note附註
這個自我簽署的憑證與開發環境所使用的憑證不同。該憑證會提供給您,並且只能用於開發環境中的驗證。

當您瀏覽至與 Windows Azure 中的自我簽署憑證相關聯的 HTTPS 端點時,您將會在瀏覽器中看到憑證錯誤。使用憑證授權單位所簽署的憑證將會消除這個問題,同時您可以忽略此錯誤。

另請參閱

概念

管理憑證

Microsoft 正展開一份線上問卷調查,了解您對於 MSDN 網站的看法。 如果您選擇參加,您離開 MSDN 網站時即會顯示線上問卷調查。

您是否想要參加?
顯示:
© 2015 Microsoft