Bagikan melalui


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