Aktivieren der HTTPS-Kommunikation in Azure Cloud Services (erweiterter Support)
Artikel
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.
Ein SSL-Zertifikat (Secure Sockets Layer) im Dateiformat "Personal Information Exchange (PFX)". Wenn Sie noch kein SSL-Zertifikat von der Zertifizierungsstelle zugewiesen haben, verwenden Sie ein PowerShell-Skript, um ein Zertifikat für die Testverwendung selbst zuzuweisen.
Eine Azure Key Vault-Ressource , die sich innerhalb derselben Ressourcengruppe wie Ihre Azure Cloud Services -Ressource (erweiterter Support) befindet. Wenn Sie noch keines haben, können Sie mithilfe der Azure-Portal eine Schlüsseltresorressource erstellen.
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:
Ein Tool für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD), z . B. Azure DevOps
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:
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:
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:
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.
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.
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.
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:
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:
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.
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.
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.
Schritt
Unterabschnittslink
Weisen Sie Ihrem Abonnement die Rolle "Besitzer" für Ihre Anwendung zu.
Konfigurieren Sie die Zugriffsrichtlinie für den Schlüsseltresor, und erteilen Sie Ihrer Anwendung (mindestens lesestufe) die Berechtigung, um auf das Zertifikat zuzugreifen.
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 tenantIdVariablen , clientIdund 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.
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.