Hosting gambar ASP.NET Core dengan Docker melalui HTTPS
Oleh Rick Anderson
ASP.NET Core menggunakan HTTPS secara default. HTTPS bergantung pada sertifikat untuk kepercayaan, identitas, dan enkripsi.
Dokumen ini menjelaskan cara menjalankan gambar kontainer bawaan dengan HTTPS menggunakan antarmuka baris perintah .NET (CLI). Untuk petunjuk tentang cara menjalankan Docker dalam pengembangan dengan Visual Studio, lihat Mengembangkan aplikasi ASP.NET Core dengan Docker melalui HTTPS.
Sampel ini memerlukan Docker 17.06 atau yang lebih baru dari klien Docker.
Prasyarat
.NET SDK saat 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. Sertifikat yang dihasilkan hanya dotnet dev-certs
untuk digunakan dan localhost
tidak boleh digunakan di lingkungan seperti Kubernetes. Untuk mendukung HTTPS dalam kluster Kubernetes, gunakan alat yang disediakan oleh Kelola Sertifikat TLS dalam Kluster untuk mengatur TLS dalam pod.
Gunakan dotnet dev-certs
untuk membuat sertifikat yang ditandatangani sendiri untuk pengembangan dan pengujian.
Untuk sertifikasi produksi:
- Alat
dotnet dev-certs
ini tidak diperlukan. - Sertifikat tidak perlu disimpan di lokasi yang digunakan dalam instruksi. Lokasi apa pun harus berfungsi, meskipun menyimpan sertifikat dalam direktori situs Anda tidak disarankan.
Instruksi yang terkandung dalam bagian sertifikat pemasangan volume berikut ke dalam kontainer menggunakan opsi baris perintah Docker -v
. 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:
- Sulit untuk menggunakan gambar yang sama untuk pengujian dengan sertifikat pengembang.
- Sulit untuk menggunakan gambar yang sama untuk Hosting dengan sertifikat produksi.
- Ada risiko signifikan dari pengungkapan sertifikat.
Menjalankan gambar kontainer bawaan dengan HTTPS
Gunakan instruksi berikut untuk konfigurasi sistem operasi Anda.
Windows menggunakan kontainer Linux
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.
Jalankan gambar kontainer dengan ASP.NET Core yang dikonfigurasi untuk HTTPS dalam shell perintah:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
Dalam kode sebelumnya, ganti <CREDENTIAL_PLACEHOLDER>
dengan kata sandi. Kata sandi harus cocok dengan kata sandi yang digunakan untuk sertifikat.
Saat menggunakan PowerShell, ganti %USERPROFILE%
dengan $env:USERPROFILE
.
Catatan: Sertifikat dalam hal ini harus berupa .pfx
file. Menggunakan .crt
file atau .key
dengan atau tanpa kata sandi tidak didukung dengan kontainer sampel. Misalnya, saat menentukan .crt
file, kontainer dapat mengembalikan pesan kesalahan seperti 'SSL mode server harus menggunakan sertifikat dengan kunci privat terkait.'. Saat menggunakan WSL, validasi jalur pemasangan untuk memastikan bahwa sertifikat dimuat dengan benar.
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 sertifikasi 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.
Jalankan gambar kontainer dengan ASP.NET Core yang dikonfigurasi untuk HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v ${HOME}/.aspnet/https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
Dalam kode sebelumnya, ganti <CREDENTIAL_PLACEHOLDER>
dengan kata sandi. Kata sandi harus cocok dengan kata sandi yang digunakan untuk sertifikat.
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. Saat menggunakan PowerShell, ganti %USERPROFILE%
dengan $env:USERPROFILE
.
Jalankan gambar kontainer dengan ASP.NET Core yang dikonfigurasi untuk HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=c:\https\aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:C:\https\ --user ContainerAdministrator mcr.microsoft.com/dotnet/samples:aspnetapp
CATATAN:<CREDENTIAL_PLACEHOLDER>
adalah tempat penampung untuk Kestrel kata sandi default sertifikat.
Kata sandi harus cocok dengan kata sandi yang digunakan untuk sertifikat. Saat menggunakan PowerShell, ganti %USERPROFILE%
dengan $env:USERPROFILE
.
Mengembangkan Aplikasi Inti ASP.NET dengan Docker melalui HTTPS
Lihat Mengembangkan aplikasi ASP.NET Core dengan Docker melalui HTTPS untuk informasi dan sampel tentang cara mengembangkan aplikasi ASP.NET Core dengan HTTPS dalam kontainer Docker.
Baca juga
ASP.NET Core
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk