Hosting gambar ASP.NET Core dengan Docker Compose melalui HTTPS
ASP.NET Core menggunakan HTTPS secara default. HTTPS bergantung pada sertifikat untuk kepercayaan, , identitydan enkripsi.
Dokumen ini menjelaskan cara menjalankan gambar kontainer bawaan dengan HTTPS.
Lihat Mengembangkan Aplikasi Inti ASP.NET dengan Docker melalui HTTPS untuk skenario pengembangan.
Sampel ini memerlukan Docker 17.06 atau yang lebih baru dari klien Docker.
Prasyarat
.NET Core 2.2 SDK atau yang lebih baru diperlukan untuk beberapa instruksi dalam dokumen ini.
Sertifikat
Sertifikat dari otoritas sertifikat diperlukan untuk hosting produksi untuk domain. Let's Encrypt adalah otoritas sertifikat yang menawarkan sertifikat gratis.
Dokumen ini menggunakan sertifikat pengembangan yang ditandatangani sendiri untuk menghosting gambar bawaan melalui localhost
. Instruksinya mirip dengan menggunakan sertifikat produksi.
Untuk sertifikat produksi:
- Alat
dotnet dev-certs
ini tidak diperlukan. - Sertifikat tidak perlu disimpan di lokasi yang digunakan dalam instruksi. Simpan sertifikat di lokasi mana pun di luar direktori situs.
Instruksi yang terkandung dalam bagian berikut sertifikat pemasangan volume ke dalam kontainer menggunakan volumes
properti di docker-compose.yml. Anda dapat menambahkan sertifikat ke dalam gambar kontainer dengan COPY
perintah di Dockerfile, tetapi tidak disarankan. Menyalin sertifikat ke dalam gambar tidak disarankan karena alasan berikut:
- Hal ini menyulitkan penggunaan gambar yang sama untuk pengujian dengan sertifikat pengembang.
- Ini menyulitkan untuk menggunakan gambar yang sama untuk Hosting dengan sertifikat produksi.
- Ada risiko signifikan dari pengungkapan sertifikat.
Memulai kontainer dengan dukungan https menggunakan docker compose
Gunakan instruksi berikut untuk konfigurasi sistem operasi Anda.
Windows menggunakan kontainer Linux
Buat sertifikat dan konfigurasikan komputer lokal:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Perintah sebelumnya menggunakan .NET CLI:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Dalam perintah sebelumnya, ganti $CREDENTIAL_PLACEHOLDER$
dengan kata sandi.
Buat file docker-compose.debug.yml dengan konten berikut:
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
Kata sandi yang ditentukan dalam file docker compose harus cocok dengan kata sandi yang digunakan untuk sertifikat.
Mulai kontainer dengan ASP.NET Core yang dikonfigurasi untuk HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
macOS atau Linux
Buat sertifikat dan konfigurasikan komputer lokal:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Di Linux, dotnet dev-certs https --trust
memerlukan .NET 9 SDK atau yang lebih baru. Untuk Linux di .NET 8.0.401 SDK dan yang lebih lama, lihat dokumentasi distribusi Linux Anda untuk mempercayai sertifikat.
Dalam perintah sebelumnya, ganti $CREDENTIAL_PLACEHOLDER$
dengan kata sandi.
Buat file docker-compose.debug.yml dengan konten berikut:
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
Kata sandi yang ditentukan dalam file docker compose harus cocok dengan kata sandi yang digunakan untuk sertifikat.
Mulai kontainer dengan ASP.NET Core yang dikonfigurasi untuk HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Windows yang menggunakan kontainer Windows
Buat sertifikat dan konfigurasikan komputer lokal:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Dalam perintah sebelumnya, ganti $CREDENTIAL_PLACEHOLDER$
dengan kata sandi.
Buat file docker-compose.debug.yml dengan konten berikut:
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=C:\https\aspnetapp.pfx
volumes:
- ${USERPROFILE}\.aspnet\https:C:\https:ro
Kata sandi yang ditentukan dalam file docker compose harus cocok dengan kata sandi yang digunakan untuk sertifikat.
Mulai kontainer dengan ASP.NET Core yang dikonfigurasi untuk HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Lihat juga
ASP.NET Core menggunakan HTTPS secara default. HTTPS bergantung pada sertifikat untuk kepercayaan, , identitydan enkripsi.
Dokumen ini menjelaskan cara menjalankan gambar kontainer bawaan dengan HTTPS.
Lihat Mengembangkan Aplikasi Inti ASP.NET dengan Docker melalui HTTPS untuk skenario pengembangan.
Sampel ini memerlukan Docker 17.06 atau yang lebih baru dari klien Docker.
Prasyarat
.NET Core 2.2 SDK atau yang lebih baru diperlukan untuk beberapa instruksi dalam dokumen ini.
Sertifikat
Sertifikat dari otoritas sertifikat diperlukan untuk hosting produksi untuk domain. Let's Encrypt adalah otoritas sertifikat yang menawarkan sertifikat gratis.
Dokumen ini menggunakan sertifikat pengembangan yang ditandatangani sendiri untuk menghosting gambar bawaan melalui localhost
. Instruksinya mirip dengan menggunakan sertifikat produksi.
Untuk sertifikat produksi:
- Alat
dotnet dev-certs
ini tidak diperlukan. - Sertifikat tidak perlu disimpan di lokasi yang digunakan dalam instruksi. Simpan sertifikat di lokasi mana pun di luar direktori situs.
Instruksi yang terkandung dalam bagian berikut sertifikat pemasangan volume ke dalam kontainer menggunakan volumes
properti di docker-compose.yml. Anda dapat menambahkan sertifikat ke dalam gambar kontainer dengan COPY
perintah di Dockerfile, tetapi tidak disarankan. Menyalin sertifikat ke dalam gambar tidak disarankan karena alasan berikut:
- Hal ini menyulitkan penggunaan gambar yang sama untuk pengujian dengan sertifikat pengembang.
- Ini menyulitkan untuk menggunakan gambar yang sama untuk Hosting dengan sertifikat produksi.
- Ada risiko signifikan dari pengungkapan sertifikat.
Memulai kontainer dengan dukungan https menggunakan docker compose
Gunakan instruksi berikut untuk konfigurasi sistem operasi Anda.
Windows menggunakan kontainer Linux
Buat sertifikat dan konfigurasikan komputer lokal:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Perintah sebelumnya menggunakan .NET CLI:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Dalam perintah sebelumnya, ganti $CREDENTIAL_PLACEHOLDER$
dengan kata sandi.
Buat file docker-compose.debug.yml dengan konten berikut:
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
Kata sandi yang ditentukan dalam file docker compose harus cocok dengan kata sandi yang digunakan untuk sertifikat.
Mulai kontainer dengan ASP.NET Core yang dikonfigurasi untuk HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
macOS atau Linux
Buat sertifikat dan konfigurasikan komputer lokal:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
dotnet dev-certs https --trust
hanya didukung di macOS dan Windows. Anda perlu mempercayai sertifikat di Linux dengan cara yang didukung oleh distribusi Anda. Kemungkinan Anda perlu mempercayai sertifikat di browser Anda.
Dalam perintah sebelumnya, ganti $CREDENTIAL_PLACEHOLDER$
dengan kata sandi.
Buat file docker-compose.debug.yml dengan konten berikut:
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
Kata sandi yang ditentukan dalam file docker compose harus cocok dengan kata sandi yang digunakan untuk sertifikat.
Mulai kontainer dengan ASP.NET Core yang dikonfigurasi untuk HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Windows yang menggunakan kontainer Windows
Buat sertifikat dan konfigurasikan komputer lokal:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Dalam perintah sebelumnya, ganti $CREDENTIAL_PLACEHOLDER$
dengan kata sandi.
Buat file docker-compose.debug.yml dengan konten berikut:
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=C:\https\aspnetapp.pfx
volumes:
- ${USERPROFILE}\.aspnet\https:C:\https:ro
Kata sandi yang ditentukan dalam file docker compose harus cocok dengan kata sandi yang digunakan untuk sertifikat.
Mulai kontainer dengan ASP.NET Core yang dikonfigurasi untuk HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Lihat juga
ASP.NET Core