Megosztás a következőn keresztül:


Dev Proxy használata a Dockerben futó .NET-alkalmazásokkal

Ha egy Docker-tárolóban futtatja a .NET-alkalmazást, és dev proxyt szeretne használni, több lépést is be kell tartania ahhoz, hogy működjön.

Proxy konfigurálása a Docker-tárolóhoz

Mivel a .NET-alkalmazás egy Docker-tárolóban fut, és a Dev Proxy a gazdagépen fut, konfigurálnia kell a proxyt, hogy a számítógép IP-címére mutasson (http://192.0.2.13 az alábbi példában). A .NET a HTTPS_PROXY környezeti változót használja a HTTP-ügyfél proxyjának konfigurálásához. A Docker-tároló változójának konfigurálásához használja a --env, -e következő lehetőséget a tároló indításakor:

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

Fontos

Ha a Dev Proxyt macOS rendszeren használja, csatolnia kell a 0.0.0.0 címhez, hogy elérhetővé tegye a Docker-tárolóból. A Dev Proxy IP-címének konfigurálásához indítsa el a következő paranccsal:

devproxy --ip-address 0.0.0.0

Fontos

Ha Dev Proxyt használ Linuxon, a címhez 0.0.0.0 kell csatolnia, hogy elérhető legyen a Docker-tárolóból. A Dev Proxy IP-címének konfigurálásához indítsa el a következő paranccsal:

devproxy --ip-address 0.0.0.0

SSL-tanúsítványok kezelése

A Dev Proxy saját SSL-tanúsítványával vizsgálja meg az alkalmazásból lehallgatott HTTPS-forgalmat. Amikor telepíti a dev proxyt a számítógépre, az létrehoz egy önaláírt SSL-tanúsítványt, és hozzáadja a megbízható tanúsítványok listájához. Ha azonban egy Docker-tárolóban futtatja az alkalmazást, a tároló nem fér hozzá a számítógépre telepített SSL-tanúsítványhoz. Kétféleképpen kezelheti az SSL-tanúsítványokat, ha a Dev Proxyt Docker-tárolókban futó .NET-alkalmazásokkal használja.

Fejlesztői proxytanúsítvány konfigurálása a Docker-tárolóban

Ha engedélyezni szeretné, hogy a Dev Proxy megvizsgálja a HTTPS-kérelmeket, konfigurálhatja a Dev Proxy SSL-tanúsítványát megbízhatóként a Docker-tárolóban.

Fontos

Mivel a Docker nem őriz meg módosításokat egy tárolón a bezárása után, ezeket a lépéseket minden alkalommal meg kell ismételnie, amikor elindítja a tárolót. Ennek elkerülése érdekében hozzon létre egy egyéni Docker-rendszerképet a következő lépésekkel.

Először exportálja a Dev Proxy tanúsítványt a PEM-be.

A Dev Proxy tanúsítvány windowsos PEM-be való exportálásához a következőre van szükség openssl: . Ez a példa feltételezi, hogy a openssl együtt használja a git-nel, de külön is telepítheti.

Módosítsa a Fejlesztői proxy és a Git telepítési könyvtárát, és futtassa a következő szkriptet a PowerShellben.

$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"

Amikor a rendszer kéri a jelszó megadását, nyomja le az Enter billentyűt anélkül, hogy bármit beírna.

# 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

Ezután másolja a tanúsítványt a Docker-tárolóba. A tanúsítvány másolásának legegyszerűbb módja, ha azt a projektmappába másolja, amelyet a tárolóhoz csatlakoztat.

Ezután a Docker-tárolóban bízzon meg a tanúsítványban. Ha a mcr.microsoft.com/dotnet/sdk képet használja, a következő parancsokat használhatja:

# 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-tanúsítvány érvényesítése figyelmen kívül hagyása a .NET-alkalmazásban

Az SSL-tanúsítványok docker-tárolókban futó .NET-alkalmazásokkal való használatának alternatív módja, ha a Dev Proxy-t használja, hogy figyelmen kívül hagyja az SSL-tanúsítványok érvényesítését az alkalmazásban. Ehhez a megközelítéshez módosítania kell az alkalmazáskódot.

Az alkalmazásban adja hozzá a következő kódot az SSL-tanúsítványok érvényesítésének figyelmen kívül hagyásához:

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

Figyelemfelhívás

Az alkalmazás éles környezetben való üzembe helyezése előtt mindenképpen távolítsa el ezt a kódot.