Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
ASP.NET Core verwendet standardmäßig HTTPS. HTTPS- basiert auf Zertifikaten für Vertrauen, Identität und Verschlüsselung.
In diesem Dokument wird erläutert, wie Sie vordefinierte Containerimages mit HTTPS ausführen.
Entwicklungsszenarien finden Sie unter Entwicklung von ASP.NET Core-Anwendungen mit Docker über HTTPS.
Für dieses Beispiel benötigen Sie den Docker-ClientDocker 17.06 oder höher.
Voraussetzungen
Für einige der Anweisungen in diesem Dokument ist das .NET Core 2.2 SDK oder höher erforderlich.
Zertifikate
Ein Zertifikat einer Zertifizierungsstelle ist für das Produktionshosting für eine Domäne erforderlich. Let's Encrypt ist eine Zertifizierungsstelle, die kostenlose Zertifikate anbietet.
Dieses Dokument verwendet selbstsignierte Entwicklungszertifikate zum Hosten vordefinierter Images über localhost
. Die Anweisungen ähneln der Verwendung von Produktionszertifikaten.
Für Produktionszertifikate:
- Das
dotnet dev-certs
-Tool ist nicht erforderlich. - Zertifikate müssen nicht an dem Speicherort gespeichert werden, der in den Anweisungen verwendet wird. Speichern Sie die Zertifikate an einem beliebigen Speicherort außerhalb des Standortverzeichnisses.
Die Anleitungen im folgenden Abschnitt beinhalten das Einbinden von Zertifikaten in Container unter Verwendung der Eigenschaft volumes
in docker-compose.yml. Sie können Zertifikate auch mit einem COPY
-Befehl in einer Dockerdatei in Container-Images einbinden, aber das wird nicht empfohlen. Das Kopieren von Zertifikaten in ein Image wird aus den folgenden Gründen nicht empfohlen:
- Es erschwert die Verwendung desselben Images für Tests mit Entwicklerzertifikaten.
- Es erschwert die Verwendung desselben Images für das Hosten mit Produktionszertifikaten.
- Es besteht ein erhebliches Risiko der Offenlegung von Zertifikaten.
Starten eines Containers mit HTTPS-Unterstützung mithilfe von Docker Compose
Verwenden Sie die folgenden Anweisungen für Ihre Betriebssystemkonfiguration.
Windows mit Linux-Containern
Generieren eines Zertifikats und Konfigurieren des lokalen Computers:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Der vorherige Befehl mithilfe der .NET CLI:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Ersetzen Sie $CREDENTIAL_PLACEHOLDER$
in den vorherigen Befehlen durch ein Kennwort.
Erstellen Sie eine docker-compose.debug.yml-Datei mit dem folgenden Inhalt:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=-\0pw-
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
Das in der Docker Compose-Datei angegebene Kennwort muss mit dem für das Zertifikat verwendeten Kennwort übereinstimmen.
Führen Sie das Containerimage mit einer für HTTPS konfigurierten ASP.NET Core-Instanz aus:
docker-compose -f "docker-compose.debug.yml" up -d
macOS oder Linux
Generieren eines Zertifikats und Konfigurieren des lokalen Computers:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Für Linux dotnet dev-certs https --trust
ist .NET 9 oder höher SDK erforderlich. Für Informationen über die Vertrauensstellung eines Zertifikats bei Linux unter .NET 8.0.401 oder einem früheren SDK konsultieren Sie bitte die Dokumentation Ihrer Linux-Distribution.
Ersetzen Sie $CREDENTIAL_PLACEHOLDER$
in den vorherigen Befehlen durch ein Kennwort.
Erstellen Sie eine docker-compose.debug.yml-Datei mit dem folgenden Inhalt:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=-\0pw-
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
Das in der Docker Compose-Datei angegebene Kennwort muss mit dem für das Zertifikat verwendeten Kennwort übereinstimmen.
Führen Sie das Containerimage mit einer für HTTPS konfigurierten ASP.NET Core-Instanz aus:
docker-compose -f "docker-compose.debug.yml" up -d
Windows mit Windows-Containern
Generieren eines Zertifikats und Konfigurieren des lokalen Computers:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Ersetzen Sie $CREDENTIAL_PLACEHOLDER$
in den vorherigen Befehlen durch ein Kennwort.
Erstellen Sie eine docker-compose.debug.yml-Datei mit dem folgenden Inhalt:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=-\0pw-
- ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
volumes:
- ${USERPROFILE}\.aspnet\https:C:\https:ro
Das in der Docker Compose-Datei angegebene Kennwort muss mit dem für das Zertifikat verwendeten Kennwort übereinstimmen.
Führen Sie das Containerimage mit einer für HTTPS konfigurierten ASP.NET Core-Instanz aus:
docker-compose -f "docker-compose.debug.yml" up -d
Siehe auch
ASP.NET Core verwendet standardmäßig HTTPS. HTTPS- basiert auf Zertifikaten für Vertrauen, Identität und Verschlüsselung.
In diesem Dokument wird erläutert, wie Sie vordefinierte Containerimages mit HTTPS ausführen.
Entwicklungsszenarien finden Sie unter Entwicklung von ASP.NET Core-Anwendungen mit Docker über HTTPS.
Für dieses Beispiel benötigen Sie den Docker-ClientDocker 17.06 oder höher.
Voraussetzungen
Für einige der Anweisungen in diesem Dokument ist das .NET Core 2.2 SDK oder höher erforderlich.
Zertifikate
Ein Zertifikat einer Zertifizierungsstelle ist für das Produktionshosting für eine Domäne erforderlich. Let's Encrypt ist eine Zertifizierungsstelle, die kostenlose Zertifikate anbietet.
Dieses Dokument verwendet selbstsignierte Entwicklungszertifikate zum Hosten vordefinierter Images über localhost
. Die Anweisungen ähneln der Verwendung von Produktionszertifikaten.
Für Produktionszertifikate:
- Das
dotnet dev-certs
-Tool ist nicht erforderlich. - Zertifikate müssen nicht an dem Speicherort gespeichert werden, der in den Anweisungen verwendet wird. Speichern Sie die Zertifikate an einem beliebigen Speicherort außerhalb des Standortverzeichnisses.
Die Anleitungen im folgenden Abschnitt beinhalten das Einbinden von Zertifikaten in Container unter Verwendung der Eigenschaft volumes
in docker-compose.yml. Sie können Zertifikate auch mit einem COPY
-Befehl in einer Dockerdatei in Container-Images einbinden, aber das wird nicht empfohlen. Das Kopieren von Zertifikaten in ein Image wird aus den folgenden Gründen nicht empfohlen:
- Es erschwert die Verwendung desselben Images für Tests mit Entwicklerzertifikaten.
- Es erschwert die Verwendung desselben Images für das Hosten mit Produktionszertifikaten.
- Es besteht ein erhebliches Risiko der Offenlegung von Zertifikaten.
Starten eines Containers mit HTTPS-Unterstützung mithilfe von Docker Compose
Verwenden Sie die folgenden Anweisungen für Ihre Betriebssystemkonfiguration.
Windows mit Linux-Containern
Generieren eines Zertifikats und Konfigurieren des lokalen Computers:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Der vorherige Befehl mithilfe der .NET CLI:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Ersetzen Sie $CREDENTIAL_PLACEHOLDER$
in den vorherigen Befehlen durch ein Kennwort.
Erstellen Sie eine docker-compose.debug.yml-Datei mit dem folgenden Inhalt:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=-\0pw-
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
Das in der Docker Compose-Datei angegebene Kennwort muss mit dem für das Zertifikat verwendeten Kennwort übereinstimmen. Ersetzen Sie -\0pw-
in den vorherigen Befehlen durch ein Kennwort.
Führen Sie das Containerimage mit einer für HTTPS konfigurierten ASP.NET Core-Instanz aus:
docker-compose -f "docker-compose.debug.yml" up -d
macOS oder Linux
Generieren eines Zertifikats und Konfigurieren des lokalen Computers:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
dotnet dev-certs https --trust
wird nur unter macOS und Windows unterstützt. Sie müssen Zertifikaten unter Linux auf die Art und Weise vertrauen, die von Ihrer Distribution unterstützt wird. Wahrscheinlich müssen Sie dem Zertifikat in Ihrem Browser vertrauen.
Ersetzen Sie $CREDENTIAL_PLACEHOLDER$
in den vorherigen Befehlen durch ein Kennwort.
Erstellen Sie eine docker-compose.debug.yml-Datei mit dem folgenden Inhalt:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
Das in der Docker Compose-Datei angegebene Kennwort muss mit dem für das Zertifikat verwendeten Kennwort übereinstimmen.
Führen Sie das Containerimage mit einer für HTTPS konfigurierten ASP.NET Core-Instanz aus:
docker-compose -f "docker-compose.debug.yml" up -d
Windows mit Windows-Containern
Generieren eines Zertifikats und Konfigurieren des lokalen Computers:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Ersetzen Sie $CREDENTIAL_PLACEHOLDER$
in den vorherigen Befehlen durch ein Kennwort.
Erstellen Sie eine docker-compose.debug.yml-Datei mit dem folgenden Inhalt:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=-\0pw-
- ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
volumes:
- ${USERPROFILE}\.aspnet\https:C:\https:ro
The password specified in the docker compose file must match the password used for the certificate. In the preceding commands, replace `-\0pw-` with a password.
Start the container with ASP.NET Core configured for HTTPS:
```console
docker-compose -f "docker-compose.debug.yml" up -d