Delen via


Dev Proxy gebruiken met .NET-toepassingen die worden uitgevoerd in Docker

Als u uw .NET-toepassing uitvoert in een Docker-container en dev proxy wilt gebruiken, zijn er verschillende stappen die u moet volgen om deze te laten werken.

Proxy configureren voor uw Docker-container

Omdat uw .NET-app wordt uitgevoerd in een Docker-container en Dev Proxy wordt uitgevoerd op uw host, moet u de proxy zo configureren dat deze verwijst naar het IP-adres van uw computer (http://192.0.2.13 in het volgende voorbeeld). .NET gebruikt de HTTPS_PROXY omgevingsvariabele om de proxy voor de HTTP-client te configureren. Als u de variabele voor uw Docker-container wilt configureren, gebruikt u de --env, -e optie bij het starten van de container:

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

Belangrijk

Wanneer u Dev Proxy in macOS gebruikt, moet u deze koppelen aan het 0.0.0.0 adres om deze toegankelijk te maken vanuit de Docker-container. Als u het IP-adres voor dev proxy wilt configureren, start u het met de volgende opdracht:

devproxy --ip-address 0.0.0.0

Belangrijk

Wanneer u Dev Proxy in Linux gebruikt, moet u deze koppelen aan het 0.0.0.0 adres om deze toegankelijk te maken vanuit de Docker-container. Als u het IP-adres voor dev proxy wilt configureren, start u het met de volgende opdracht:

devproxy --ip-address 0.0.0.0

SSL-certificaten verwerken

Dev Proxy gebruikt een eigen SSL-certificaat om HTTPS-verkeer te inspecteren dat vanuit uw toepassing wordt onderschept. Wanneer u Dev Proxy op uw computer installeert, wordt er een zelfondertekend SSL-certificaat gegenereerd en toegevoegd aan de lijst met vertrouwde certificaten. Wanneer u uw toepassing echter uitvoert in een Docker-container, heeft de container geen toegang tot het SSL-certificaat dat op uw computer is geïnstalleerd. Er zijn twee manieren om SSL-certificaten te verwerken wanneer u Dev Proxy gebruikt met .NET-toepassingen die worden uitgevoerd in Docker-containers.

Dev Proxy-certificaat configureren in uw Docker-container

Als u wilt toestaan dat Dev Proxy HTTPS-aanvragen inspecteert, kunt u het SSL-certificaat voor dev-proxy configureren als vertrouwd in uw Docker-container.

Belangrijk

Omdat Docker na het sluiten geen wijzigingen in een container blijft behouden, moet u deze stappen telkens herhalen wanneer u de container start. U kunt dit voorkomen door een aangepaste Docker-installatiekopieën te maken met de volgende stappen.

Exporteer eerst het Dev Proxy-certificaat naar PEM.

Als u het Dev Proxy-certificaat wilt exporteren naar PEM in Windows, hebt u het nodig openssl. In dit voorbeeld wordt ervan uitgegaan dat u deze samen gebruikt openssl git , maar u kunt deze ook afzonderlijk installeren.

Pas de dev-proxy en git-installatiemap aan en voer het volgende script uit in 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"

Wanneer u wordt gevraagd het wachtwoord in te voeren, drukt u op Enter zonder iets te typen.

# 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

Kopieer vervolgens het certificaat naar uw Docker-container. De eenvoudigste manier om het certificaat te kopiëren, is door het te kopiëren naar de projectmap, die u aan de container koppelt.

Vertrouw vervolgens in de Docker-container het certificaat. Als u de mcr.microsoft.com/dotnet/sdk installatiekopieën gebruikt, kunt u de volgende opdrachten gebruiken:

# 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

SSL-certificaatvalidatie negeren in uw .NET-toepassing

Een andere manier om SSL-certificaten te verwerken wanneer u Dev Proxy gebruikt met .NET-toepassingen die worden uitgevoerd in Docker-containers, is het negeren van SSL-certificaatvalidatie in uw toepassing. Voor deze aanpak moet u de toepassingscode wijzigen.

Voeg in uw toepassing de volgende code toe om ssl-certificaatvalidatie te negeren:

ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;

Let op

Verwijder deze code voordat u uw toepassing in productie implementeert.