Konfigurieren von TLS für eine Anwendung in Azure
Wichtig
Cloud Services (klassisch) ist jetzt ab dem 1. September 2024 für alle Kunden veraltet. Alle vorhandenen ausgeführten Bereitstellungen werden beendet und von Microsoft heruntergefahren, und die Daten gehen ab Oktober 2024 dauerhaft verloren. In neuen Bereitstellungen sollte das neue auf Azure Resource Manager basierende Bereitstellungsmodell für Azure Cloud Services (erweiterter Support) verwendet werden.
Transport Layer Security (TLS), zuvor als „Secure Socket Layer-Verschlüsselung“ (SSL) bezeichnet, ist die am häufigsten verwendete Methode zum Sichern von Daten, die über das Internet gesendet werden. Im Folgenden erfahren Sie, wie Sie einen HTTPS-Endpunkt für eine Webrolle angeben und ein TLS/SSL-Zertifikat zum Sichern Ihrer Anwendung hochladen können.
Hinweis
Die Vorgehensweisen in dieser Aufgabe gelten für Azure Cloud Services. Entsprechende Informationen zu App Services finden Sie hier.
Diese Aufgabe erfordert die Verwendung einer Produktionsbereitstellung. Informationen zur Verwendung einer Stagingbereitstellung erhalten Sie am Ende dieses Artikels.
Lesen Sie zuerst Erstellen und Bereitstellen eines Azure Cloud Service (klassisch), wenn Sie noch keinen Clouddienst erstellt haben.
Schritt 1: Abrufen eines TLS/SSL-Zertifikats
Wenn Sie TLS für eine Anwendung konfigurieren möchten, müssen Sie zuerst ein TLS/SSL-Zertifikat erhalten, das von einer Zertifizierungsstelle (ZS) signiert wurde. Dabei handelt es sich um einen vertrauenswürdigen Partner, der Zertifikate zu diesem Zweck ausstellt. Wenn Sie noch kein Zertifikat haben, müssen Sie eines von einem Unternehmen erwerben, das TLS/SSL-Zertifikate verkauft.
Das Zertifikat muss die folgenden Anforderungen für TLS/SSL-Zertifikate in Azure erfüllen:
- Das Zertifikat muss einen öffentlichen Schlüssel enthalten.
- Das Zertifikat muss für den Schlüsselaustausch erstellt werden und in eine PFX-Datei (Persönlicher Informationsaustausch) exportiert werden können.
- Der Name des Antragstellers für das Zertifikat muss der Domäne entsprechen, über die auf den Clouddienst zugegriffen wird. Für die Domäne „cloudapp.net“ können Sie kein TLS/SSL-Zertifikat von einer Zertifizierungsstelle beziehen. Sie müssen einen benutzerdefinierten Domänennamen erwerben, den Sie für den Zugriff auf Ihren Dienst verwenden können. Wenn Sie ein Zertifikat von einer Zertifizierungsstelle anfordern, muss der Name des Antragstellers für das Zertifikat der Domäne entsprechen, über die auf Ihre Anwendung zugegriffen wird. Wenn beispielsweise der benutzerdefinierte Domänenname contoso.com lautet, fordern Sie von Ihrer Zertifizierungsstelle ein Zertifikat für *.contoso.com oder www.contoso.com an.
- Das Zertifikat muss mindestens eine 2048-Bit-Verschlüsselung haben.
Zu Testzwecken können Sie ein selbst signiertes Zertifikat erstellen und verwenden. Ein selbstsigniertes Zertifikat wird nicht über eine Zertifizierungsstelle authentifiziert. Daher kann in diesem Fall die Domäne „cloudapp.net“ als Website-URL verwendet werden. Zum Beispiel wird in der folgenden ein selbstsigniertes Zertifikat verwendet, in dem der allgemeine Name, der im Zertifikat verwendet wird, sslexample.cloudapp.net lautet.
Daraufhin müssen Sie Informationen zum Zertifikat in Ihre Definitions- und Konfigurationsdateien für den Dienst einfügen.
Schritt 2: Ändern der Definitions- und Konfigurationsdateien für den Dienst
Ihre Anwendung muss so konfiguriert sein, dass das Zertifikat verwendet wird. Außerdem muss ein HTTPS-Endpunkt hinzugefügt werden. Daher müssen die Definitions- und Konfigurationsdateien für den Dienst aktualisiert werden.
Öffnen Sie in Ihrer Entwicklungsumgebung die Dienstdefinitionsdatei (CSDEF), fügen Sie innerhalb des Bereichs WebRole einen Bereich Certificates hinzu, und geben Sie die folgenden Informationen über das Zertifikat (und Zwischenzertifikate) an:
<WebRole name="CertificateTesting" vmsize="Small"> ... <Certificates> <Certificate name="SampleCertificate" storeLocation="LocalMachine" storeName="My" permissionLevel="limitedOrElevated" /> <!-- IMPORTANT! Unless your certificate is either self-signed or signed directly by the CA root, you must include all the intermediate certificates here. You must list them here, even if they are not bound to any endpoints. Failing to list any of the intermediate certificates may cause hard-to-reproduce interoperability problems on some clients.--> <Certificate name="CAForSampleCertificate" storeLocation="LocalMachine" storeName="CA" permissionLevel="limitedOrElevated" /> </Certificates> ... </WebRole>
Im Bereich Zertifikate werden der Name des Zertifikats, dessen Speicherort und der Name des Speicherorts definiert.
Berechtigungen (
permissionLevel
-Attribut) können auf einen der folgenden Werte festgelegt werden:Berechtigungswert BESCHREIBUNG limitedOrElevated (Standard) Alle Rollenprozesse können auf den privaten Schlüssel zugreifen. elevated Nur Prozesse mit erhöhten Rechten können auf den privaten Schlüssel zugreifen. Fügen Sie in der Dienstdefinitionsdatei im Bereich Endpoints ein InputEndpoint-Element hinzu, um HTTPS zu aktivieren:
<WebRole name="CertificateTesting" vmsize="Small"> ... <Endpoints> <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="SampleCertificate" /> </Endpoints> ... </WebRole>
Fügen Sie in der Dienstdefinitionsdatei im Bereich Sites ein Binding-Element hinzu. Mit diesem Element wird eine HTTPS-Bindung hinzugefügt, die Ihrer Website den Endpunkt zuordnet:
<WebRole name="CertificateTesting" vmsize="Small"> ... <Sites> <Site name="Web"> <Bindings> <Binding name="HttpsIn" endpointName="HttpsIn" /> </Bindings> </Site> </Sites> ... </WebRole>
Alle erforderlichen Änderungen an der Dienstdefinitionsdatei sind jetzt abgeschlossen. Sie müssen ihr jedoch noch die Zertifikatinformationen hinzufügen.
Fügen Sie in der Dienstkonfigurationsdatei (CSCFG) „ServiceConfiguration.Cloud.cscfg“ einen Certificates-Wert mit dem Wert Ihres Zertifikats hinzu. Das folgende Codebeispiel enthält Details zum Abschnitt Certificates mit Ausnahme des Fingerabdruckwerts.
<Role name="Deployment"> ... <Certificates> <Certificate name="SampleCertificate" thumbprint="9427befa18ec6865a9ebdc79d4c38de50e6316ff" thumbprintAlgorithm="sha1" /> <Certificate name="CAForSampleCertificate" thumbprint="79d4c38de50e6316ff9427befa18ec6865a9ebdc" thumbprintAlgorithm="sha1" /> </Certificates> ... </Role>
(In diesem Beispiel wird sha1 für den Fingerabdruckalgorithmus verwendet. Geben Sie den entsprechenden Wert für den Fingerabdruckalgorithmus Ihres Zertifikats an.)
Die Definitions- und Konfigurationsdateien für den Dienst wurden aktualisiert. Erstellen Sie jetzt Ihr Bereitstellungspaket, um es in Azure hochzuladen. Wenn Sie cspack verwenden, sollten Sie nicht die Kennzeichnung /generateConfigurationFile nutzen, da dies die Zertifikatinformationen überschreibt, die Sie eingefügt haben.
Schritt 3: Hochladen eines Zertifikats
Stellen Sie eine Verbindung mit dem Azure-Portal her, und ...
Wählen Sie im Bereich Alle Ressourcen des Portals Ihren Clouddienst aus.
Wählen Sie Zertifikateaus.
Klicken Sie oben im Bereich „Zertifikate“ auf Hochladen.
Geben Sie die Datei und das Kennwort an, und klicken Sie dann unten im Dateneingabebereich auf Hochladen.
Schritt 4: Herstellen einer Verbindung mit der Rolleninstanz über HTTPS
Jetzt wird die Bereitstellung in Azure ausgeführt, und Sie können eine HTTPS-Verbindung herstellen.
Klicken Sie auf die Website-URL, um den Webbrowser zu öffnen.
Passen Sie in Ihrem Webbrowser den Link so an, dass https statt http verwendet wird, und rufen Sie dann die Seite auf.
Hinweis
Wenn Sie ein selbstsigniertes Zertifikat verwenden und zu einem HTTPS-Endpunkt wechseln, der mit dem selbstsignierten Zertifikat verknüpft ist, wird im Browser ein u. U. Zertifikatfehler angezeigt. Verwenden Sie zur Lösung dieses Problems ein Zertifikat, das von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde. Bis zu diesem Zeitpunkt können Sie den Fehler ignorieren. (Sie können auch das selbstsignierte Zertifikat zum Zertifikatspeicher der vertrauenswürdigen Zertifizierungsstelle des Benutzers hinzufügen.)
Tipp
Wenn Sie TLS für eine Staging- statt für eine Produktionsbereitstellung verwenden möchten, müssen Sie zuerst die URL festlegen, die für die Stagingbereitstellung verwendet werden soll. Wenn der Clouddienst bereitgestellt wurde, wird die URL zur Stagingumgebung anhand der GUID für die Bereitstellungs-ID in folgendem Format festgelegt:
https://deployment-id.cloudapp.net/
Erstellen Sie ein Zertifikat mit dem allgemeinen Namen (CN), welcher der GUID-basierten URL entspricht (z. B. 328187776e774ceda8fc57609d404462.cloudapp.net). Fügen Sie das Zertifikat über das Portal Ihrem bereitgestellten Clouddienst hinzu. Fügen Sie dann Ihren CSDRF- und CSCfg-Dateien die Zertifikatinformationen hinzu, packen Sie Ihre Anwendung neu, und aktualisieren Sie Ihre gestaffelte Bereitstellung, sodass das neue Paket verwendet wird.