Die Kommunikation mit Microsoft Azure Cloud Services (erweiterter Support) erfolgt mithilfe des HTTPS-Protokolls (Hypertext Transfer Protocol Secure). In diesem Artikel wird erläutert, wie Sie die HTTPS-Kommunikation für Cloud Services (erweiterter Support) aktivieren.
Voraussetzungen
Allgemeine Schritte für die Projektbereitstellung
Die allgemeinen Schritte zum Bereitstellen eines Cloud Services -Projekts (erweiterter Support) in Azure lauten wie folgt:
Bereiten Sie Ihr Zertifikat vor.
Konfigurieren Sie Ihr Projekt.
Packen Sie die Projektdatei in die Dienstdefinitionsdateien (CSDEF), die Dienstkonfiguration (CSCFG) und die Dienstpaketdateien (.cspkg) Ihres Clouddiensts.
Ändern Sie bei Bedarf die Konfiguration der Cloud Services-Ressource (erweiterter Support). Sie können beispielsweise eine der folgenden Änderungen vornehmen:
- Aktualisieren Sie die Paket-URL.
- Konfigurieren Sie die URL-Einstellung.
- Aktualisieren Sie die Einstellung für geheime Betriebssystemschlüssel.
Stellen Sie das neue Projekt in Azure bereit und aktualisieren Sie es.
Notiz
Das Projekt kann über verschiedene Methoden bereitgestellt werden, z. B. mithilfe der folgenden Tools:
Unabhängig von der Bereitstellungsmethode sind die allgemeinen Bereitstellungsschritte identisch.
Die ersten beiden dieser Schritte sind für alle Bereitstellungsmethoden erforderlich. Diese Schritte werden im Abschnitt "Codeänderungen" erläutert. Die verbleibenden Schritte sind ebenfalls wichtig, erfordern jedoch nicht immer manuelle Benutzereingriffe. Die Schritte können z. B. automatisch von einem Tool wie Visual Studio ausgeführt werden. Die letzten drei dieser Schritte werden im Abschnitt "Konfigurationsänderungen " erläutert.
Codeänderungen
Führen Sie die folgenden Schritte aus, um die Codeänderungen vorzunehmen, um Ihr Zertifikat vorzubereiten und Ihr Projekt zu konfigurieren:
Folgen Sie den Anweisungen, um ein Zertifikat bis Schritt 6 in den Schlüsseltresor hochzuladen.
Notieren Sie sich den Fingerabdruck des Zertifikats (eine 40-stellige hexadezimale Zeichenfolge).
Fügen Sie in der Dienstkonfigurationsdatei (.cscfg) Ihres Projekts den Zertifikatfingerabdruck der Rolle hinzu, in der Sie das Zertifikat verwenden möchten. Wenn Sie z. B. das Zertifikat als SSL-Zertifikat für die Kommunikation mit einem WebRole verwenden möchten, können Sie XML-Code hinzufügen, der dem folgenden Codeausschnitt WebRole1
als erstes untergeordnetes Element des Stammelements ServiceConfiguration
ähnelt:
<Role name="WebRole1">
<Instances count="1" />
<Certificates>
<Certificate
name="Certificate1"
thumbprint="0123456789ABCDEF0123456789ABCDEF01234567"
thumbprintAlgorithm="sha1"
/>
</Certificates>
</Role>
Sie können den Namen des Zertifikats anpassen, muss aber mit dem Zertifikatnamen übereinstimmen, der in der Dienstdefinitionsdatei (CSDEF) verwendet wird.
Fügen Sie in der Dienstdefinitionsdatei (CSDEF) die folgenden Elemente hinzu.
Übergeordnetes XPath-Element |
Hinzuzufügende Elemente |
Zu verwendende Attribute |
/ServiceDefinition/WebRole/Sites/Site/Bindings |
Binding |
name, endpointName |
/ServiceDefinition/WebRole/Endpoints |
InputEndpoint |
Name, Protokoll, Port, Zertifikat |
/ServiceDefinition/WebRole |
Certificates/Certificate |
name, storeLocation, storeName, permissionLevel |
Das Certificates
Element muss direkt nach dem schließenden Endpoints
Tag hinzugefügt werden. Es enthält keine Attribute. Sie enthält nur untergeordnete Certificate
Elemente.
Ihre Dienstdefinitionsdatei könnte z. B. dem folgenden XML-Code ähneln:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="CSESOneWebRoleHTTPS" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
<WebRole name="WebRole1" vmsize="Standard_D1_v2">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
<Binding name="HttpsIn" endpointName="HttpsIn" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
<InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="Certificate1" />
</Endpoints>
<Certificates>
<Certificate name="Certificate1" storeLocation="LocalMachine" storeName="My" permissionLevel="limitedOrElevated" />
</Certificates>
</WebRole>
</ServiceDefinition>
In diesem Beispiel wird die Dienstdefinitionsdatei geändert, um einen Eingabeendpunkt für HttpsIn
das HTTPS-Protokoll an Port 443 zu binden. Es verwendet das Certificate1
Zertifikat für einen Speicher, der My
einen Namen und einen Speicherort LocalMachine
für nur eine eingeschränkte oder erhöhte Berechtigungsstufe hat. Die Zertifikatnamen in den InputEndpoint
und Certificate
die Elemente stimmen einander überein. Sie stimmen auch mit dem Zertifikatnamen überein, der in der Dienstkonfigurationsdatei (.cscfg) aus dem vorherigen Schritt verwendet wurde.
Konfigurationsänderungen
Anweisungen zum Ändern Ihrer Clouddienstkonfiguration unterscheiden sich je nach Bereitstellung Ihres Clouddiensts. Diese Anweisungen werden auf den folgenden Registerkarten angezeigt. Jede Registerkarte stellt eine andere Bereitstellungsmethode dar.
Bevor Sie fortfahren, lesen Sie die Bereitstellung von Azure Cloud Services (erweiterter Support) mithilfe des Azure-Portal. Führen Sie dann die folgenden Schritte aus, um die richtigen Konfigurationsänderungen über die Azure-Portal vorzunehmen:
Wechseln Sie zum Blogeintrag mit dem Titel "Manuelle Migration von klassischem Cloud Service zu erweiterter CloudDienst mit ARM-Vorlage", und führen Sie die Schritte 7 bis 9 aus. In diesen Anweisungen erfahren Sie, wie Sie die folgenden Schritte ausführen:
Packe das Projekt.
Laden Sie die generierten Dienstpaketdateien (<project-name.cspkg>) und Die Dateien für die Clouddienstkonfiguration (ServiceConfiguration.Cloud.cscfg) in einen Speicherkontocontainer für Ihren Clouddienst hoch.
Notiz
Sie müssen auch die Dienstdefinitionsdatei (ServiceDefinition.csdef) hochladen, indem Sie denselben Prozess verwenden, der für die anderen beiden Dateien beschrieben wird.
Generieren Sie eine SAS-URL (Shared Access Signature) für jede der hochgeladenen Dateien.
Kehren Sie in der Azure-Portal zur Seite "Übersicht" Ihres Clouddiensts zurück, und wählen Sie dann "Aktualisieren" aus.
Nehmen Sie auf der Seite "Clouddienst aktualisieren " die folgenden Änderungen auf der Registerkarte "Grundlagen " vor:
Wählen Sie im Feld "Paket/Konfiguration/Dienstdefinition" die Option "Von blob" aus.
Führen Sie im Feld "Paket hochladen" (.cspkg, .zip) die folgenden Schritte aus:
- Wählen Sie den Link "Durchsuchen" aus .
- Wählen Sie das Speicherkonto und den Container aus, in das Sie Dateien hochgeladen haben.
- Wählen Sie auf der Containerseite die entsprechende Datei aus (in diesem Fall <project-name.cspkg>), und wählen Sie dann die Schaltfläche "Auswählen" aus.
Wiederholen Sie für das Hochladen eines Konfigurationsfelds (.cscfg) (und der Datei ServiceConfiguration.Cloud.cscfg ) die im vorherigen Schritt beschriebene Unterprozedur.
Wiederholen Sie die Unterprozedur für das Hochladen eines Dienstdefinitionsfelds (CSDEF) (und der Datei ServiceDefinition.csdef ).
Wählen Sie die Registerkarte Konfiguration aus.
Wählen Sie im Feld "Schlüsseltresor" den Schlüsseltresor aus, in den Sie das Zertifikat hochgeladen haben (weiter oben im Abschnitt "Codeänderungen "). Nachdem das Zertifikat im ausgewählten Schlüsseltresor gefunden wurde, zeigt das aufgelistete Zertifikat den Status " Gefunden" an.
Um das neu konfigurierte Projekt bereitzustellen, wählen Sie die Schaltfläche "Aktualisieren " aus.
Bevor Sie fortfahren, lesen Sie die Bereitstellung eines Clouddiensts (erweiterter Support) mit Azure PowerShell. Führen Sie dann die folgenden Schritte aus, um die Konfigurationsänderungen über ein PowerShell-Skript vorzunehmen:
Wechseln Sie zum Blogeintrag mit dem Titel "Manuelle Migration von klassischem Cloud Service zu erweiterter CloudDienst mit ARM-Vorlage", und führen Sie die Schritte 7 bis 9 aus. In diesen Anweisungen erfahren Sie, wie Sie die folgenden Schritte ausführen:
Packe das Projekt.
Laden Sie die generierte Dienstpaketdatei (<project-name.cspkg>) in einen Speicherkontocontainer für Ihren Clouddienst hoch.
Notiz
Trotz der in den Anweisungen angegebenen Angaben müssen Sie die Clouddienstkonfigurationsdatei (ServiceConfiguration.Cloud.cscfg) nicht hochladen. Nur die Dienstpaketdatei muss hier hochgeladen werden.
Generieren Sie eine SAS-URL (Shared Access Signature) für die hochgeladene Dienstpaketdatei.
Melden Sie sich bei Azure an, indem Sie das Cmdlet Connect-AzAccount ausführen.
Ersetzen Sie im folgenden PowerShell-Skript die Platzhalter am Anfang des Skripts durch die tatsächlichen Werte für jede Variable, und führen Sie dann das Skript aus, um Ihren Clouddienst zu aktualisieren:
# Enter values for placeholders in the following variables.
$vaultName = "<key-vault-resource-name>"
$resourceGroupKeyVault = "<resource-group-name-where-key-vault-is-deployed>"
$certificateName = "<name-of-certificate-saved-in-key-vault>"
$cloudService = @{
Name = "<name-of-cloud-service>"
ResourceGroupName = "<resource-group-name-where-cloud-service-is-deployed>"
SubscriptionId = "<subscription-guid>"
}
$cscfgFilePath = "<local-path-to-your-service-configuration-file-cscfg>"
$cspkgUrl = "<sas-token-url-of-the-service-package-file-cspkg>"
# Code execution
$keyVault = Get-AzKeyVault -VaultName $vaultName -ResourceGroupName $resourceGroupKeyVault
$certificate = Get-AzKeyVaultCertificate -VaultName $vaultName -Name $certificateName
$vaultSecretGroupObject = @{
CertificateUrl = $certificate.SecretId
Id = $keyVault.ResourceId
}
$secretGroup = New-AzCloudServiceVaultSecretGroupObject @vaultSecretGroupObject
$osProfile = @{secret = @($secretGroup)}
$cses = Get-AzCloudService @cloudService
$cses.Configuration = Get-Content $cscfgFilePath | Out-String
$cses.PackageUrl = $cspkgUrl
$cses.OSProfile = $osProfile
$cses | Update-AzCloudService
Bevor Sie fortfahren, lesen Sie die Bereitstellung eines Clouddiensts (erweiterter Support) mithilfe von ARM-Vorlagen. Führen Sie dann die folgenden Schritte aus, um Ihre ARM-Vorlage zu konfigurieren:
Wechseln Sie zum Blogeintrag mit dem Titel "Manuelle Migration von klassischem Cloud Service zu erweiterter Cloud Service mit ARM-Vorlage", und führen Sie die Schritte 7 bis 10 aus. In diesen Anweisungen erfahren Sie, wie Sie die folgenden Schritte ausführen:
Packe das Projekt.
Laden Sie die generierten Dienstpaketdateien (<project-name.cspkg>) und Die Dateien für die Clouddienstkonfiguration (ServiceConfiguration.Cloud.cscfg) in einen Speicherkontocontainer für Ihren Clouddienst hoch.
Generieren Sie eine SAS-URL (Shared Access Signature) für jede der hochgeladenen Dateien.
Rufen Sie die folgenden Werte auf der Seite "Schlüsseltresorzertifikat" in der Azure-Portal ab:
- Schlüsseltresorzertifikat-URL
- Abonnement-ID
- Name der Ressourcengruppe, in der der Schlüsseltresor bereitgestellt wird
- Dienstname für den Schlüsseltresor
Suchen Sie in Ihrer ursprünglichen ARM-Vorlage für den Clouddienst die osProfile
Eigenschaft. Wenn das ursprüngliche Clouddienstprojekt nur die HTTP-Kommunikation unterstützt, ist die osProfile
Eigenschaft leer ("osProfile": {}
). Um dem Clouddienst das richtige Zertifikat aus dem richtigen Schlüsseltresor abzurufen, geben Sie den Schlüsseltresor an, den Sie in der ARM-Vorlage verwenden möchten. Sie können einen Parameter verwenden, um diesen Wert darzustellen. Sie können den Wert auch in die ARM-Vorlage hartcodieren, wie im folgenden Beispiel gezeigt:
"osProfile": {
"secrets": [
{
"sourceVault": {
"id": "/subscriptions/88889999-aaaa-bbbb-cccc-ddddeeeeffff/resourceGroups/cstocses/providers/Microsoft.KeyVault/vaults/cstocses"
},
"vaultCertificates": [
{
"certificateUrl": "https://cstocses.vault.azure.net/secrets/csescert/0123456789abcdef0123456789abcdef"
}
]
}
]
}
Im JSON-Text der ARM-Vorlage ist der id
Wert im sourceVault
Parameter Teil der URL der Key Vault-Seite im Azure-Portal. Der certificateUrl
Wert ist die Schlüsseltresorzertifikat-URL, die Sie zuvor gefunden haben. Die Textformate für diese Werte werden in der folgenden Tabelle angezeigt.
Parameter |
Format |
Quelltresor-ID |
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<key-vault-name> |
Schlüsseltresorzertifikat-URL |
https://<key-vault-name>.vault.azure.net/secrets/<certificate-name>/<certificate-secret> |
Stellen Sie Ihre aktualisierte ARM-Vorlage bereit, die neue Parameter enthält, z. B. das Sas-Pakettoken, das Konfigurations-SAS-Token und vieles mehr. Wenn Sie erfahren möchten, wie Sie diese Parameter deklarieren und angeben, können Sie eine Beispieldatei für ARM-Vorlagen und eine Beispieldatei für ARM-Vorlagenparameter überprüfen. Warten Sie dann, bis die Bereitstellung abgeschlossen ist.
Notiz
Wenn Sie eine Fehlermeldung erhalten, die besagt, dass die öffentliche IP-Adresse verwendet wird, entfernen Sie die öffentliche IP-Adresse aus der Datei für die Dienstkonfiguration (CSCFG) und der ARM-Vorlagenparameterdatei. Entfernen Sie die Deklaration der öffentlichen IP-Adresse nicht aus der ARM-Vorlagendatei selbst.
Bevor Sie fortfahren, lesen Sie die Bereitstellung von Cloud Services (erweiterter Support) mithilfe des Azure SDK.
In diesem Abschnitt wird beschrieben, wie Sie das Azure SDK und C# verwenden, um die richtigen Konfigurationsänderungen vorzunehmen. Um das SDK erfolgreich zum Bereitstellen des Clouddienstprojekts und zum Ändern der zugehörigen Konfiguration zu verwenden, sollten Sie eine Anwendung in microsoft Entra ID registrieren. Informationen zur Registrierung finden Sie im Portal zum Erstellen einer Microsoft Entra-Anwendung und eines Dienstprinzipals, die auf den Ressourcenartikel zugreifen können. In der folgenden Tabelle werden die spezifischen Schritte und der entsprechende Unterabschnitt beschrieben, der in diesem Artikel gelesen werden soll.
Führen Sie die folgenden Schritte aus, um die richtigen Konfigurationsänderungen vorzunehmen:
Wechseln Sie zum Blogeintrag mit dem Titel "Manuelle Migration von klassischem Cloud Service zu Erweiterter CloudDienst mit ARM-Vorlage " und führen Sie die Schritte 7 bis 10 aus. In diesen Anweisungen erfahren Sie, wie Sie die folgenden Schritte ausführen:
Packe das Projekt.
Laden Sie die generierte Dienstpaketdatei (<project-name.cspkg>) in einen Speicherkontocontainer für Ihren Clouddienst hoch.
Notiz
Trotz der in den Anweisungen angegebenen Angaben müssen Sie die Clouddienstkonfigurationsdatei (ServiceConfiguration.Cloud.cscfg) nicht hochladen. Nur die Dienstpaketdatei muss hier hochgeladen werden.
Generieren Sie eine SAS-URL (Shared Access Signature) für die hochgeladene Dienstpaketdatei.
Rufen Sie die folgenden Werte auf der Seite "Schlüsseltresorzertifikat" in der Azure-Portal ab:
- Schlüsseltresorzertifikat-URL
- Abonnement-ID
- Name der Ressourcengruppe, in der der Schlüsseltresor bereitgestellt wird
- Dienstname für den Schlüsseltresor
Laden Sie das Beispielprojekt (eine komprimierte Archivdatei) herunter, und extrahieren Sie den Inhalt.
Öffnen Sie die DATEI SDKSample\CreateCloudService\CreateCloudService\LoginHelper.cs in einem Text-Editor. Überschreiben Sie in der InitializeServiceClient
Methode die Werte der tenantId
Variablen , clientId
und clientCredentials
Zeichenfolgen mit den Werten für die Mandanten-ID, Anwendungs-ID und den geheimen Anwendungsschlüssel. Diese Werte sind die Werte, die Sie beim Registrieren der Anwendung kopiert haben.
Öffnen Sie die DATEI SDKSample\CreateCloudService\CreateCloudService\Program.cs in einem Text-Editor. Überschreiben Sie in der Main
Methode einige der initialisierten Werte der Variablen, die am Anfang der Methode deklariert wurden. In der folgenden Tabelle sind die Variablennamen und die Werte aufgeführt, die Sie für sie verwenden müssen.
Variablenname |
Neuer Wert |
m_subId |
Die ID des Abonnements, das den Clouddienst enthält |
csrgName |
Der Name der Ressourcengruppe, die den Clouddienst enthält |
csName |
Der Name der Clouddienstressource |
kvrgName |
Der Name der Ressourcengruppe, die die Schlüsseltresorressource enthält |
kvName |
Der Schlüsseltresor-Ressourcenname |
kvsubid |
Die ID des Abonnements, das den Schlüsseltresor enthält (dies kann sich von der Abonnement-ID des Clouddiensts unterscheiden) |
secretidentifier |
Die Schlüsseltresorzertifikat-URL |
filename |
Der lokale Pfad zu Ihrer Dienstkonfigurationsdatei (ServiceConfiguration.Cloud.cscfg) |
packageurl |
Die SAS-URL für die Dienstpaketdatei (project-name.cspkg>)< |
Klicken Sie im Bereich "Visual Studio Projektmappen-Explorer" mit der rechten Maustaste auf den Projektknoten, und wählen Sie dann "NuGet-Pakete verwalten" aus. Suchen Sie auf der Registerkarte "Durchsuchen " nach den folgenden Paketen, wählen Sie sie aus, und installieren Sie sie:
Microsoft.Azure.Management.ResourceManager
Microsoft.Azure.Management.Compute
Microsoft.Azure.Management.Storage
Azure.Identity
Microsoft.Rest.ClientRuntime.Azure.Authentication
Führen Sie das Projekt aus, und warten Sie dann, bis Nachrichten im Ausgabebereich angezeigt werden. Wenn im Bereich "Beenden mit Code 0" angezeigt wird, sollte das Update und die Bereitstellung erfolgreich funktionieren. Wenn "Exit with Code 1" angezeigt wird, müssen Sie möglicherweise nach Fehlermeldungen suchen, um Probleme zu überprüfen.
Bevor Sie fortfahren, lesen Sie das Erstellen und Bereitstellen in Cloud Services (erweiterter Support) in Visual Studio.
In Visual Studio müssen Sie zwei Konfigurationsänderungen vornehmen. Sie richten Ihre Dienstkonfiguration so ein, dass der lokale Kontext an den Cloudkontext ausgerichtet ist, und geben dann an, wo sich Ihr Schlüsseltresor befindet.
Kopieren Sie für die Dienstkonfiguration den Inhalt des Cloudkontexts (die Datei ServiceConfiguration.Cloud.cscfg ), und fügen Sie sie in den lokalen Kontext (die Datei ServiceConfiguration.Local.cscfg ) ein. Haben Sie eine andere Konfiguration, oder benötigen Sie weiterhin die lokale Konfigurationsdatei für andere Zwecke? Wenn eine der Bedingungen "true" ist, bewahren Sie die certificate
Elemente aus dem vorhandenen lokalen Kontext auf.
Klicken Sie im Bereich "Visual Studio Projektmappen-Explorer" mit der rechten Maustaste auf den Projektknoten, und wählen Sie dann "Veröffentlichen" aus. Fahren Sie mit dem Assistenten zum Veröffentlichen Azure-App Lizenzierung fort, bis Sie die Registerkarte "Einstellungen" erreicht haben. Legen Sie auf dieser Registerkarte das Schlüsseltresorfeld auf den Speicherort fest, an dem Ihr Schlüsseltresor gespeichert wird. Wählen Sie abschließend die Schaltfläche "Veröffentlichen " aus, und warten Sie dann, bis die Bereitstellung abgeschlossen ist.
Nachdem Sie die Konfigurationsänderungen vorgenommen haben, können Kunden mithilfe des HTTPS-Protokolls mit Ihrer Clouddienste-Website kommunizieren. Wenn Ihr Zertifikat selbstsigniert ist, meldet der Browser möglicherweise eine Warnung, dass das Zertifikat nicht sicher ist, aber der Browser blockiert die Verbindung nicht.
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.