Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Överblick
Mål: Använda Dev Proxy med .NET i Docker
Tid: 15 minuter
Plugins: Olika
Krav:Konfigurera Dev Proxy, Docker installerat
Om du kör .NET-programmet i en Docker-container och vill använda Dev Proxy finns det flera steg som du måste följa för att få det att fungera.
Konfigurera proxy för din Docker-container
Eftersom din .NET-app körs i en Docker-container och Dev Proxy körs på din värddator måste du konfigurera proxyn så att den pekar på din dators IP-adress (http://192.0.2.13 i följande exempel). .NET använder HTTPS_PROXY miljövariabeln för att konfigurera proxyn för sin HTTP-klient. Om du vill konfigurera variabeln för Docker-containern använder du --env, -e alternativet när du startar containern:
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
Viktigt!
När du använder Dev Proxy på macOS måste du koppla den till 0.0.0.0 adressen för att göra den tillgänglig från Docker-containern. Om du vill konfigurera IP-adressen för Dev Proxy startar du den med följande kommando:
devproxy --ip-address 0.0.0.0
Viktigt!
När du använder Dev Proxy i Linux måste du koppla den till 0.0.0.0 adressen för att göra den tillgänglig från Docker-containern. Om du vill konfigurera IP-adressen för Dev Proxy startar du den med följande kommando:
devproxy --ip-address 0.0.0.0
Hantera SSL-certifikat
Dev Proxy använder sitt eget SSL-certifikat för att inspektera HTTPS-trafik som fångas upp från ditt program. När du installerar Dev Proxy på datorn genereras ett självsignerat SSL-certifikat och läggs till i listan över betrodda certifikat. Men när du kör programmet i en Docker-container har containern inte åtkomst till SSL-certifikatet som är installerat på datorn. Det finns två sätt för dig att hantera SSL-certifikat när du använder Dev Proxy med .NET-program som körs i Docker-containrar.
Konfigurera Dev Proxy-certifikat i Docker-containern
Om du vill tillåta Dev Proxy att inspektera HTTPS-begäranden kan du konfigurera Dev Proxy SSL-certifikatet som betrott i Docker-containern.
Viktigt!
Eftersom Docker inte bevarar ändringar i en container när den har stängts måste du upprepa de här stegen varje gång du startar containern. Undvik detta genom att skapa en anpassad Docker-avbildning med följande steg.
Börja genom att exportera Dev Proxy-certifikatet till PEM.
Om du vill exportera Dev Proxy-certifikatet till PEM i Windows behöver openssldu . Det här exemplet förutsätter att du använder openssl det som tillhandahålls tillsammans med git , men du kan även installera det separat.
Justera installationskatalogen för Dev Proxy och git och kör följande skript i 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"
När du uppmanas att ange lösenordet trycker du på Retur utan att skriva något.
# 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
Kopiera sedan certifikatet till Docker-containern. Det enklaste sättet att kopiera certifikatet är att kopiera det till projektmappen som du monterar i containern.
I Docker-containern litar du sedan på certifikatet. Om du använder avbildningen mcr.microsoft.com/dotnet/sdk kan du använda följande kommandon:
# 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
Ignorera SSL-certifikatverifiering i .NET-programmet
Ett annat sätt att hantera SSL-certifikat när du använder Dev Proxy med .NET-program som körs i Docker-containrar är att ignorera SSL-certifikatverifiering i ditt program. Den här metoden kräver att du ändrar programkoden.
I ditt program lägger du till följande kod för att ignorera SSL-certifikatverifiering:
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
Varning
Se till att ta bort den här koden innan du distribuerar programmet till produktion.