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.