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.
Sekilas
Tujuan: Gunakan Dev Proxy dengan .NET di Docker
Waktu: 15 menit
Plugin: Berbagai
Prasyarat:Siapkan Proksi Dev, Docker terinstal
Jika Anda menjalankan aplikasi .NET dalam kontainer Docker dan ingin menggunakan Dev Proxy, ada beberapa langkah yang perlu Anda ikuti untuk membuatnya berfungsi.
Mengonfigurasi proksi untuk kontainer Docker Anda
Karena aplikasi .NET Anda berjalan di dalam kontainer Docker dan Dev Proxy berjalan di host Anda, Anda perlu mengonfigurasi proksi untuk menunjuk ke alamat IP komputer Anda (http://192.0.2.13 dalam contoh berikut). .NET menggunakan HTTPS_PROXY variabel lingkungan untuk mengonfigurasi proksi untuk klien HTTP-nya. Untuk mengonfigurasi variabel untuk kontainer Docker Anda, gunakan --env, -e opsi saat memulai kontainer:
docker run --rm -it -v $(pwd):/usr/src/app -e HTTPS_PROXY=http://192.0.2.13:8000 mcr.microsoft.com/dotnet/sdk:8.0 bash
Penting
Saat Anda menggunakan Dev Proxy di macOS, Anda perlu melampirkannya ke 0.0.0.0 alamat untuk membuatnya dapat diakses dari kontainer Docker. Untuk mengonfigurasi alamat IP untuk Dev Proxy, mulai dengan perintah berikut:
devproxy --ip-address 0.0.0.0
Penting
Saat Anda menggunakan Dev Proxy di Linux, Anda perlu melampirkannya ke 0.0.0.0 alamat untuk membuatnya dapat diakses dari kontainer Docker. Untuk mengonfigurasi alamat IP untuk Dev Proxy, mulai dengan perintah berikut:
devproxy --ip-address 0.0.0.0
Menangani sertifikat SSL
Dev Proxy menggunakan sertifikat SSL sendiri untuk memeriksa lalu lintas HTTPS yang disadap dari aplikasi Anda. Saat Anda menginstal Dev Proxy di komputer Anda, ia menghasilkan sertifikat SSL yang ditandatangani sendiri dan menambahkannya ke daftar sertifikat tepercaya. Namun, saat menjalankan aplikasi Anda dalam kontainer Docker, kontainer tidak memiliki akses ke sertifikat SSL yang diinstal di komputer Anda. Ada dua cara bagi Anda untuk menangani sertifikat SSL saat menggunakan Dev Proxy dengan aplikasi .NET yang berjalan di kontainer Docker.
Mengonfigurasi sertifikat Dev Proxy di kontainer Docker Anda
Untuk mengizinkan Dev Proxy memeriksa permintaan HTTPS, Anda dapat mengonfigurasi sertifikat Dev Proxy SSL sebagai tepercaya dalam kontainer Docker Anda.
Penting
Karena Docker tidak mempertahankan perubahan pada kontainer setelah menutupnya, Anda harus mengulangi langkah-langkah ini setiap kali Memulai kontainer. Untuk menghindari hal ini, buat gambar Docker kustom dengan langkah-langkah berikut yang disertakan.
Mulailah, dengan mengekspor sertifikat Dev Proxy ke PEM.
Untuk mengekspor sertifikat Proksi Dev ke PEM di Windows, Anda memerlukan openssl. Contoh ini mengasumsikan Anda menggunakan openssl yang disediakan bersama git, tetapi Anda juga dapat menginstal openssl secara terpisah.
Sesuaikan Proksi Dev dan direktori penginstalan git, dan jalankan skrip berikut di PowerShell.
$proxyPath = "C:\apps\devproxy"
$gitPath = "C:\Program Files\Git"
# convert Dev Proxy root certificate to PEM
$executable = "${gitPath}\usr\bin\openssl.exe"
$arguments = 'pkcs12 -in "{0}\rootCert.pfx" -out "{0}\rootCert.crt" -nodes' -f $proxyPath
Start-Process -FilePath $executable -ArgumentList $arguments -NoNewWindow -Wait
# Read PEM contents
$content = Get-Content "$proxyPath\rootCert.crt"
# Find the indices of the begin and end certificate lines
$beginIndex = $content.IndexOf("-----BEGIN CERTIFICATE-----")
$endIndex = $content.IndexOf("-----END CERTIFICATE-----")
# If both lines are found
if ($beginIndex -ne -1 -and $endIndex -ne -1) {
# Trim the content to only include the certificate
$content = $content[$beginIndex..$endIndex]
}
# Write the updated content back to the file
$content | Out-File "$proxyPath\dev-proxy-ca.crt"
Saat diminta untuk memasukkan kata sandi, tekan Enter tanpa mengetik apa pun.
# export Dev Proxy certificate
security find-certificate -c "Dev Proxy CA" -a -p > dev-proxy-ca.pem
# rename to .crt
mv dev-proxy-ca.pem dev-proxy-ca.crt
# export Dev Proxy certificate
openssl pkcs12 -in ~/.config/dev-proxy/rootCert.pfx -clcerts -nokeys -out dev-proxy-ca.crt -passin pass:""
# rename to .crt
mv dev-proxy-ca.pem dev-proxy-ca.crt
Selanjutnya, salin sertifikat ke kontainer Docker Anda. Cara term mudah untuk menyalin sertifikat adalah dengan menyalinnya ke folder proyek, yang Anda pasang ke kontainer.
Kemudian, dalam kontainer Docker, percayai sertifikat. Jika Anda menggunakan mcr.microsoft.com/dotnet/sdk gambar, Anda dapat menggunakan perintah berikut:
# change to the directory where your application is located
cd /usr/app/src
# copy the certificate to the trusted certificates directory
cp dev-proxy-ca.crt /usr/local/share/ca-certificates
# update the trusted certificates
update-ca-certificates
Abaikan validasi sertifikat SSL di aplikasi .NET Anda
Cara lain untuk menangani sertifikat SSL saat menggunakan Dev Proxy dengan aplikasi .NET yang berjalan di kontainer Docker adalah dengan mengabaikan validasi sertifikat SSL di aplikasi Anda. Pendekatan ini mengharuskan Anda untuk memodifikasi kode aplikasi Anda.
Di aplikasi Anda, tambahkan kode berikut untuk mengabaikan validasi sertifikat SSL:
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
Perhatian
Pastikan untuk menghapus kode ini sebelum menyebarkan aplikasi Anda ke produksi.