Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Oleh Rick Anderson
ASP.NET Core menggunakan HTTPS secara default. HTTPS bergantung pada sertifikat untuk kepercayaan, identitas, dan enkripsi.
Dokumen ini menjelaskan cara menjalankan image 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 klien Docker17.06 atau yang lebih baru.
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 image prarakit melalui localhost. Instruksinya mirip dengan menggunakan sertifikat produksi. Sertifikat yang dihasilkan oleh dotnet dev-certs hanya untuk digunakan dengan localhost dan tidak boleh digunakan di lingkungan seperti Kubernetes. Untuk mendukung HTTPS dalam kluster Kubernetes, gunakan alat yang disediakan oleh Manage TLS Certificates in a Cluster untuk mengatur TLS dalam pod.
Gunakan dotnet dev-certs untuk membuat sertifikat yang ditandatangani sendiri untuk pengembangan dan pengujian.
Untuk sertifikat produksi:
- Alat
dotnet dev-certstidak 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 berikut memasang sertifikat ke dalam kontainer menggunakan opsi baris perintah Docker -v. Anda dapat menambahkan sertifikat ke dalam gambar kontainer dengan perintah COPY di Dockerfile, tetapi tidak disarankan. Menyalin sertifikat ke dalam gambar tidak disarankan karena alasan berikut:
- Sulit untuk menggunakan image yang sama untuk pengujian dengan sertifikat pengembang.
- Sulit untuk menggunakan gambar yang sama untuk Hosting dengan sertifikat produksi.
- Ada risiko signifikan kebocoran sertifikat.
Menjalankan gambar kontainer siap pakai 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=443 -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.
Sertifikat dalam hal ini harus berupa .pfx file. Menggunakan file .crt atau .key dengan atau tanpa kata sandi tidak didukung dengan kontainer sampel. Misalnya, saat menentukan file .crt, kontainer dapat mengembalikan pesan kesalahan seperti 'Mode SSL server harus menggunakan sertifikat dengan kunci privat terkait.'. Saat menggunakan WSL, validasi jalur pemasangan untuk memastikan bahwa sertifikat dimuat dengan benar.
Note
Jangan bingung antara kunci konfigurasi HTTPS_PORTS dan variabel lingkungan ASPNETCORE_HTTPS_PORTS, yang mengatur port untuk konfigurasi endpoint Kestrel/HTTP.sys, dengan kunci konfigurasi HTTPS_PORT dan variabel lingkungan ASPNETCORE_HTTPS_PORT, yang mengatur port untuk middleware pengalihan HTTPS.
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 atau SDK yang lebih baru. Untuk Linux di .NET 8.0.401 atau SDK yang lebih lama, lihat dokumentasi distribusi Linux Anda untuk mempercayai sertifikat.
Dalam perintah sebelumnya, ganti <CREDENTIAL_PLACEHOLDER> dengan kata sandi.
Jalankan image 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=443 -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.
Note
Jangan bingung antara kunci konfigurasi HTTPS_PORTS dan variabel lingkungan ASPNETCORE_HTTPS_PORTS, yang mengatur port untuk konfigurasi endpoint Kestrel/HTTP.sys, dengan kunci konfigurasi HTTPS_PORT dan variabel lingkungan ASPNETCORE_HTTPS_PORT, yang mengatur port untuk middleware pengalihan HTTPS.
Windows dengan 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=443 -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 placeholder untuk kata sandi default sertifikat Kestrel.
Kata sandi harus cocok dengan kata sandi yang digunakan untuk sertifikat. Saat menggunakan PowerShell, ganti %USERPROFILE% dengan $env:USERPROFILE.
Mengembangkan Aplikasi ASP.NET Core 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.
Lihat juga
ASP.NET Core menggunakan HTTPS secara default. HTTPS bergantung pada sertifikat untuk kepercayaan, identitas, dan enkripsi.
Dokumen ini menjelaskan cara menjalankan image kontainer siap pakai 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 klien Docker versi 17.06 atau yang lebih baru.
Prasyarat
SDK .NET 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 image prarakit melalui localhost. Instruksinya mirip dengan menggunakan sertifikat produksi. Sertifikat yang dihasilkan oleh dotnet dev-certs hanya untuk digunakan dengan localhost dan 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 sertifikat produksi:
- Alat
dotnet dev-certsini 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 dalam bagian berikut memasang sertifikat ke dalam kontainer sebagai volume 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 kebocoran sertifikat.
Menjalankan gambar kontainer siap pakai 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://+:443;http://+" -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 file .crt atau .key dengan atau tanpa kata sandi tidak didukung dengan kontainer sampel. Misalnya, saat menentukan file .crt, 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 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.
Jalankan image 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://+:443;http://+" -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 dengan 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 image 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://+:443;http://+" -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 kata sandi default sertifikat Kestrel.
Kata sandi harus cocok dengan kata sandi yang digunakan untuk sertifikat. Saat menggunakan PowerShell, ganti %USERPROFILE% dengan $env:USERPROFILE.
Mengembangkan Aplikasi ASP.NET Core 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.
Lihat juga
ASP.NET Core