Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A fejlesztési és tesztelési forgatókönyvekhez különböző módokon hozhat létre és használhat önaláírt tanúsítványokat. Ez a cikk az önaláírt tanúsítványok használatát ismerteti dotnet dev-certs
-vel, valamint más lehetőségekkel, mint például PowerShell
és OpenSSL
.
Ezután ellenőrizheti, hogy a tanúsítvány betöltődik-e egy példával, például egy tárolóban üzemeltetett ASP.NET Core-alkalmazással .
Előfeltételek
A dotnet dev-certs
esetében győződjön meg róla, hogy a megfelelő .NET verzió telepítve van.
Ehhez a mintához a Docker 17.06 verzió vagy újabb, valamint a Docker-ügyfélszükséges.
Mintaalkalmazás előkészítése
Ebben az útmutatóban egy mintaalkalmazást fog használni, és szükség esetén módosításokat hajt végre.
Ellenőrizze, hogy a Dockerfile mintaalkalmazás a .NET 8-at használja-e.
A gazdagép operációs rendszerétől függően előfordulhat, hogy frissítenie kell a ASP.NET futtatókörnyezetet. Például, ha a megfelelő Windows futtatókörnyezetet kívánja megcélozni, módosítsa a Dockerfile-ban mcr.microsoft.com/dotnet/aspnet:8.0-nanoservercore-2009 AS runtime
mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 AS runtime
-re.
Ez segíthet például a tanúsítványok Windows rendszeren történő tesztelésében:
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore -r win-x64
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app -r win-x64 --self-contained false --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 AS runtime
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["aspnetapp"]
Ha Linuxon teszteli a tanúsítványokat, használhatja a meglévő Dockerfile-t.
Győződjön meg arról, hogy a aspnetapp.csproj
megfelelő cél-keretrendszert tartalmazza:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<!--Other Properties-->
</PropertyGroup>
</Project>
Megjegyzés:
Ha dotnet publish
paraméterekkel szeretné optimalizálni az üzembe helyezést, győződjön meg arról, hogy szerepelnek a megfelelő függőségek az SSL-tanúsítványok támogatásához. Frissítse a dotnet-docker\samples\aspnetapp\aspnetapp.csproj fájlt, hogy meggyőződjön arról, hogy a megfelelő szerelvények szerepelnek a tárolóban. Referenciaként tekintse meg, hogyan frissítheti a .csproj fájlt az SSL-tanúsítványok támogatásához, amikor önálló üzemelő példányoknál végez nyesést.
Győződjön meg arról, hogy a mintaalkalmazásra hivatkozik.
cd .\dotnet-docker\samples\aspnetapp
Hozza létre a tárolót a helyi teszteléshez.
docker build -t aspnetapp:my-sample -f Dockerfile .
Önaláírt tanúsítvány létrehozása
Önaláírt tanúsítványt is létrehozhat:
Dotnet dev-certs használatával
dotnet dev-certs
önaláírt tanúsítványokkal való munka érdekében használható.
dotnet dev-certs https -ep $env:USERPROFILE\.aspnet\https\aspnetapp.pfx -p crypticpassword
dotnet dev-certs https --trust
Megjegyzés:
Ebben az esetben az aspnetapp.pfx tanúsítványnévnek meg kell egyeznie a projektszerelvény nevével.
crypticpassword
az ön által választott jelszó helyettesítőjeként használható. Ha a konzol a következőt adja vissza: "Érvényes HTTPS-tanúsítvány már létezik", akkor egy megbízható tanúsítvány már létezik az áruházban. Az MMC-konzollal exportálható.
Az alkalmazás titkos kulcsainak konfigurálása a tanúsítványhoz:
dotnet user-secrets -p aspnetapp\aspnetapp.csproj init
dotnet user-secrets -p aspnetapp\aspnetapp.csproj set "Kestrel:Certificates:Development:Password" "crypticpassword"
Megjegyzés:
Megjegyzés: A jelszónak meg kell egyeznie a tanúsítványhoz használt jelszóval.
Futtassa a konténerképet a HTTPS-hez konfigurált ASP.NET Core-ral.
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_ENVIRONMENT=Development -v $env:APPDATA\microsoft\UserSecrets\:C:\Users\ContainerUser\AppData\Roaming\microsoft\UserSecrets -v $env:USERPROFILE\.aspnet\https:C:\Users\ContainerUser\AppData\Roaming\ASP.NET\Https mcr.microsoft.com/dotnet/samples:aspnetapp
Az alkalmazás elindítása után navigáljon a https://localhost:8001
címre a webböngészőjében.
Takarítás
Ha a titkos kulcsok és tanúsítványok nincsenek használatban, mindenképpen törölje őket.
dotnet user-secrets remove "Kestrel:Certificates:Development:Password" -p aspnetapp\aspnetapp.csproj
dotnet dev-certs https --clean
A PowerShell-lel
A PowerShell használatával önaláírt tanúsítványokat hozhat létre. A PKI-ügyfél használható önaláírt tanúsítvány létrehozásához.
$cert = New-SelfSignedCertificate -DnsName @("contoso.com", "www.contoso.com") -CertStoreLocation "cert:\LocalMachine\My"
A tanúsítvány létrejön, de tesztelés céljából egy tanúsítványtárolóba kell helyezni a böngészőben való teszteléshez.
$certKeyPath = "c:\certs\contoso.com.pfx"
$password = ConvertTo-SecureString 'password' -AsPlainText -Force
$cert | Export-PfxCertificate -FilePath $certKeyPath -Password $password
$rootCert = $(Import-PfxCertificate -FilePath $certKeyPath -CertStoreLocation 'Cert:\LocalMachine\Root' -Password $password)
Ezen a ponton a tanúsítványoknak egy MMC beépülő modulból kell megtekinthetőknek lenniük.
A mintatároló futtatható a Linux windowsos alrendszerében (WSL):
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_ENVIRONMENT=Development -e ASPNETCORE_Kestrel__Certificates__Default__Password="password" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/contoso.com.pfx -v /c/certs:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
Megjegyzés:
Fontos megjegyezni, hogy a kötet csatolásakor a fájl elérési útja eltérően kezelhető a kiszolgáló alapján. A WSL-ben például a /c/certs értéket /mnt/c/certsre cserélheti.
Ha a Windowshoz korábban létrehozott tárolót használja, a futtatási parancs a következőhöz hasonlóan fog kinézni:
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_ENVIRONMENT=Development -e ASPNETCORE_Kestrel__Certificates__Default__Password="password" -e ASPNETCORE_Kestrel__Certificates__Default__Path=c:\https\contoso.com.pfx -v c:\certs:C:\https aspnetapp:my-sample
Ha az alkalmazás elkészült, keresse meg a contoso.com:8001 egy böngészőben.
Győződjön meg arról, hogy a gazdagép bejegyzései frissítve vannak, hogy contoso.com
a megfelelő IP-címre válaszoljon (például 127.0.0.1). Ha a tanúsítvány nem ismerhető fel, győződjön meg arról, hogy a tárolóval betöltött tanúsítvány is megbízható a gazdagépen, és hogy vannak-e megfelelő SAN/DNS-bejegyzések a contoso.com
számára.
Takarítás
$cert | Remove-Item
Get-ChildItem $certKeyPath | Remove-Item
$rootCert | Remove-item
OpenSSL-vel
Az OpenSSL használatával önaláírt tanúsítványokat hozhat létre. Ez a példa WSL/Ubuntu és bash parancsértelmezővel OpenSSL
használ.
Ez a parancs létrehoz egy .crt és egy .key.
PARENT="contoso.com"
openssl req \
-x509 \
-newkey rsa:4096 \
-sha256 \
-days 365 \
-nodes \
-keyout $PARENT.key \
-out $PARENT.crt \
-subj "/CN=${PARENT}" \
-extensions v3_ca \
-extensions v3_req \
-config <( \
echo '[req]'; \
echo 'default_bits= 4096'; \
echo 'distinguished_name=req'; \
echo 'x509_extension = v3_ca'; \
echo 'req_extensions = v3_req'; \
echo '[v3_req]'; \
echo 'basicConstraints = CA:FALSE'; \
echo 'keyUsage = nonRepudiation, digitalSignature, keyEncipherment'; \
echo 'subjectAltName = @alt_names'; \
echo '[ alt_names ]'; \
echo "DNS.1 = www.${PARENT}"; \
echo "DNS.2 = ${PARENT}"; \
echo '[ v3_ca ]'; \
echo 'subjectKeyIdentifier=hash'; \
echo 'authorityKeyIdentifier=keyid:always,issuer'; \
echo 'basicConstraints = critical, CA:TRUE, pathlen:0'; \
echo 'keyUsage = critical, cRLSign, keyCertSign'; \
echo 'extendedKeyUsage = serverAuth, clientAuth')
openssl x509 -noout -text -in $PARENT.crt
.pfx lekéréséhez használja a következő parancsot:
openssl pkcs12 -export -out $PARENT.pfx -inkey $PARENT.key -in $PARENT.crt
Megjegyzés:
A .NET 5-től kezdve a Kestrel a jelszóval rendelkező .pfx fájlok mellett .crt és PEM kódolású .key fájlokat is használhat.
A gazda operációs rendszerétől függően a tanúsítványt megbízhatóvá kell tenni. Linux-gazdagépen a tanúsítvány "megbízhatósága" más és disztribúciótól függ.
Az útmutató alkalmazásában íme egy példa a Windowsban a PowerShell használatával:
Import-Certificate -FilePath $certKeyPath -CertStoreLocation 'Cert:\LocalMachine\Root'
Futtassa a mintát a következő paranccsal a WSL-ben:
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_ENVIRONMENT=Development -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/contoso.com.crt -e ASPNETCORE_Kestrel__Certificates__Default__KeyPath=/https/contoso.com.key -v /c/path/to/certs:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
Megjegyzés:
A WSL-ben a kötet csatlakoztatási útvonala a konfigurációtól függően változhat.
Futtassa a következő parancsot a PowerShellben:
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_ENVIRONMENT=Development -e ASPNETCORE_Kestrel__Certificates__Default__Path=c:\https\contoso.com.crt -e ASPNETCORE_Kestrel__Certificates__Default__KeyPath=c:\https\contoso.com.key -v c:\certs:C:\https aspnetapp:my-sample
Ha az alkalmazás elkészült, keresse meg a contoso.com:8001 egy böngészőben.
Győződjön meg arról, hogy a gazdagép bejegyzései frissítve vannak, hogy contoso.com
a megfelelő IP-címre válaszoljon (például 127.0.0.1). Ha a tanúsítvány nem ismerhető fel, győződjön meg arról, hogy a tárolóval betöltött tanúsítvány is megbízható a gazdagépen, és hogy vannak-e megfelelő SAN/DNS-bejegyzések a contoso.com
számára.
Takarítás
A tesztelés után mindenképpen törölje az önaláírt tanúsítványokat.
Get-ChildItem $certKeyPath | Remove-Item