Sdílet prostřednictvím


Použití Dev Proxy s aplikacemi .NET spuštěnými v Dockeru

Pokud aplikaci .NET spustíte v kontejneru Dockeru a chcete používat Dev Proxy, musíte postupovat podle několika kroků, aby fungovala.

Konfigurace proxy serveru pro kontejner Dockeru

Vzhledem k tomu, že aplikace .NET běží v kontejneru Dockeru a dev Proxy běží na vašem hostiteli, musíte nakonfigurovat proxy server tak, aby odkazovat na IP adresu počítače (http://192.0.2.13 v následujícím příkladu). .NET používá proměnnou HTTPS_PROXY prostředí ke konfiguraci proxy serveru pro svého klienta HTTP. Pokud chcete nakonfigurovat proměnnou pro kontejner Dockeru, použijte při --env, -e spuštění kontejneru možnost:

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

Důležité

Pokud používáte Dev Proxy v systému macOS, musíte ho 0.0.0.0 připojit k adrese, aby byla přístupná z kontejneru Dockeru. Pokud chcete nakonfigurovat IP adresu pro dev Proxy, spusťte ji následujícím příkazem:

devproxy --ip-address 0.0.0.0

Důležité

Pokud používáte Dev Proxy v Linuxu, musíte ho 0.0.0.0 připojit k adrese, aby byla přístupná z kontejneru Dockeru. Pokud chcete nakonfigurovat IP adresu pro dev Proxy, spusťte ji následujícím příkazem:

devproxy --ip-address 0.0.0.0

Zpracování certifikátů SSL

Dev Proxy používá vlastní certifikát SSL ke kontrole provozu HTTPS zachyceného z vaší aplikace. Když nainstalujete Dev Proxy na počítač, vygeneruje certifikát SSL podepsaný svým držitelem a přidá ho do seznamu důvěryhodných certifikátů. Při spuštění aplikace v kontejneru Dockeru ale kontejner nemá přístup k certifikátu SSL nainstalovanému na vašem počítači. Při použití dev Proxy s aplikacemi .NET spuštěnými v kontejnerech Dockeru můžete zpracovávat certifikáty SSL dvěma způsoby.

Konfigurace certifikátu dev proxy v kontejneru Dockeru

Pokud chcete službě Dev Proxy povolit kontrolu požadavků HTTPS, můžete v kontejneru Dockeru nakonfigurovat certifikát SSL dev Proxy jako důvěryhodný.

Důležité

Vzhledem k tomu, že Docker po zavření kontejneru neuchovává změny, budete muset tyto kroky opakovat při každém spuštění kontejneru. Abyste tomu předešli, vytvořte vlastní image Dockeru s následujícími kroky.

Začněte exportem certifikátu dev proxy do PEM.

K exportu certifikátu dev Proxy do PEM ve Windows potřebujete openssl. V tomto příkladu se předpokládá, že používáte openssl společně s git ním, ale můžete ho nainstalovat i samostatně.

Upravte instalační adresář Dev Proxy a Git a spusťte v PowerShellu následující skript.

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

Po zobrazení výzvy k zadání hesla stiskněte Enter bez zadání čehokoli.

# 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

Dále zkopírujte certifikát do kontejneru Dockeru. Nejjednodušší způsob, jak certifikát zkopírovat, je zkopírovat ho do složky projektu, kterou připojíte ke kontejneru.

Potom v kontejneru Dockeru důvěřovat certifikátu. Pokud image používáte mcr.microsoft.com/dotnet/sdk , můžete použít následující příkazy:

# 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

Ignorování ověření certifikátu SSL v aplikaci .NET

Dalším způsobem, jak zpracovávat certifikáty SSL při použití dev Proxy s aplikacemi .NET spuštěnými v kontejnerech Dockeru, je ignorovat ověřování certifikátů SSL ve vaší aplikaci. Tento přístup vyžaduje, abyste upravili kód aplikace.

Do aplikace přidejte následující kód, který bude ignorovat ověření certifikátu SSL:

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

Upozornění

Před nasazením aplikace do produkčního prostředí nezapomeňte tento kód odebrat.