Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir bakışta
Hedef: Docker'da .NET ile Dev Proxy kullanma
Süre: 15 dakika
Eklentiler: Çeşitli
Önkoşullar:Geliştirme Proxy'sini ayarlama, Docker'ın yüklü olması
.NET uygulamanızı bir Docker kapsayıcısında çalıştırıyor ve Dev Proxy kullanmak istiyorsanız, çalışmasını sağlamak için izlemeniz gereken birkaç adım vardır.
Docker kapsayıcınız için proxy yapılandırma
.NET uygulamanız bir Docker kapsayıcısında ve Geliştirme Proxy'si ana bilgisayarınızda çalıştığından, ara sunucuyu bilgisayarınızın IP adresine işaret edecek şekilde yapılandırmanız gerekir (http://192.0.2.13 aşağıdaki örnekte). .NET, HTTP istemcisi için ara sunucuyu yapılandırmak için ortam değişkenini kullanır HTTPS_PROXY . Docker kapsayıcınızın değişkenini yapılandırmak için kapsayıcıyı --env, -e başlatırken seçeneğini kullanın:
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
Önemli
macOS üzerinde Dev Proxy kullanırken Docker kapsayıcısından erişilebilir olmasını sağlamak için bu proxy'yi adrese eklemeniz 0.0.0.0 gerekir. Dev Proxy'nin IP adresini yapılandırmak için aşağıdaki komutla başlatın:
devproxy --ip-address 0.0.0.0
Önemli
Linux'ta Dev Proxy kullanırken Docker kapsayıcısından erişilebilir olmasını sağlamak için bu proxy'yi adrese eklemeniz 0.0.0.0 gerekir. Dev Proxy'nin IP adresini yapılandırmak için aşağıdaki komutla başlatın:
devproxy --ip-address 0.0.0.0
SSL sertifikalarını işleme
Dev Proxy, uygulamanızdan kesilen HTTPS trafiğini incelemek için kendi SSL sertifikasını kullanır. Dev Proxy'yi bilgisayarınıza yüklediğinizde, otomatik olarak imzalanan bir SSL sertifikası oluşturur ve bunu güvenilen sertifikalar listesine ekler. Ancak, uygulamanızı bir Docker kapsayıcısında çalıştırırken, kapsayıcının bilgisayarınızda yüklü SSL sertifikasına erişimi yoktur. Docker kapsayıcılarında çalışan .NET uygulamalarıyla Dev Proxy kullanırken SSL sertifikalarını işlemenin iki yolu vardır.
Docker kapsayıcınızda Dev Proxy sertifikasını yapılandırma
Geliştirme Proxy'sinin HTTPS isteklerini incelemesine izin vermek için, Geliştirme Ara Sunucusu SSL sertifikasını Docker kapsayıcınızda güvenilir olarak yapılandırabilirsiniz.
Önemli
Docker, kapsayıcıyı kapattıktan sonra değişiklikleri kalıcı hale getirmediğinden, kapsayıcıyı her başlattığınızda bu adımları yinelemeniz gerekir. Bunu önlemek için aşağıdaki adımları içeren özel bir Docker görüntüsü oluşturun.
Başlangıç olarak Geliştirme Ara Sunucusu sertifikasını PEM'e aktarın.
Geliştirme Proxy sertifikasını Windows üzerinde PEM'ye aktarmak için openssl gerekir. Bu örnekte, openssl ile birlikte sağlanan git öğesini kullandığınız varsayılmaktadır, ancak bunu ayrı olarak da yükleyebilirsiniz.
Geliştirme Proxy'si ve git yükleme dizinini ayarlayın ve PowerShell'de aşağıdaki betiği çalıştırın.
$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"
Parola girmeniz istendiğinde, hiçbir şey yazmadan Enter tuşuna basın.
# 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
Ardından sertifikayı Docker kapsayıcınıza kopyalayın. Sertifikayı kopyalamanın en kolay yolu, sertifikayı kapsayıcıya bağladığınız proje klasörüne kopyalamaktır.
Ardından Docker kapsayıcısında sertifikaya güvenin. Görüntüyü mcr.microsoft.com/dotnet/sdk kullanıyorsanız, aşağıdaki komutları kullanabilirsiniz:
# 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
.NET uygulamanızda SSL sertifika doğrulamayı yoksayma
Docker kapsayıcılarında çalışan .NET uygulamalarıyla Dev Proxy kullanırken SSL sertifikalarını işlemenin bir diğer yolu da uygulamanızda SSL sertifika doğrulamasını yoksaymaktır. Bu yaklaşım, uygulama kodunuzu değiştirmenizi gerektirir.
Uygulamanızda SSL sertifika doğrulamasını yoksaymak için aşağıdaki kodu ekleyin:
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
Dikkat
Uygulamanızı üretim ortamına dağıtmadan önce bu kodu kaldırdığınızdan emin olun.