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 https/TLS használatára vonatkozó bejövő kérések ASP.NET Core-alkalmazásokhoz való kényszerítéséhez a következőt teheti:
- Minden kéréshez HTTPS-t kell igényelni.
- Az összes HTTP-kérés átirányítása HTTPS-be.
Egyetlen API sem akadályozhatja meg, hogy az ügyfél bizalmas adatokat küldjön az első kérelemre.
Ez a cikk azt ismerteti, hogyan konfigurálhatja a ASP.NET Core-alkalmazásokat, hogy HTTPS/TLS-t igényeljenek, vagy hogyan irányíthatók át HTTP-kérelmek a HTTPS/TLS-hez a biztonságos interakció érdekében. A különböző platformok hibaelhárítási lépései a nem megbízható tanúsítványokkal kapcsolatos problémák megoldásához szükségesek.
API-projektek
A webes API-kat használó projekteknek a következőkre kell törekednie:
- Nem figyel a HTTP-n.
- Zárja be a kapcsolatot a 400-ás állapotkóddal (hibás kérés), és ne szolgálja ki a kérést.
Ha le szeretné tiltani a HTTP-átirányítást egy API-ban, állítsa be a ASPNETCORE_URLS környezeti változót, vagy használja a parancssori --urls jelzőt. További információ: ASP.NET Core futtatókörnyezetek és 8 módszer az ASP.NET Core-alkalmazások URL-címeinek beállítására Andrew Lock által.
Warning
Ne használjon RequireHttpsAttribute olyan webes API-kat, amelyek bizalmas információkat kapnak.
RequireHttpsAttribute HTTP-állapotkódokkal irányítja át a böngészőket a HTTP-ről a HTTPS-be.
Előfordulhat, hogy az API-ügyfelek nem értik vagy nem tartják be a HTTP-ről HTTPS-re történő átirányításokat, és http-en keresztül is küldhetnek információkat.
HSTS- és API-projektek
A HTTP Strict Transport Security (HSTS) protokoll biztonságos megközelítése, hogy az API-projekteket úgy konfigurálja, hogy csak a HTTPS-n keresztül hallgassanak és válaszoljanak.
Warning
Az alapértelmezett API-projektek nem tartalmazzák a HSTS-t , mert általában csak böngészőbeli utasítások. Más hívók, például telefonos vagy asztali alkalmazások , nem tartják be az utasításokat. Még a böngészőkben is fennáll a veszélye annak, hogy egy API http-n keresztüli hitelesített hívása nem biztonságos hálózatokat veszélyeztet.
HTTP-átirányítás HTTPS-hez (ERR_INVALID_REDIRECT CORS-elővizsgálati kérelem esetén)
Ha egy HTTP-t használó végpontra irányuló kérést a UseHttpsRedirection metódussal HTTPS-re irányítanak át, az átirányítás a CORS elővizsgálati kérés során a(z) ERR_INVALID_REDIRECT hibával meghiúsul.
Az API-projektek elutasíthatják a HTTP-kéréseket ahelyett, hogy a metódust használva átirányítanák a UseHttpsRedirection kéréseket a HTTPS-be.
HTTPS megkövetelése
Éles ASP.NET Core webalkalmazások esetén a következő megközelítés ajánlott:
A HTTP-kérések HTTPS-hez való átirányításához használja a HTTPS átirányítási köztes szoftverét (UseHttpsRedirection).
Ha HSTS-fejléceket szeretne küldeni az ügyfeleknek, használja a HSTS köztes szoftvereket a UseHsts metóduson keresztül.
Note
A fordított proxykonfigurációban üzembe helyezett alkalmazások lehetővé teszik a proxy számára a kapcsolatbiztonság (HTTPS) kezelését. Ha a proxy a HTTPS-átirányítást is kezeli, nincs szükség HTTPS-átirányítási köztes szoftver használatára. Ha a proxykiszolgáló HSTS-fejlécek írását is kezeli (például natív HSTS-támogatás az Internet Information Services (IIS) 10.0 1709-es vagy újabb verziójában), akkor az alkalmazásnak nincs szüksége HSTS köztes szoftverre. További információ: HTTPS/HSTS letiltása a projektlétrehozáskor.
HTTPS átirányítási köztes szoftver (UseHttpsRedirection)
A következő kód meghívja a UseHttpsRedirection a Program.cs fájlban:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Az előző kiemelt kód:
- Az alapértelmezett HttpsRedirectionOptions.RedirectStatusCode tulajdonságot használja a Status307TemporaryRedirect kóddal.
- Az alapértelmezett HttpsRedirectionOptions.HttpsPort tulajdonságot használja (nullt ad át), hacsak a
ASPNETCORE_HTTPS_PORTkörnyezeti változó vagy a IServerAddressesFeature felül nem írja.
Az ajánlott módszer az ideiglenes átirányítások használata állandó átirányítások helyett. A linkek gyorsítótárazása instabil viselkedést okozhat a fejlesztési környezetekben. Ha inkább állandó átirányítási állapotkódot szeretne küldeni, amikor az alkalmazás nem Development környezetben van, tekintse meg az állandó átirányítások konfigurálása a gyártásban című szakaszt. A HSTS használatával jelezheti az ügyfeleknek, hogy csak biztonságos erőforrás-kérelmeket kell elküldeni az alkalmazásnak (csak éles környezetben).
Note
Ne keverje össze a konfigurációs kulcsot és a HTTPS_PORT környezeti változót, amely a HTTPS átirányítási köztes szoftver portját állítja be a konfigurációs kulccsal és ASPNETCORE_HTTPS_PORTS a HTTPS_PORTS környezeti változóval, amely beállítja a portokat a /HTTP.sys végpontkonfigurációhozKestrel.ASPNETCORE_HTTPS_PORT
Portkonfiguráció
A köztes szoftvernek elérhetőnek kell lennie egy portnak ahhoz, hogy egy nem biztonságos kérést átirányítson a HTTPS-be. Ha nincs elérhető port:
- A HTTPS-hez való átirányítás nem történik meg.
- A köztes szoftver naplózza a figyelmeztetést, amely nem tudta meghatározni a https-portot az átirányításhoz.
Adja meg a HTTPS-portot az alábbi módszerek bármelyikével:
Állítsa be a HttpsRedirectionOptions.HttpsPort értékét.
Állítsa be a
https_portgazdagép beállításait:Gazdagépkonfigurációban.
A
ASPNETCORE_HTTPS_PORTkörnyezeti változó beállításával.Ha hozzáad egy legfelső szintű bejegyzést a appsettings.json fájlhoz:
{ "https_port": 443, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
Jelöljön meg egy portot a biztonságos sémával a ASPNETCORE_URLS környezeti változó használatával. A környezeti változó konfigurálja a kiszolgálót. A köztes szoftver közvetetten felderíti a HTTPS-portot a IServerAddressesFeature. Ez a megközelítés nem működik fordított proxytelepítésekben.
A ASP.NET Core websablonok https URL-címet állít be a Properties/launchsettings.json fájlban Kestrel és az IIS Express esetében is. A launchsettings.json fájl csak a helyi gépen használható.
HTTPS URL-végpontot kell konfigurálni a Kestrel kiszolgáló vagy a HTTP.sys kiszolgáló nyilvános elérhetőségű peremhálózati üzembe helyezéséhez. Az alkalmazás csak egy HTTPS-portot használ. A köztes szoftver a portot észleli a következőn keresztül: IServerAddressesFeature.
Note
Ha egy alkalmazás fordított proxykonfigurációban fut, IServerAddressesFeature nem érhető el. Állítsa be a portot az ebben a szakaszban ismertetett egyéb megközelítések egyikével.
Peremtelepítések
Amikor Kestrel vagy HTTP.sys nyilvános elérésű edge szerverként van használva, akkor Kestrel vagy HTTP.sys úgy kell konfigurálni, hogy mindkettőt figyelje.
- A biztonságos port, amelyre az ügyfél át van irányítva (általában a 443-as port az éles környezetben, és az 5001-es a fejlesztési környezetben).
- A nem biztonságos port (általában 80 éles környezetben és 5000 fejlesztési környezetben).
A nem biztonságos portot az ügyfélnek el kell érnie ahhoz, hogy az alkalmazás nem biztonságos kérést kapjon, és átirányítsa az ügyfelet a biztonságos portra.
További információ: Kestrel végpontkonfiguráció vagy HTTP.sys webkiszolgáló implementálása a ASP.NET Core-ban.
Üzembe helyezési forgatókönyvek
Az ügyfél és a kiszolgáló közötti tűzfalnak nyitva kell lennie a forgalom számára nyitva lévő kommunikációs portokkal is.
Ha a kérések továbbítása fordított proxykonfigurációban történik, használja a továbbított fejlécek köztes szoftverét , mielőtt meghívja a HTTPS-átirányítási köztes szoftvereket. A továbbított fejlécek köztes szoftvere a Request.Scheme elemet a X-Forwarded-Proto fejléc használatával frissíti. A köztes szoftver lehetővé teszi az átirányítási URI-k és más biztonsági szabályzatok megfelelő működését. Ha a továbbított fejlécek middleware-e nincs használatban, előfordulhat, hogy a háttéralkalmazás nem kapja meg a megfelelő sémát, és átirányítási ciklusba kerülhet. Gyakori végfelhasználói hibaüzenet, hogy túl sok átirányítás van.
Az Azure App Service-be történő üzembe helyezéskor kövesse az Egyéni tartomány HTTPS-protokolljának engedélyezése az Azure App Service-ben című útmutatást.
Beállítások
A következő kiemelt kód meghívja a metódust a AddHttpsRedirection köztes szoftver beállításainak konfigurálásához:
using static Microsoft.AspNetCore.Http.StatusCodes;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = Status307TemporaryRedirect;
options.HttpsPort = 5001;
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
A hívás AddHttpsRedirection csak az értékek HttpsPortRedirectStatusCodemódosításához szükséges.
Az előző kiemelt kód:
- A tulajdonságot a HttpsRedirectionOptions.RedirectStatusCodeStatus307TemporaryRedirect kódra állítja, amely az alapértelmezett érték. Használja az StatusCodes osztály mezőit a
RedirectStatusCodehozzárendelésekhez. - A HTTPS-portot 5001-re állítja.
Állandó átirányítások konfigurálása éles környezetben
A köztes szoftver alapértelmezés szerint minden átirányítással Status307TemporaryRedirect kódot küld. Ha az állandó átirányítási állapotkódot szeretné küldeni, amikor az alkalmazás nem környezetiDevelopment állapotban van, csomagolja be a köztes szoftver beállításainak konfigurációját egy feltételes ellenőrzésbe, amely nem környezetiDevelopment állapotot tartalmaz.
Az alábbi kód a szolgáltatások konfigurálását mutatja be a Program.cs fájlban:
using static Microsoft.AspNetCore.Http.StatusCodes;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
if (!builder.Environment.IsDevelopment())
{
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = Status308PermanentRedirect;
options.HttpsPort = 443;
});
}
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
HTTPS-átirányítási köztes szoftver alternatív megközelítése
A HTTPS átirányítási köztes szoftver (a UseHttpsRedirection metódussal) használatának alternatíva az URL-újraírás köztes szoftver használata (a AddRedirectToHttps metóduson keresztül).
AddRedirectToHttps az átirányítás végrehajtásakor az állapotkódot és a portot is beállíthatja. További információkért lásd: URL-átíró köztes szoftver.
Ha az alkalmazás más átirányítási szabályok megkövetelése nélkül átirányítja a HTTPS-hez, a javaslat a HTTPS átirányítási köztes szoftver (UseHttpsRedirection) használata a jelen cikkben leírtak szerint.
HTTP Strict Transport Security (HSTS) protokoll
OWASP-enként a HSTS egy, a webalkalmazás által a válaszfejlécen keresztül megadott bejelentkezési biztonsági fejlesztés. Ha a HSTS-t támogató böngésző a következő fejlécet kapja:
- A böngésző tárolja a tartomány konfigurációját, amely megakadályozza a HTTP-en keresztüli kommunikáció küldését. A böngésző minden kommunikációt HTTPS-en keresztül kényszerít.
- A böngésző megakadályozza, hogy a felhasználó nem megbízható vagy érvénytelen tanúsítványokat használ. A böngésző letiltja azokat a kéréseket, amelyek lehetővé teszik a felhasználó számára, hogy ideiglenesen megbízzanak egy ilyen tanúsítványban.
Mivel az ügyfél kényszeríti a HSTS-t, van néhány korlátozás:
- Az ügyfélnek támogatnia kell a HSTS-t.
- A HSTS legalább egy sikeres HTTPS-kérést igényel a HSTS-szabályzat létrehozásához.
- Az alkalmazásnak minden HTTP-kérést ellenőriznie kell, és át kell irányítania vagy el kell utasítania a HTTP-kérést.
ASP.NET Core a HSTS-t bővítménymetódussal UseHsts implementálja. Az alábbi kódhívások UseHsts , ha az alkalmazás nincs fejlesztési módban:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
UseHsts nem ajánlott a fejlesztés során, mert a HSTS-beállításokat a böngészők könnyen gyorsítótárazhatják. Alapértelmezés szerint UseHsts kizárja a helyi visszacsatolási címet.
Azokban az éles környezetekben, amelyekben első alkalommal vezetik be a HTTPS-t, állítsa a kezdeti HstsOptions.MaxAge tulajdonság értékét alacsony értékre az egyik TimeSpan metódus használatával. Állítsa az értéket legfeljebb egy napra (órákban megadva), arra az esetre, ha vissza kell térnie a HTTPS-infrastruktúráról HTTP-re. Miután biztos a HTTPS-konfiguráció fenntarthatóságában, növelje a HSTS max-age értékét (általában egy év).
A következő kiemelt kód:
using static Microsoft.AspNetCore.Http.StatusCodes;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = Status307TemporaryRedirect;
options.HttpsPort = 5001;
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
- Beállítja a
Strict-Transport-Securityfejléc előbetöltési paraméterét. Az előzetes betöltés nem része az RFC 6797 HSTS-specifikációnak. A webböngészők támogatják a HSTS-webhelyek előzetes telepítését friss telepítéskor. További információért lásd https://hstspreload.org/. - Engedélyezi az
includeSubDomainirányelvet, amely a HSTS-szabályzatot alkalmazza az altartományok üzemeltetésére. További információ: RFC 6797 HSTS-specifikáció (6.1.2. szakasz). - Az
max-agefejlécStrict-Transport-Securityparaméterét explicit módon 60 napra állítja be. Ha nincs beállítva, az alapértelmezés szerint 30 nap. További információkért lásd azmax-agedirektívát az RFC 6797 HSTS specifikációban (6.1.1. szakasz). - A
example.comelemet hozzáadja a kizárandó gazdagépek listájához.
UseHsts kizárja a következő visszacsatolási gazdagépeket:
-
localhost: Az IPv4 visszacsatolási címe. -
127.0.0.1: Az IPv4 visszacsatolási címe. -
[::1]: Az IPv6 visszacsatolási címe.
A HTTPS/HSTS letiltása a projekt létrehozásakor
Bizonyos háttérszolgáltatás-forgatókönyvekben, ahol a kapcsolatbiztonság a hálózat nyilvános elérésű peremhálózatán van kezelve, nem szükséges minden csomóponton konfigurálni a kapcsolatbiztonságot. A Visual Studio sablonjaiból vagy a dotnet új parancsából létrehozott webalkalmazások engedélyezik a HTTPS-átirányítást és a HSTS-t. Az olyan üzemelő példányok esetében, amelyek nem igénylik ezeket a forgatókönyveket, kikapcsolhatja a HTTPS/HSTS szolgáltatást, amikor az alkalmazás a sablonból jön létre.
A HTTPS/HSTS letiltása:
Amikor új ASP.NET Core webalkalmazást hoz létre, törölje a Konfiguráció https beállítás kijelölését:
Megbízható ASP.NET Core HTTPS fejlesztői tanúsítvány
A .NET SDK https fejlesztési tanúsítványt tartalmaz. A tanúsítvány az első futtatás során települ. A parancs például a dotnet --info következő kimenet egy változatát állítja elő:
ASP.NET Core
------------
Successfully installed the ASP.NET Core HTTPS Development Certificate.
To trust the certificate run 'dotnet dev-certs https --trust' (Windows and macOS only).
For establishing trust on other platforms refer to the platform specific documentation.
For more information on configuring HTTPS see https://go.microsoft.com/fwlink/?linkid=848054.
A .NET SDK telepítése telepíti a ASP.NET Core HTTPS fejlesztési tanúsítványt a helyi felhasználói tanúsítványtárolóba. A tanúsítvány telepítve van, de nem megbízható. A tanúsítvány megbízhatóságához hajtsa végre az eszköz futtatásához dotnet dev-certs szükséges egyszeri lépést:
dotnet dev-certs https --trust
Az alábbi parancs segítséget nyújt az dotnet dev-certs eszközről:
dotnet dev-certs https --help
Warning
Ne hozzon létre fejlesztési tanúsítványt újraterjesztésre tervezett környezetben, például tárolólemezképben vagy virtuális gépen. Ez a forgatókönyv hamisításhoz és jogosultságszint-emeléséhez vezethet. A helyzet megelőzése érdekében állítsa a DOTNET_GENERATE_ASPNET_CERTIFICATE környezeti változót false értékre, mielőtt első alkalommal meghívná a .NET parancssori felületet. Ez a megközelítés kihagyja a ASP.NET Core fejlesztési tanúsítvány automatikus létrehozását a parancssori felület első futtatása során.
Fejlesztői tanúsítvány beállítása a Dockerhez
A Docker fejlesztői tanúsítványának konfigurálásához lásd: GitHub dotnet/aspnetcore.docs 6199 - A fejlesztői tanúsítvány beállítása a Docker fejlesztésben való használatakor.
Linux-specifikus szempontok
A Linux-disztribúciók jelentősen eltérnek a tanúsítványok megbízhatóként való megjelölésétől.
Az dotnet dev-certs eszköz várhatóan széles körben alkalmazható lesz, de hivatalos támogatás csak az Ubuntu és a Fedora esetében érhető el. A támogatás kifejezetten a Firefox és a Chromium-alapú böngészők (Microsoft Edge, Chrome és Chromium) megbízhatóságának biztosítására irányul.
Dependencies
- Az OpenSSL hitelességének biztosításához az eszköznek az
opensslelérési útvonalon kell lennie. - A böngésző megbízhatóságának létrehozásához (például a Microsoft Edge vagy a Firefoxban) a
certutileszköznek az elérési úton kell lennie.
OpenSSL-megbízhatóság
Ha egy ASP.NET Core fejlesztési tanúsítvány megbízható, a rendszer exportálja a tanúsítványt az aktuális felhasználó kezdőlapjának egyik mappájába. Ahhoz, hogy az OpenSSL (és az azt használó ügyfelek) felvegyék ezt a mappát, be kell állítania a környezeti változót SSL_CERT_DIR . A változót beállíthatja egy adott munkamenetre egy, a export SSL_CERT_DIR=$HOME/.aspnet/dev-certs/trust:/usr/lib/ssl/certs-hoz hasonló parancs futtatásával (a pontos érték a kimenetben található, amikor átadja a --verbose paramétert), vagy hozzáadhatja a(z) (disztribúció- és rendszerhéjfüggő) konfigurációs fájlhoz (például a .profile fájlhoz).
Ez a megközelítés szükséges ahhoz, hogy az olyan eszközök, mint a curl, megbízzanak a fejlesztői tanúsítványban. Alternatívaként átadhatja a -CAfile vagy -CApath értéket minden egyes curl hívásnak.
Note
Az 1.1.1h vagy újabb, illetve a 3.0.0-s vagy újabb verzió szükséges, attól függően, hogy melyik főverziót használja.
Ha az OpenSSL-megbízhatóság rossz állapotba kerül (például ha dotnet dev-certs https --clean nem sikerül eltávolítani), a c_rehash eszközzel gyakran megoldhatja a helyzetet.
Overrides
Ha egy másik böngészőt használ a saját Hálózati biztonsági szolgáltatások (NSS) tárolójával, a DOTNET_DEV_CERTS_NSSDB_PATHS környezeti változóval megadhatja az NSS-könyvtárak kettősponttal tagolt listáját (például a könyvtárat, amely cert9.dbtartalmazza). Ezután hozzáadhatja a fejlesztési tanúsítvány helyét a változó listájához.
Ha azOkat a tanúsítványokat tárolja, amelyekben az OpenSSL megbízhatónak szeretne lennie egy adott könyvtárban, a DOTNET_DEV_CERTS_OPENSSL_CERTIFICATE_DIRECTORY környezeti változóval jelezheti a tanúsítvány helyét.
Warning
Ha bármelyik változót beállítja, minden alkalommal, amikor a megbízhatóság frissül, minden alkalommal ugyanazokat az értékeket kell megadnia. Ha az értékek megváltoznak, az eszköz nem tud a korábbi helyeken található tanúsítványokról (például a tanúsítványkarbantartás során).
A sudo használata
A többi platformhoz hasonlóan a fejlesztési tanúsítványok tárolása és megbízhatósága minden felhasználó számára külön történik.
Ha a dotnet dev-certs elemet másik felhasználóként futtatja (például a sudo használatával), akkor konkrétan az a felhasználó (például root) bízik meg a fejlesztési tanúsítványban.
HTTPS-tanúsítvány hitelesítése Linuxon a linux-dev-certs használatával
A linux-dev-certs egy nyílt forráskódú, közösség által támogatott , .NET-alapú globális eszköz, amely kényelmes módot kínál a linuxos fejlesztői tanúsítványok létrehozására és megbízhatóságára. Microsoft nem tartja karban és nem támogatja az eszközt.
Az alábbi parancsok telepítik az eszközt, és létrehoznak egy megbízható fejlesztői tanúsítványt:
dotnet tool update -g linux-dev-certs
dotnet linux-dev-certs install
További információkért vagy a problémák jelentéséhez tekintse meg a Linux-dev-certs GitHub-adattárat.
SUSE Linux Enterprise Server (SLES Linux)
Ha a konfiguráció tartalmazza a SUSE Linux Enterprise Servert, lásd: GitHub dotnet/aspnetcore.docs issue #28292 - HTTPS-tanúsítvány megbízhatóvá tétele SLES rendszeren.
Tanúsítványproblémák elhárítása (a tanúsítvány nem megbízható)
Előfordul, hogy egy ASP.NET Core HTTPS-fejlesztési tanúsítvány telepítve van, és megbízhatónak van jelölve, a böngésző mégis arra figyelmeztet, hogy a tanúsítvány nem megbízható. A következő szakaszok segítséget nyújtanak a probléma elhárításához.
A ASP.NET Core HTTPS fejlesztési tanúsítványt használja a Kestrelrendszer.
Az IIS Express-tanúsítvány javításához lásd: Stack Overflow-probléma #20036984/ válasz #20048613 - Hogyan állíthatom vissza a hiányzó IIS Express SSL-tanúsítványt?
Minden platform – a tanúsítvány nem megbízható
Minden platform esetében próbálja meg megoldani a nem megbízható tanúsítványokkal kapcsolatos problémákat az alábbi lépésekkel:
Futtassa az alábbi parancsot:
dotnet dev-certs https --clean dotnet dev-certs https --trustZárja be a megnyitott böngészőpéldányokat, és nyissa meg az alkalmazást egy új böngészőablakban.
A böngésző gyorsítótára tárolja, hogy egy tanúsítvány megbízható-e. A bezárási/megnyitási folyamat segít frissíteni a tanúsítványok böngészőgyorsítótár-beállításait.
A dotnet dev-certs https parancsok általában megoldják a böngésző megbízhatósági problémáinak többségét. Ha a dotnet dev-certs https --clean parancs sikertelen, és a böngésző továbbra sem bízik meg a tanúsítványban, próbálkozzon a platformspecifikus javaslatokkal a következő szakaszokban.
Docker – a tanúsítvány nem megbízható
Ha Dockert használ, próbálja meg megoldani a problémát az alábbi lépésekkel:
Törölje a C:\Users{USER}\AppData\Roaming\ASP.NET\Https mappát.
Tisztítsa meg az oldatot. Törölje a tároló, a és a obj, valamint a mappákat.
Indítsa újra a fejlesztőeszközt. Például a Visual Studio vagy a Visual Studio Code.
Windows – a tanúsítvány nem megbízható
Ha Windowsban dolgozik, hajtsa végre az alábbi hibaelhárítási lépéseket:
Ellenőrizze a tanúsítványtárolóban található tanúsítványokat. Keressen egy
localhosttanúsítványt aASP.NET Core HTTPS development certificatefelhasználóbarát névvel két mappában:- Aktuális felhasználói > személyes > tanúsítványok
- A felhasználó > megbízható legfelső szintű hitelesítésszolgáltatóinak > aktuális tanúsítványai
Távolítsa el az összes tanúsítványt mind a személyes, mind a megbízható legfelső szintű hitelesítésszolgáltatóktól.
Important
Ne távolítsa el az IIS Express localhost tanúsítványt.
Futtassa az alábbi parancsot:
dotnet dev-certs https --clean dotnet dev-certs https --trustZárja be a megnyitott böngészőpéldányokat, és nyissa meg az alkalmazást egy új böngészőablakban.
OS X – a tanúsítvány nem megbízható
Ha az OS X-et használja, próbálja meg megoldani a problémát az alábbi lépésekkel:
Nyissa meg a KeyChain Accesst, majd válassza ki a rendszerkulcsláncot.
Ellenőrizze, hogy van-e localhost-tanúsítvány.
Győződjön meg arról, hogy a tanúsítvány az ikonon a plusz (
+) szimbólumot jeleníti meg, amely azt jelzi, hogy a tanúsítvány minden felhasználó számára megbízható.Távolítsa el a tanúsítványt a rendszerkulcsláncból.
Futtassa az alábbi parancsot:
dotnet dev-certs https --clean dotnet dev-certs https --trustZárja be a megnyitott böngészőpéldányokat, és nyissa meg az alkalmazást egy új böngészőablakban.
A Visual Studio tanúsítványproblémáinak elhárításáról további információt a GitHub dotnet/aspnetcore probléma #16892) - HTTPS-hiba az IIS Express használatával című témakörben talál.
Linux – a tanúsítvány nem megbízható
Ha Linuxot futtat, kövesse az alábbi lépéseket a nem megbízható tanúsítvány hibaelhárításához:
Győződjön meg arról, hogy a vizsgált tanúsítvány a kiszolgáló által Kestrel használni tervezett felhasználói HTTPS fejlesztői tanúsítvány.
Ellenőrizze az aktuális felhasználó alapértelmezett HTTPS fejlesztői Kestrel tanúsítványát a következő helyen:
ls -la ~/.dotnet/corefx/cryptography/x509stores/myA HTTPS fejlesztői Kestrel tanúsítványfájl az SHA1 lenyomatát tartalmazza. Ha a fájlt a
dotnet dev-certs https --cleanparanccsal törlik, a rendszer szükség esetén egy másik ujjlenyomattal újragenerálja a fájlt.Ellenőrizze az exportált tanúsítvány ujjlenyomatát az alábbi parancs futtatásával:
openssl x509 -noout -fingerprint -sha1 -inform pem -in /usr/local/share/ca-certificates/aspnet/https.crtHa a tanúsítvány ujjlenyomata nem egyezik, vizsgálja meg a következő feltételeket:
Ellenőrizze, hogy a tanúsítvány régi-e.
Ellenőrizze, hogy a tanúsítvány a főfelhasználó exportált fejlesztői tanúsítványa-e.
- Ha igen, exportálja a tanúsítványt.
Ellenőrizze a legfelső szintű felhasználói tanúsítványt a következő mappában:
ls -la /root/.dotnet/corefx/cryptography/x509stores/my
A Visual Studióval használt IIS Express SSL-tanúsítvány
Az IIS Express-tanúsítvánnyal kapcsolatos problémák megoldásához válassza a Repair lehetőséget a Visual Studio telepítőjében. További információ: GitHub dotnet/aspnetcore probléma #16892) - HTTPS-hiba az IIS Express használatával.
A csoportházirend megakadályozza az önaláírt tanúsítványok megbízhatóságát
Bizonyos esetekben a csoportházirend megakadályozhatja az önaláírt tanúsítványok megbízhatóságát. További információ: GitHub dotnet/aspnetcore probléma #21173 - Hiba a HTTPS fejlesztői tanúsítvány megbízhatóságával.
Kapcsolódó tartalom
Note
Ha .NET 9 vagy újabb SDK-t használ, tekintse meg a cikk .NET 9-es verziójában található frissített Linux-eljárásokat.
Warning
API-projektek
Ne használjon RequireHttpsAttribute olyan webes API-kat, amelyek bizalmas információkat kapnak.
RequireHttpsAttribute HTTP-állapotkódokkal irányítja át a böngészőket a HTTP-ről a HTTPS-be. Előfordulhat, hogy az API-ügyfelek nem értik vagy nem tartják be a HTTP-ről HTTPS-re történő átirányításokat. Az ilyen ügyfelek HTTP-en keresztül küldhetnek információkat. A webes API-knak a következőkre van szükség:
- Nem figyel a HTTP-n.
- Zárja be a kapcsolatot a 400-ás állapotkóddal (hibás kérés), és ne szolgálja ki a kérést.
Ha le szeretné tiltani a HTTP-átirányítást egy API-ban, állítsa be a ASPNETCORE_URLS környezeti változót, vagy használja a parancssori --urls jelzőt. További információ: ASP.NET Core futtatókörnyezetek és 8 módszer az ASP.NET Core-alkalmazások URL-címeinek beállítására Andrew Lock által.
HSTS- és API-projektek
Az alapértelmezett API-projektek nem tartalmazzák a HSTS-t , mivel a HSTS általában csak böngészőutasítás . Más hívók, például telefonos vagy asztali alkalmazások , nem tartják be az utasításokat. Még a böngészőkben is fennáll a veszélye annak, hogy egy API http-n keresztüli hitelesített hívása nem biztonságos hálózatokat veszélyeztet. A biztonságos megközelítés az API-projektek konfigurálása, hogy csak a HTTPS-en keresztül hallgassanak és válaszoljanak.
A HTTP-ről HTTPS-re történő átirányítás ERR_INVALID_REDIRECT hibát okoz a CORS-elővizsgálati kérelemben.
A HTTP-t használó végpontra irányuló kérelmek, amelyeket a UseHttpsRedirection HTTPS-re átirányítanak, sikertelenek a CORS elővizsgálati kérelem során ERR_INVALID_REDIRECT.
Az API-projektek elutasíthatják a HTTP-kéréseket, ahelyett, hogy UseHttpsRedirection segítségével irányítanák át a kéréseket HTTPS-re.
HTTPS megkövetelése
Javasoljuk, hogy az éles ASP.NET Core-webalkalmazások a következőket használják:
- HTTPS-átirányítási köztes szoftver (UseHttpsRedirection) a HTTP-kérések HTTPS-be való átirányításához.
- A HSTS köztes szoftver (UseHsts) HTTP Strict Transport Security (HSTS) protokollfejléceket küld az ügyfeleknek.
Note
A fordított proxykonfigurációban üzembe helyezett alkalmazások lehetővé teszik a proxy számára a kapcsolatbiztonság (HTTPS) kezelését. Ha a proxy a HTTPS-átirányítást is kezeli, nincs szükség HTTPS-átirányítási köztes szoftver használatára. Ha a proxykiszolgáló HSTS-fejlécek írását is kezeli (például natív HSTS-támogatás az IIS 10.0 -ban (1709) vagy újabb verziókban), az alkalmazás nem igényli a HSTS köztes szoftver használatát. További információ: HTTPS/HSTS letiltása a projektlétrehozáskor.
HTTPS átirányítási köztes szoftver (UseHttpsRedirection)
A következő kódhívás a UseHttpsRedirection fájlban található: Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Az előző kiemelt kód:
- Az alapértelmezett HttpsRedirectionOptions.RedirectStatusCode (Status307TemporaryRedirect) értéket használja.
- Az alapértelmezett HttpsRedirectionOptions.HttpsPort (null) értéket használja, kivéve, ha azt a
ASPNETCORE_HTTPS_PORTkörnyezeti változó vagy IServerAddressesFeature felülírja.
Javasoljuk, hogy ideiglenes átirányításokat használjunk állandó átirányítások helyett. A linkek gyorsítótárazása instabil viselkedést okozhat a fejlesztési környezetekben. Ha inkább állandó átirányítási állapotkódot szeretne küldeni, amikor az alkalmazás nem Development környezetben van, tekintse meg az állandó átirányítások konfigurálása a gyártásban című szakaszt. Javasoljuk, hogy HSTS használatával jelezhesse az ügyfeleknek, hogy csak biztonságos erőforrás-kérelmeket kell küldeni az alkalmazásnak (csak éles környezetben).
Portkonfiguráció
A köztes szoftvernek elérhetőnek kell lennie egy portnak ahhoz, hogy egy nem biztonságos kérést átirányítson a HTTPS-be. Ha nincs elérhető port:
- A HTTPS-hez való átirányítás nem történik meg.
- A köztes szoftver naplózza a következő figyelmeztetést: "Nem sikerült meghatározni a https-portot az átirányításhoz."
Adja meg a HTTPS-portot az alábbi módszerek bármelyikével:
Állítsa be a HttpsRedirectionOptions.HttpsPort értékét.
Állítsa be a
https_portgazdagép beállításait:Gazdagépkonfigurációban.
A
ASPNETCORE_HTTPS_PORTkörnyezeti változó beállításával.Úgy, hogy hozzáadsz egy legfelső szintű bejegyzést itt:
appsettings.json.{ "https_port": 443, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
Jelöljön meg egy portot a biztonságos sémával a ASPNETCORE_URLS környezeti változó használatával. A környezeti változó konfigurálja a kiszolgálót. A köztes szoftver közvetetten felderíti a HTTPS-portot a IServerAddressesFeature. Ez a megközelítés nem működik fordított proxytelepítésekben.
Az ASP.NET Core-websablonok HTTPS-URL címet állítanak be a
Properties/launchsettings.jsonmind a Kestrel mind az IIS Express számára.launchsettings.jsoncsak a helyi gépen használható.HTTPS URL-végpontot kell konfigurálni a Kestrel kiszolgáló vagy a HTTP.sys kiszolgáló nyilvános elérhetőségű peremhálózati üzembe helyezéséhez. Az alkalmazás csak egy HTTPS-portot használ. A köztes szoftver a portot észleli a következőn keresztül: IServerAddressesFeature.
Note
Ha egy alkalmazás fordított proxykonfigurációban fut, IServerAddressesFeature nem érhető el. Állítsa be a portot az ebben a szakaszban ismertetett egyéb megközelítések egyikével.
Peremtelepítések
Amikor Kestrel vagy HTTP.sys nyilvános elérésű edge szerverként van használva, akkor Kestrel vagy HTTP.sys úgy kell konfigurálni, hogy mindkettőt figyelje.
- A biztonságos port, amelyre az ügyfél át van irányítva (általában a 443-as port az éles környezetben, és az 5001-es a fejlesztési környezetben).
- A nem biztonságos port (általában 80 éles környezetben és 5000 fejlesztési környezetben).
A nem biztonságos portot az ügyfélnek el kell érnie ahhoz, hogy az alkalmazás nem biztonságos kérést kapjon, és átirányíthassa az ügyfelet a biztonságos portra.
További információ: Kestrel végpontkonfiguráció vagy HTTP.sys webkiszolgáló implementálása a ASP.NET Core-ban.
Üzembe helyezési forgatókönyvek
Az ügyfél és a kiszolgáló közötti tűzfalnak nyitva kell lennie a forgalom számára nyitva lévő kommunikációs portokkal is.
Ha a kérések továbbítása fordított proxykonfigurációban történik, használja a továbbított fejlécek köztes szoftverét , mielőtt meghívja a HTTPS-átirányítási köztes szoftvereket. A továbbított fejlécek köztes rétege a Request.Scheme fejléc használatával frissíti a X-Forwarded-Proto fejlécet. A köztes szoftver lehetővé teszi az átirányítási URI-k és más biztonsági szabályzatok megfelelő működését. Ha a továbbított fejlécek köztes szoftverkomponenst nem használják, előfordulhat, hogy a háttéralkalmazás nem kapja meg a helyes sémát, emiatt pedig átirányítási hurokba kerül. Gyakori végfelhasználói hibaüzenet, hogy túl sok átirányítás történt.
Az Azure App Service-ben való üzembe helyezéskor kövesse az oktatóanyag útmutatását : Meglévő egyéni SSL-tanúsítvány kötése az Azure Web Appshez.
Beállítások
A köztes szoftver beállításainak konfigurálásához a következő kiemelt kódhívások AddHttpsRedirection :
using static Microsoft.AspNetCore.Http.StatusCodes;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = Status307TemporaryRedirect;
options.HttpsPort = 5001;
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
A hívás AddHttpsRedirection csak az értékek HttpsPortRedirectStatusCodemódosításához szükséges.
Az előző kiemelt kód:
-
HttpsRedirectionOptions.RedirectStatusCode beállítása Status307TemporaryRedirect értékre, ami az alapértelmezett. Használja az StatusCodes osztály mezőit a
RedirectStatusCodehozzárendelésekhez. - A HTTPS-portot 5001-re állítja.
Állandó átirányítások konfigurálása éles környezetben
A köztes szoftver alapértelmezésként egy Status307TemporaryRedirect küld az összes átirányításnál. Ha az állandó átirányítási állapotkódot szeretné küldeni, amikor az alkalmazás nem környezetiDevelopment állapotban van, csomagolja be a köztes szoftver beállításainak konfigurációját egy feltételes ellenőrzésbe, amely nem környezetiDevelopment állapotot tartalmaz.
Szolgáltatások konfigurálásakor a következő helyen Program.cs:
using static Microsoft.AspNetCore.Http.StatusCodes;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
if (!builder.Environment.IsDevelopment())
{
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = Status308PermanentRedirect;
options.HttpsPort = 443;
});
}
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
HTTPS-átirányítási köztes szoftver alternatív megközelítése
A HTTPS-átirányításra szolgáló köztes réteg (UseHttpsRedirection) használatának egyik alternatívája az URL-újraírásra szolgáló köztes réteg (AddRedirectToHttps) használata.
AddRedirectToHttps az átirányítás végrehajtásakor az állapotkódot és a portot is beállíthatja. További információkért lásd: URL-átíró köztes szoftver.
Ha a HTTPS-hez a további átirányítási szabályok megkövetelése nélkül irányít át, javasoljuk, hogy a jelen cikkben ismertetett HTTPS-átirányítási köztes szoftver (UseHttpsRedirection) használatát használja.
HTTP Strict Transport Security (HSTS) protokoll
Az OWASP szerint a HTTP Strict Transport Security (HSTS) egy válaszfejlécen keresztül megadott, opt-in biztonsági fejlesztés, amelyet a webalkalmazás kínál. Ha a HSTS-t támogató böngésző a következő fejlécet kapja:
- A böngésző tárolja a tartomány konfigurációját, amely megakadályozza a HTTP-en keresztüli kommunikáció küldését. A böngésző minden kommunikációt HTTPS-en keresztül kényszerít.
- A böngésző megakadályozza, hogy a felhasználó nem megbízható vagy érvénytelen tanúsítványokat használ. A böngésző letiltja azokat a kéréseket, amelyek lehetővé teszik a felhasználó számára, hogy ideiglenesen megbízzanak egy ilyen tanúsítványban.
Mivel a HSTS-t az ügyfél kényszeríti ki, bizonyos korlátozásokkal rendelkezik:
- Az ügyfélnek támogatnia kell a HSTS-t.
- A HSTS legalább egy sikeres HTTPS-kérést igényel a HSTS-szabályzat létrehozásához.
- Az alkalmazásnak minden HTTP-kérést ellenőriznie kell, és át kell irányítania vagy el kell utasítania a HTTP-kérést.
ASP.NET Core a HSTS-t bővítménymetódussal UseHsts implementálja. Az alábbi kódhívások UseHsts , ha az alkalmazás nincs fejlesztési módban:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
UseHsts nem ajánlott a fejlesztés során, mert a HSTS-beállításokat a böngészők könnyen gyorsítótárazhatják. Alapértelmezés szerint UseHsts kizárja a helyi visszacsatolási címet.
A HTTPS-t első alkalommal implementáló éles környezetekben állítsa a kezdeti HstsOptions.MaxAge értéket egy kis értékre az TimeSpan egyik metódus használatával. Állítsa be az értéket úgy, hogy órák helyett legfeljebb egy nap legyen, arra az esetre, ha vissza kell állítania a HTTPS-infrastruktúrát HTTP-re. Miután biztos a HTTPS-konfiguráció fenntarthatóságában, növelje a HSTS-értéket max-age ; a gyakran használt érték egy év.
A következő kiemelt kód:
using static Microsoft.AspNetCore.Http.StatusCodes;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = Status307TemporaryRedirect;
options.HttpsPort = 5001;
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
- Beállítja a
Strict-Transport-Securityfejléc előbetöltési paraméterét. Az előzetes adatbetöltés nem része az RFC HSTS-specifikációnak, de a webböngészők támogatják a HSTS-webhelyek új telepítésre való előzetes betöltését. További információért lásd https://hstspreload.org/. - Engedélyezi az includeSubDomain beállítást, amely a HSTS-szabályzatot alkalmazza a Host altartományaira.
- Az
max-agefejlécStrict-Transport-Securityparaméterét explicit módon 60 napra állítja be. Ha nincs beállítva, az alapértelmezett érték 30 nap. További információt a maximális életkorról szóló irányelvben talál. - A
example.comelemet hozzáadja a kizárandó gazdagépek listájához.
UseHsts kizárja a következő visszacsatolási gazdagépeket:
-
localhost: Az IPv4 visszacsatolási címe. -
127.0.0.1: Az IPv4 visszacsatolási címe. -
[::1]: Az IPv6 visszacsatolási címe.
A HTTPS/HSTS letiltása projektlétrehozáskor
Bizonyos háttérszolgáltatás-forgatókönyvekben, ahol a kapcsolatbiztonság a hálózat nyilvános elérésű peremhálózatán van kezelve, nincs szükség a kapcsolatbiztonság konfigurálására az egyes csomópontokon. A Visual Studio sablonjaiból vagy a dotnet új parancsából létrehozott webalkalmazások engedélyezik a HTTPS-átirányítást és a HSTS-t. Az olyan üzemelő példányok esetében, amelyek nem igénylik ezeket a forgatókönyveket, kikapcsolhatja a HTTPS/HSTS szolgáltatást, ha az alkalmazás a sablonból jön létre.
A HTTPS/HSTS letiltása:
Törölje a jelölést a HTTPS konfigurálás jelölőnégyzetből.
A ASP.NET Core HTTPS fejlesztési tanúsítvány megbízhatósága Windows és macOS rendszeren
A Firefox böngészőben lásd a következő szakaszt.
A .NET Core SDK tartalmaz egy HTTPS fejlesztési tanúsítványt. A tanúsítvány az első futtatás során települ. Például dotnet --info a következő kimenet egy változata jelenik meg:
ASP.NET Core
------------
Successfully installed the ASP.NET Core HTTPS Development Certificate.
To trust the certificate run 'dotnet dev-certs https --trust' (Windows and macOS only).
For establishing trust on other platforms refer to the platform specific documentation.
For more information on configuring HTTPS see https://go.microsoft.com/fwlink/?linkid=848054.
A .NET Core SDK telepítése telepíti a ASP.NET Core HTTPS fejlesztési tanúsítványt a helyi felhasználói tanúsítványtárolóba. A tanúsítvány telepítve van, de nem megbízható. A tanúsítvány megbízhatóságához hajtsa végre az eszköz futtatásához dotnet dev-certs szükséges egyszeri lépést:
dotnet dev-certs https --trust
Az alábbi parancs segítséget nyújt az dotnet dev-certs eszközről:
dotnet dev-certs https --help
Warning
Ne hozzon létre fejlesztési tanúsítványt olyan környezetben, amely újraterjesztésre kerül, például tárolólemezképet vagy virtuális gépet. Ez hamisításhoz és jogosultságszint-emeléséhez vezethet. Ennek elkerülése érdekében állítsa a DOTNET_GENERATE_ASPNET_CERTIFICATE környezeti változót false a .NET CLI első meghívása előtt. Ez kihagyja a ASP.NET Core fejlesztési tanúsítvány automatikus létrehozását a parancssori felület első futtatása során.
Bízzon a HTTPS-tanúsítványban a Firefoxban a SEC_ERROR_INADEQUATE_KEY_USAGE hiba elkerülése érdekében
A Firefox böngésző saját tanúsítványtárolót használ, ezért nem bízik az IIS Express vagy Kestrel a fejlesztői tanúsítványokban.
A HTTPS-tanúsítványnak a Firefoxban való megbízhatóságára, szabályzatfájl létrehozására vagy a FireFox böngészővel való konfigurálására két módszer létezik. A böngészővel való konfigurálás létrehozza a szabályzatfájlt, így a két módszer egyenértékű.
Szabályzatfájl létrehozása HTTPS-tanúsítvány megbízhatóságához a Firefoxban
Hozzon létre egy szabályzatfájlt (policies.json) a következő helyen:
- Windows:
%PROGRAMFILES%\Mozilla Firefox\distribution\ - MacOS:
Firefox.app/Contents/Resources/distribution - Linux: Ebben a cikkben tekintse meg a Linuxon futó Firefox tanúsítvány megbízhatóságát .
Adja hozzá a következő JSON-t a Firefox-házirendfájlhoz:
{
"policies": {
"Certificates": {
"ImportEnterpriseRoots": true
}
}
}
Az előző szabályzatfájl a Windows tanúsítványtárolójában található megbízható tanúsítványokból származó Firefox megbízhatósági tanúsítványokat készít. A következő szakasz alternatív módszert kínál az előző szabályzatfájl létrehozásához a Firefox böngészővel.
HTTPS-tanúsítvány megbízhatóságának konfigurálása a Firefox böngészővel
Állítsa be security.enterprise_roots.enabled = true a következő utasítások felhasználásával.
- Adja meg
about:configa Firefox böngészőben. - Ha elfogadja a kockázatot, válassza a Kockázat elfogadása és a Folytatás lehetőséget.
- Válassza az Összes megjelenítése lehetőséget
- Beállít
security.enterprise_roots.enabled=true - Kilépés és újraindítás a Firefoxból
További információ: Hitelesítésszolgáltatók beállítása a Firefoxban és a mozilla/policy-templates/README fájl.
Fejlesztői tanúsítvány beállítása a Dockerhez
Lásd ezt a GitHub-hibajegyet.
HTTPS-tanúsítvány megbízhatósága Linuxon
A bizalom kiépítése terjesztési és böngészőspecifikus feladat. Az alábbi szakaszok útmutatást nyújtanak néhány népszerű disztribúcióhoz, valamint a Chromium böngészőkhöz (Edge és Chrome) és a Firefoxhoz.
Az Ubuntu megbízik a tanúsítványban a szolgáltatásközi kommunikációhoz
Az alábbi utasítások nem működnek egyes Ubuntu-verziókhoz, például a 20.04-hez. További információ: GitHub-probléma dotnet/AspNetCore.Docs #23686.
Telepítse az OpenSSL 1.1.1h vagy újabb verzióját. Az OpenSSL frissítésére vonatkozó útmutatásért tekintse meg a disztribúciót.
Futtassa az alábbi parancsot:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM sudo update-ca-certificates
Az előző parancsok:
- Győződjön meg arról, hogy az aktuális felhasználó fejlesztői tanúsítványa létrejött.
- Exportálja a mappához
ca-certificatesszükséges emelt szintű engedélyekkel rendelkező tanúsítványt az aktuális felhasználó környezetének használatával. - A
-Ejelző eltávolítása exportálja a fő felhasználói tanúsítványt, és szükség esetén létrehozza. Minden újonnan létrehozott tanúsítvány más ujjlenyomattal rendelkezik. Ha gyökérként fut,sudoés-Enincs rá szükség.
Az előző parancs elérési útja az Ubuntura vonatkozik. Más disztribúciók esetén válassza ki a megfelelő elérési utat, vagy használja a hitelesítésszolgáltatók elérési útját.
HTTPS-tanúsítvány megbízhatósága Linuxon az Edge vagy a Chrome használatával
Linuxon futó chromium böngészők esetén:
Telepítse a
libnss3-tools-t a disztribúciójához.Hozza létre vagy ellenőrizze, hogy a
$HOME/.pki/nssdbmappa létezik-e a gépen.Exportálja a tanúsítványt a következő paranccsal:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEMAz előző parancs elérési útja az Ubuntura vonatkozik. Más disztribúciók esetén válassza ki a megfelelő elérési utat, vagy használja a hitelesítésszolgáltatók elérési útját.
Futtassa az alábbi parancsot:
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n localhost -i /usr/local/share/ca-certificates/aspnet/https.crtLépjen ki, és indítsa újra a böngészőt.
A tanúsítvány megbízhatósága a Linuxon futó Firefoxban
Exportálja a tanúsítványt a következő paranccsal:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEMAz előző parancs elérési útja az Ubuntura vonatkozik. Más disztribúciók esetén válassza ki a megfelelő elérési utat, vagy használja a hitelesítésszolgáltatók elérési útját.
Hozzon létre egy JSON-fájlt
/usr/lib/firefox/distribution/policies.jsona következő paranccsal:
cat <<EOF | sudo tee /usr/lib/firefox/distribution/policies.json
{
"policies": {
"Certificates": {
"Install": [
"/usr/local/share/ca-certificates/aspnet/https.crt"
]
}
}
}
EOF
Megjegyzés: Az Ubuntu 21.10 Firefox snap csomagként érkezik, és a telepítési mappa /snap/firefox/current/usr/lib/firefox.
A szabályzatfájl böngészővel történő konfigurálásának alternatív módjáról ebben a cikkben a HTTPS-tanúsítvány megbízhatóságának konfigurálása a Firefox böngészővel című témakörben olvashat.
A tanúsítvány megbízhatósága a Fedora 34 használatával
See:
- Ez a GitHub-megjegyzés
- Fedora: Megosztott rendszertanúsítványok használata
- .NET-fejlesztési környezet beállítása a Fedorán.
Bízzon a tanúsítványban más disztribúciókkal
Lásd ezt a GitHub-hibajegyet.
HTTPS-tanúsítvány megbízhatósága Linux rendszerhez készült Windows-alrendszerből
Az alábbi utasítások nem működnek egyes Linux-disztribúciók esetében, például az Ubuntu 20.04-ben. További információ: GitHub-probléma dotnet/AspNetCore.Docs #23686.
A Linux windowsos alrendszere (WSL) létrehoz egy HTTPS önaláírt fejlesztési tanúsítványt, amely alapértelmezés szerint nem megbízható a Windowsban. A windowsos WSL-tanúsítvány megbízhatóságának legegyszerűbb módja, ha úgy konfigurálja a WSL-t, hogy ugyanazt a tanúsítványt használja, mint a Windows:
Windows rendszeren exportálja a fejlesztői tanúsítványt egy fájlba:
dotnet dev-certs https -ep https.pfx -p $CREDENTIAL_PLACEHOLDER$ --trustHol
$CREDENTIAL_PLACEHOLDER$található a jelszó?Egy WSL-ablakban importálja az exportált tanúsítványt a WSL-példányon:
dotnet dev-certs https --clean --import <<path-to-pfx>> --password $CREDENTIAL_PLACEHOLDER$
Az előző módszer tanúsítványonként és WSL-eloszlásonként egyszeri művelet. Egyszerűbb, mint a tanúsítvány újra és újra exportálása. Ha windows rendszeren frissíti vagy újragenerálja a tanúsítványt, előfordulhat, hogy újra kell futtatnia az előző parancsokat.
A tanúsítványokkal kapcsolatos problémák, például a nem megbízható tanúsítványok hibaelhárítása
Ez a szakasz segítséget nyújt a ASP.NET Core HTTPS-fejlesztési tanúsítvány telepítésekor és megbízhatóságában, de böngészőbeli figyelmeztetések vannak arról, hogy a tanúsítvány nem megbízható. A ASP.NET Core HTTPS fejlesztési tanúsítványt használja a Kestrelrendszer.
Az IIS Express-tanúsítvány javításához tekintse meg ezt a Stackoverflow-problémát .
Minden platform – a tanúsítvány nem megbízható
Futtassa az alábbi parancsot:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Zárja be a megnyitott böngészőpéldányokat. Nyisson meg egy új böngészőablakot az alkalmazás számára. A tanúsítványmegbízhatóságot a böngészők gyorsítótárazják.
dotnet dev-certs https --clean sikertelen
Az előző parancsok a böngésző megbízhatóságával kapcsolatos legtöbb problémát megoldják. Ha a böngésző továbbra sem bízik a tanúsítványban, kövesse az alábbi platformspecifikus javaslatokat.
Docker – a tanúsítvány nem megbízható
- Törölje a C:\Users{USER}\AppData\Roaming\ASP.NET\Https mappát.
- Tisztítsa meg az oldatot. Törölje a tároló, a és a obj, valamint a mappákat.
- Indítsa újra a fejlesztőeszközt. Például a Visual Studio vagy a Visual Studio Code.
Windows – a tanúsítvány nem megbízható
- Ellenőrizze a tanúsítványtárolóban található tanúsítványokat. Egy
localhosttanúsítványnak kell lennieASP.NET Core HTTPS development certificatebarátságos névvel, mindCurrent User > Personal > CertificatesmindCurrent User > Trusted root certification authorities > Certificatesalatt. - Távolítsa el az összes talált tanúsítványt mind a személyes, mind a megbízható legfelső szintű hitelesítésszolgáltatóktól. Ne távolítsa el az IIS Express localhost tanúsítványt.
- Futtassa az alábbi parancsot:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Zárja be a megnyitott böngészőpéldányokat. Nyisson meg egy új böngészőablakot az alkalmazás számára.
OS X – a tanúsítvány nem megbízható
- Nyissa meg a KeyChain Accesst.
- Válassza ki a rendszerkulcsláncot.
- Ellenőrizze, hogy van-e localhost-tanúsítvány.
- Ellenőrizze, hogy tartalmaz-e szimbólumot
+az ikonon, hogy az az összes felhasználó számára megbízható-e. - Távolítsa el a tanúsítványt a rendszerkulcsláncból.
- Futtassa az alábbi parancsot:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Zárja be a megnyitott böngészőpéldányokat. Nyisson meg egy új böngészőablakot az alkalmazás számára.
A Visual Studióval kapcsolatos tanúsítványproblémák elhárításához lásd: HTTPS-hiba az IIS Express használatával (dotnet/AspNetCore #16892).
A Linux-tanúsítvány nem megbízható
Ellenőrizze, hogy a megbízhatóságra konfigurált tanúsítvány a kiszolgáló által Kestrel használt felhasználói HTTPS fejlesztői tanúsítvány-e.
Ellenőrizze az aktuális felhasználó alapértelmezett HTTPS fejlesztői Kestrel tanúsítványát a következő helyen:
ls -la ~/.dotnet/corefx/cryptography/x509stores/my
A HTTPS fejlesztői Kestrel tanúsítványfájl az SHA1 lenyomatát tartalmazza. A fájl törlésekor a dotnet dev-certs https --clean rendszeren keresztül, szükség esetén, egy másik ujjlenyomattal újragenerálódik.
Ellenőrizze az exportált tanúsítvány ujjlenyomatát az alábbi paranccsal:
openssl x509 -noout -fingerprint -sha1 -inform pem -in /usr/local/share/ca-certificates/aspnet/https.crt
Ha a tanúsítvány nem egyezik, az a következők egyike lehet:
- Egy régi tanúsítvány.
- Exportált egy fejlesztői tanúsítványt a legfelső szintű felhasználó számára. Ebben az esetben exportálja a tanúsítványt.
A legfelső szintű felhasználói tanúsítvány a következő helyen ellenőrizhető:
ls -la /root/.dotnet/corefx/cryptography/x509stores/my
A Visual Studióval használt IIS Express SSL-tanúsítvány
Az IIS Express-tanúsítvánnyal kapcsolatos problémák megoldásához válassza a Visual Studio telepítőjének Javítás elemét. További információkért tekintse meg ezt a GitHub-problémát.
A csoportházirend megakadályozza az önaláírt tanúsítványok megbízhatóságát
Bizonyos esetekben a csoportházirend megakadályozhatja az önaláírt tanúsítványok megbízhatóságát. További információkért tekintse meg ezt a GitHub-problémát.
További információk
Warning
API-projektek
Ne használjon RequireHttpsAttribute olyan webes API-kat, amelyek bizalmas információkat kapnak.
RequireHttpsAttribute HTTP-állapotkódokkal irányítja át a böngészőket a HTTP-ről a HTTPS-be. Előfordulhat, hogy az API-ügyfelek nem értik vagy nem tartják be a HTTP-ről HTTPS-re történő átirányításokat. Az ilyen ügyfelek HTTP-en keresztül küldhetnek információkat. A webes API-knak a következőkre van szükség:
- Nem figyel a HTTP-n.
- Zárja be a kapcsolatot a 400-ás állapotkóddal (hibás kérés), és ne szolgálja ki a kérést.
Ha le szeretné tiltani a HTTP-átirányítást egy API-ban, állítsa be a ASPNETCORE_URLS környezeti változót, vagy használja a parancssori --urls jelzőt. További információ: ASP.NET Core-futtatókörnyezetek és 5 módszer az ASP.NET Core-alkalmazások URL-címeinek beállítására Andrew Locktól.
HSTS- és API-projektek
Az alapértelmezett API-projektek nem tartalmazzák a HSTS-t , mivel a HSTS általában csak böngészőutasítás. Más hívók, például telefonos vagy asztali alkalmazások , nem tartják be az utasításokat. Még a böngészőkben is fennáll a veszélye annak, hogy egy API http-n keresztüli hitelesített hívása nem biztonságos hálózatokat veszélyeztet. A biztonságos megközelítés az API-projektek konfigurálása, hogy csak a HTTPS-en keresztül hallgassanak és válaszoljanak.
HTTPS megkövetelése
Javasoljuk, hogy az éles ASP.NET Core-webalkalmazások a következőket használják:
- HTTPS-átirányítási köztes szoftver (UseHttpsRedirection) a HTTP-kérések HTTPS-be való átirányításához.
- A HSTS köztes szoftver (UseHsts) HTTP Strict Transport Security (HSTS) protokollfejléceket küld az ügyfeleknek.
Note
A fordított proxykonfigurációban üzembe helyezett alkalmazások lehetővé teszik a proxy számára a kapcsolatbiztonság (HTTPS) kezelését. Ha a proxy a HTTPS-átirányítást is kezeli, nincs szükség HTTPS-átirányítási köztes szoftver használatára. Ha a proxykiszolgáló HSTS-fejlécek írását is kezeli (például natív HSTS-támogatás az IIS 10.0 -ban (1709) vagy újabb verziókban), az alkalmazás nem igényli a HSTS köztes szoftver használatát. További információ: HTTPS/HSTS letiltása a projektlétrehozáskor.
UseHttpsRedirection
A következő kód meghívja a UseHttpsRedirection az Startup osztályban:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
Az előző kiemelt kód:
- Az alapértelmezett HttpsRedirectionOptions.RedirectStatusCode (Status307TemporaryRedirect) értéket használja.
- Az alapértelmezett HttpsRedirectionOptions.HttpsPort (null) értéket használja, kivéve, ha azt a
ASPNETCORE_HTTPS_PORTkörnyezeti változó vagy IServerAddressesFeature felülírja.
Javasoljuk, hogy ideiglenes átirányításokat használjunk állandó átirányítások helyett. A linkek gyorsítótárazása instabil viselkedést okozhat a fejlesztési környezetekben. Ha inkább állandó átirányítási állapotkódot szeretne küldeni, amikor az alkalmazás nem Development környezetben van, tekintse meg az állandó átirányítások konfigurálása a gyártásban című szakaszt. Javasoljuk, hogy HSTS használatával jelezhesse az ügyfeleknek, hogy csak biztonságos erőforrás-kérelmeket kell küldeni az alkalmazásnak (csak éles környezetben).
Portkonfiguráció
A köztes szoftvernek elérhetőnek kell lennie egy portnak ahhoz, hogy egy nem biztonságos kérést átirányítson a HTTPS-be. Ha nincs elérhető port:
- A HTTPS-hez való átirányítás nem történik meg.
- A köztes szoftver naplózza a következő figyelmeztetést: "Nem sikerült meghatározni a https-portot az átirányításhoz."
Adja meg a HTTPS-portot az alábbi módszerek bármelyikével:
Állítsa be a HttpsRedirectionOptions.HttpsPort értékét.
Állítsa be a
https_portgazdagép beállításait:Gazdagépkonfigurációban.
A
ASPNETCORE_HTTPS_PORTkörnyezeti változó beállításával.Úgy, hogy hozzáadsz egy legfelső szintű bejegyzést itt:
appsettings.json.{ "https_port": 443, "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*" }
Jelöljön meg egy portot a biztonságos sémával a ASPNETCORE_URLS környezeti változó használatával. A környezeti változó konfigurálja a kiszolgálót. A köztes szoftver közvetetten felderíti a HTTPS-portot a IServerAddressesFeature. Ez a megközelítés nem működik fordított proxytelepítésekben.
A fejlesztés során állítson be egy HTTPS URL-címet a következőben
launchsettings.json: . Engedélyezze a HTTPS-t az IIS Express használatakor.HTTPS URL-végpontot kell konfigurálni a Kestrel kiszolgáló vagy a HTTP.sys kiszolgáló nyilvános elérhetőségű peremhálózati üzembe helyezéséhez. Az alkalmazás csak egy HTTPS-portot használ. A köztes szoftver a portot észleli a következőn keresztül: IServerAddressesFeature.
Note
Ha egy alkalmazás fordított proxykonfigurációban fut, IServerAddressesFeature nem érhető el. Állítsa be a portot az ebben a szakaszban ismertetett egyéb megközelítések egyikével.
Peremtelepítések
Ha Kestrel-t vagy HTTP.sys-t nyilvános elérésű peremkiszolgálóként használnak, Kestrel-t vagy HTTP.sys-t úgy kell konfigurálni, hogy mindkét kapcsolatra figyeljen:
- A biztonságos port, amelyre az ügyfél át van irányítva (általában a 443-as port az éles környezetben, és az 5001-es a fejlesztési környezetben).
- A nem biztonságos port (általában 80 éles környezetben és 5000 fejlesztési környezetben).
A nem biztonságos portot az ügyfélnek el kell érnie ahhoz, hogy az alkalmazás nem biztonságos kérést kapjon, és átirányíthassa az ügyfelet a biztonságos portra.
További információ: Kestrel végpontkonfiguráció vagy HTTP.sys webkiszolgáló implementálása a ASP.NET Core-ban.
Üzembe helyezési forgatókönyvek
Az ügyfél és a kiszolgáló közötti tűzfalnak nyitva kell lennie a forgalom számára nyitva lévő kommunikációs portokkal is.
Ha a kérések továbbítása fordított proxykonfigurációban történik, használja a továbbított fejlécek köztes szoftverét , mielőtt meghívja a HTTPS-átirányítási köztes szoftvereket. A továbbított fejlécek köztes rétege a Request.Scheme fejléc használatával frissíti a X-Forwarded-Proto fejlécet. A köztes szoftver lehetővé teszi az átirányítási URI-k és más biztonsági szabályzatok megfelelő működését. Ha a továbbított fejlécek köztes szoftverkomponenst nem használják, előfordulhat, hogy a háttéralkalmazás nem kapja meg a helyes sémát, emiatt pedig átirányítási hurokba kerül. Gyakori végfelhasználói hibaüzenet, hogy túl sok átirányítás történt.
Az Azure App Service-ben való üzembe helyezéskor kövesse az oktatóanyag útmutatását : Meglévő egyéni SSL-tanúsítvány kötése az Azure Web Appshez.
Beállítások
A köztes szoftver beállításainak konfigurálásához a következő kiemelt kódhívások AddHttpsRedirection :
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});
services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = (int) HttpStatusCode.TemporaryRedirect;
options.HttpsPort = 5001;
});
}
A hívás AddHttpsRedirection csak az értékek HttpsPortRedirectStatusCodemódosításához szükséges.
Az előző kiemelt kód:
-
HttpsRedirectionOptions.RedirectStatusCode beállítása Status307TemporaryRedirect értékre, ami az alapértelmezett. Használja az StatusCodes osztály mezőit a
RedirectStatusCodehozzárendelésekhez. - A HTTPS-portot 5001-re állítja.
Állandó átirányítások konfigurálása éles környezetben
A köztes szoftver alapértelmezésként egy Status307TemporaryRedirect küld az összes átirányításnál. Ha az állandó átirányítási állapotkódot szeretné küldeni, amikor az alkalmazás nem környezetiDevelopment állapotban van, csomagolja be a köztes szoftver beállításainak konfigurációját egy feltételes ellenőrzésbe, amely nem környezetiDevelopment állapotot tartalmaz.
Szolgáltatások konfigurálásakor a következő helyen Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
// IWebHostEnvironment (stored in _env) is injected into the Startup class.
if (!_env.IsDevelopment())
{
services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = (int) HttpStatusCode.PermanentRedirect;
options.HttpsPort = 443;
});
}
}
HTTPS-átirányítási köztes szoftver alternatív megközelítése
A HTTPS-átirányításra szolgáló köztes réteg (UseHttpsRedirection) használatának egyik alternatívája az URL-újraírásra szolgáló köztes réteg (AddRedirectToHttps) használata.
AddRedirectToHttps az átirányítás végrehajtásakor az állapotkódot és a portot is beállíthatja. További információkért lásd: URL-átíró köztes szoftver.
Ha a HTTPS-hez a további átirányítási szabályok megkövetelése nélkül irányít át, javasoljuk, hogy a jelen cikkben ismertetett HTTPS-átirányítási köztes szoftver (UseHttpsRedirection) használatát használja.
HTTP Strict Transport Security (HSTS) protokoll
Az OWASP szerint a HTTP Strict Transport Security (HSTS) egy válaszfejlécen keresztül megadott, opt-in biztonsági fejlesztés, amelyet a webalkalmazás kínál. Ha a HSTS-t támogató böngésző a következő fejlécet kapja:
- A böngésző tárolja a tartomány konfigurációját, amely megakadályozza a HTTP-en keresztüli kommunikáció küldését. A böngésző minden kommunikációt HTTPS-en keresztül kényszerít.
- A böngésző megakadályozza, hogy a felhasználó nem megbízható vagy érvénytelen tanúsítványokat használ. A böngésző letiltja azokat a kéréseket, amelyek lehetővé teszik a felhasználó számára, hogy ideiglenesen megbízzanak egy ilyen tanúsítványban.
Mivel a HSTS-t az ügyfél kényszeríti ki, bizonyos korlátozásokkal rendelkezik:
- Az ügyfélnek támogatnia kell a HSTS-t.
- A HSTS legalább egy sikeres HTTPS-kérést igényel a HSTS-szabályzat létrehozásához.
- Az alkalmazásnak minden HTTP-kérést ellenőriznie kell, és át kell irányítania vagy el kell utasítania a HTTP-kérést.
ASP.NET Core a HSTS-t bővítménymetódussal UseHsts implementálja. Az alábbi kódhívások UseHsts , ha az alkalmazás nincs fejlesztési módban:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
UseHsts nem ajánlott a fejlesztés során, mert a HSTS-beállításokat a böngészők könnyen gyorsítótárazhatják. Alapértelmezés szerint UseHsts kizárja a helyi visszacsatolási címet.
A HTTPS-t első alkalommal implementáló éles környezetekben állítsa a kezdeti HstsOptions.MaxAge értéket egy kis értékre az TimeSpan egyik metódus használatával. Állítsa be az értéket úgy, hogy órák helyett legfeljebb egy nap legyen, arra az esetre, ha vissza kell állítania a HTTPS-infrastruktúrát HTTP-re. Miután biztos a HTTPS-konfiguráció fenntarthatóságában, növelje a HSTS-értéket max-age ; a gyakran használt érték egy év.
A következő kód:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});
services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = (int) HttpStatusCode.TemporaryRedirect;
options.HttpsPort = 5001;
});
}
- Beállítja a
Strict-Transport-Securityfejléc előbetöltési paraméterét. Az előzetes adatbetöltés nem része az RFC HSTS-specifikációnak, de a webböngészők támogatják a HSTS-webhelyek új telepítésre való előzetes betöltését. További információért lásd https://hstspreload.org/. - Engedélyezi az includeSubDomain beállítást, amely a HSTS-szabályzatot alkalmazza a Host altartományaira.
- Az
max-agefejlécStrict-Transport-Securityparaméterét explicit módon 60 napra állítja be. Ha nincs beállítva, az alapértelmezett érték 30 nap. További információt a maximális életkorról szóló irányelvben talál. - A
example.comelemet hozzáadja a kizárandó gazdagépek listájához.
UseHsts kizárja a következő visszacsatolási gazdagépeket:
-
localhost: Az IPv4 visszacsatolási címe. -
127.0.0.1: Az IPv4 visszacsatolási címe. -
[::1]: Az IPv6 visszacsatolási címe.
A HTTPS/HSTS letiltása projektlétrehozáskor
Bizonyos háttérszolgáltatás-forgatókönyvekben, ahol a kapcsolatbiztonság a hálózat nyilvános elérésű peremhálózatán van kezelve, nincs szükség a kapcsolatbiztonság konfigurálására az egyes csomópontokon. A Visual Studio sablonjaiból vagy a dotnet új parancsából létrehozott webalkalmazások engedélyezik a HTTPS-átirányítást és a HSTS-t. Az olyan üzemelő példányok esetében, amelyek nem igénylik ezeket a forgatókönyveket, kikapcsolhatja a HTTPS/HSTS szolgáltatást, ha az alkalmazás a sablonból jön létre.
A HTTPS/HSTS letiltása:
Törölje a jelölést a HTTPS konfigurálás jelölőnégyzetből.
A ASP.NET Core HTTPS fejlesztési tanúsítvány megbízhatósága Windows és macOS rendszeren
A Firefox böngészőben lásd a következő szakaszt.
A .NET Core SDK tartalmaz egy HTTPS fejlesztési tanúsítványt. A tanúsítvány az első futtatás során települ. Az első futtatás dotnet new webapp például a következő kimenet egy variációját eredményezi:
Installed an ASP.NET Core HTTPS development certificate.
To trust the certificate, run 'dotnet dev-certs https --trust'
Learn about HTTPS: https://aka.ms/dotnet-https
A .NET Core SDK telepítése telepíti a ASP.NET Core HTTPS fejlesztési tanúsítványt a helyi felhasználói tanúsítványtárolóba. A tanúsítvány telepítve van, de nem megbízható. A tanúsítvány megbízhatóságához hajtsa végre az eszköz futtatásához dotnet dev-certs szükséges egyszeri lépést:
dotnet dev-certs https --trust
Az alábbi parancs segítséget nyújt az dotnet dev-certs eszközről:
dotnet dev-certs https --help
Warning
Ne hozzon létre fejlesztési tanúsítványt olyan környezetben, amely újraterjesztésre kerül, például tárolólemezképet vagy virtuális gépet. Ez hamisításhoz és jogosultságszint-emeléséhez vezethet. Ennek elkerülése érdekében állítsa a DOTNET_GENERATE_ASPNET_CERTIFICATE környezeti változót false a .NET CLI első meghívása előtt. Ez kihagyja a ASP.NET Core fejlesztési tanúsítvány automatikus létrehozását a parancssori felület első futtatása során.
Bízzon a HTTPS-tanúsítványban a Firefoxban a SEC_ERROR_INADEQUATE_KEY_USAGE hiba elkerülése érdekében
A Firefox böngésző saját tanúsítványtárolót használ, ezért nem bízik az IIS Express vagy Kestrel a fejlesztői tanúsítványokban.
A HTTPS-tanúsítványnak a Firefoxban való megbízhatóságára, szabályzatfájl létrehozására vagy a FireFox böngészővel való konfigurálására két módszer létezik. A böngészővel való konfigurálás létrehozza a szabályzatfájlt, így a két módszer egyenértékű.
Szabályzatfájl létrehozása HTTPS-tanúsítvány megbízhatóságához a Firefoxban
Hozzon létre egy szabályzatfájlt (policies.json) a következő helyen:
- Windows:
%PROGRAMFILES%\Mozilla Firefox\distribution\ - MacOS:
Firefox.app/Contents/Resources/distribution - Linux: A jelen cikk későbbi részében tekintse meg a Linuxon futó Firefox tanúsítvány megbízhatóságát .
Adja hozzá a következő JSON-t a Firefox-házirendfájlhoz:
{
"policies": {
"Certificates": {
"ImportEnterpriseRoots": true
}
}
}
Az előző szabályzatfájl a Windows tanúsítványtárolójában található megbízható tanúsítványokból származó Firefox megbízhatósági tanúsítványokat készít. A következő szakasz alternatív módszert kínál az előző szabályzatfájl létrehozásához a Firefox böngészővel.
HTTPS-tanúsítvány megbízhatóságának konfigurálása a Firefox böngészővel
Állítsa be security.enterprise_roots.enabled = true a következő utasítások felhasználásával.
- Adja meg
about:configa Firefox böngészőben. - Ha elfogadja a kockázatot, válassza a Kockázat elfogadása és a Folytatás lehetőséget.
- Válassza az Összes megjelenítése lehetőséget.
- Beállítás
security.enterprise_roots.enabled=true. - Lépjen ki és indítsa újra a Firefoxot.
További információ: Hitelesítésszolgáltatók beállítása a Firefoxban és a mozilla/policy-templates/README fájl.
Fejlesztői tanúsítvány beállítása a Dockerhez
Lásd ezt a GitHub-hibajegyet.
HTTPS-tanúsítvány megbízhatósága Linuxon
A bizalom kiépítése terjesztési és böngészőspecifikus feladat. Az alábbi szakaszok útmutatást nyújtanak néhány népszerű disztribúcióhoz, valamint a Chromium böngészőkhöz (Edge és Chrome) és a Firefoxhoz.
Az Ubuntu megbízik a tanúsítványban a szolgáltatásközi kommunikációhoz
Telepítse az OpenSSL 1.1.1h vagy újabb verzióját. Az OpenSSL frissítésére vonatkozó útmutatásért tekintse meg a disztribúciót.
Futtassa az alábbi parancsot:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM sudo update-ca-certificates
Az előző parancsok:
- Győződjön meg arról, hogy az aktuális felhasználó fejlesztői tanúsítványa létrejött.
- Exportálja a mappához
ca-certificatesszükséges emelt szintű engedélyekkel rendelkező tanúsítványt az aktuális felhasználó környezetének használatával. - Távolítsa el a
-Ejelölőt a root felhasználói tanúsítvány exportálásához, szükség esetén létrehozva azt. Minden újonnan létrehozott tanúsítvány más ujjlenyomattal rendelkezik. Ha gyökérként fut,sudoés-Enincs rá szükség.
Az előző parancs elérési útja az Ubuntura vonatkozik. Más disztribúciók esetén válassza ki a megfelelő elérési utat, vagy használja a hitelesítésszolgáltatók elérési útját.
HTTPS-tanúsítvány megbízhatósága Linuxon az Edge vagy a Chrome használatával
Linuxon futó chromium böngészők esetén:
Telepítse a
libnss3-tools-t a disztribúciójához.Hozza létre vagy ellenőrizze, hogy a
$HOME/.pki/nssdbmappa létezik-e a gépen.Exportálja a tanúsítványt a következő paranccsal:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEMAz előző parancs elérési útja az Ubuntura vonatkozik. Más disztribúciók esetén válassza ki a megfelelő elérési utat, vagy használja a hitelesítésszolgáltatók elérési útját.
Futtassa az alábbi parancsot:
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n localhost -i /usr/local/share/ca-certificates/aspnet/https.crtLépjen ki, és indítsa újra a böngészőt.
A tanúsítvány megbízhatósága a Linuxon futó Firefoxban
Exportálja a tanúsítványt a következő paranccsal:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEMAz előző parancs elérési útja az Ubuntura vonatkozik. Más disztribúciók esetén válassza ki a megfelelő elérési utat, vagy használja a hitelesítésszolgáltatók elérési útját.
Hozzon létre egy JSON-fájlt
/usr/lib/firefox/distribution/policies.jsona következő tartalommal:
cat <<EOF | sudo tee /usr/lib/firefox/distribution/policies.json
{
"policies": {
"Certificates": {
"Install": [
"/usr/local/share/ca-certificates/aspnet/https.crt"
]
}
}
}
EOF
A szabályzatfájl böngészővel történő konfigurálásának alternatív módjáról ebben a cikkben a HTTPS-tanúsítvány megbízhatóságának konfigurálása a Firefox böngészővel című témakörben olvashat.
A tanúsítvány megbízhatósága a Fedora 34 használatával
Firefox a Fedora
echo 'pref("general.config.filename", "firefox.cfg");
pref("general.config.obscure_value", 0);' > ./autoconfig.js
echo '//Enable policies.json
lockPref("browser.policies.perUserDir", false);' > firefox.cfg
echo "{
\"policies\": {
\"Certificates\": {
\"Install\": [
\"aspnetcore-localhost-https.crt\"
]
}
}
}" > policies.json
dotnet dev-certs https -ep localhost.crt --format PEM
sudo mv autoconfig.js /usr/lib64/firefox/
sudo mv firefox.cfg /usr/lib64/firefox/
sudo mv policies.json /usr/lib64/firefox/distribution/
mkdir -p ~/.mozilla/certificates
cp localhost.crt ~/.mozilla/certificates/aspnetcore-localhost-https.crt
rm localhost.crt
Dotnet-to-dotnet megbízhatósága a Fedorán
sudo cp localhost.crt /etc/pki/tls/certs/localhost.pem
sudo update-ca-trust
rm localhost.crt
További információért tekintse meg ezt a GitHub-megjegyzést .
Bízzon a tanúsítványban más disztribúciókkal
Lásd ezt a GitHub-hibajegyet.
HTTPS-tanúsítvány megbízhatósága Linux rendszerhez készült Windows-alrendszerből
A Linux windowsos alrendszere (WSL) létrehoz egy HTTPS önaláírt fejlesztési tanúsítványt. A Windows-tanúsítványtároló konfigurálása a WSL-tanúsítvány megbízhatóságára:
Exportálja a fejlesztői tanúsítványt windowsos fájlba:
dotnet dev-certs https -ep C:\<<path-to-folder>>\aspnetcore.pfx -p $CREDENTIAL_PLACEHOLDER$Hol
$CREDENTIAL_PLACEHOLDER$található a jelszó?Egy WSL-ablakban importálja az exportált tanúsítványt a WSL-példányon:
dotnet dev-certs https --clean --import /mnt/c/<<path-to-folder>>/aspnetcore.pfx -p $CREDENTIAL_PLACEHOLDER$
Az előző módszer tanúsítványonként és WSL-eloszlásonként egyszeri művelet. Egyszerűbb, mint a tanúsítvány újra és újra exportálása. Ha windows rendszeren frissíti vagy újragenerálja a tanúsítványt, előfordulhat, hogy újra kell futtatnia az előző parancsokat.
A tanúsítványokkal kapcsolatos problémák, például a nem megbízható tanúsítványok hibaelhárítása
Ez a szakasz segítséget nyújt a ASP.NET Core HTTPS-fejlesztési tanúsítvány telepítésekor és megbízhatóságában, de böngészőbeli figyelmeztetések vannak arról, hogy a tanúsítvány nem megbízható. A ASP.NET Core HTTPS fejlesztési tanúsítványt használja a Kestrelrendszer.
Az IIS Express-tanúsítvány javításához tekintse meg ezt a Stackoverflow-problémát .
Minden platform – a tanúsítvány nem megbízható
Futtassa az alábbi parancsot:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Zárja be a megnyitott böngészőpéldányokat. Nyisson meg egy új böngészőablakot az alkalmazásnak. A tanúsítványmegbízhatóságot a böngészők gyorsítótárazják.
dotnet dev-certs https --clean nem sikerült
Az előző parancsok a böngésző megbízhatóságával kapcsolatos legtöbb problémát megoldják. Ha a böngésző továbbra sem bízik a tanúsítványban, kövesse az alábbi platformspecifikus javaslatokat.
Docker – a tanúsítvány nem megbízható
- Törölje a C:\Users{USER}\AppData\Roaming\ASP.NET\Https mappát.
- Tisztítsa meg az oldatot. Törölje a tároló, a és a obj, valamint a mappákat.
- Indítsa újra a fejlesztőeszközt. Ilyen például a Visual Studio, a Visual Studio Code vagy a Mac Visual Studio.
Windows – a tanúsítvány nem megbízható
- Ellenőrizze a tanúsítványtárolóban található tanúsítványokat. Egy
localhosttanúsítványnak kell lennieASP.NET Core HTTPS development certificatebarátságos névvel, mindCurrent User > Personal > CertificatesmindCurrent User > Trusted root certification authorities > Certificatesalatt. - Távolítsa el az összes talált tanúsítványt mind a személyes, mind a megbízható legfelső szintű hitelesítésszolgáltatóktól. Ne távolítsa el az IIS Express localhost tanúsítványt.
- Futtassa az alábbi parancsot:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Zárja be a megnyitott böngészőpéldányokat. Nyisson meg egy új böngészőablakot az alkalmazásnak. A tanúsítványmegbízhatóságot a böngészők gyorsítótárazják.
OS X – a tanúsítvány nem megbízható
- Nyissa meg a KeyChain Accesst.
- Válassza ki a rendszerkulcsláncot.
- Ellenőrizze, hogy van-e localhost-tanúsítvány.
- Ellenőrizze, hogy tartalmaz-e szimbólumot
+az ikonon, hogy az az összes felhasználó számára megbízható-e. - Távolítsa el a tanúsítványt a rendszerkulcsláncból.
- Futtassa az alábbi parancsot:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Zárja be a megnyitott böngészőpéldányokat. Nyisson meg egy új böngészőablakot az alkalmazásnak. A tanúsítványmegbízhatóságot a böngészők gyorsítótárazják.
A Visual Studióval kapcsolatos tanúsítványproblémák elhárításához lásd: HTTPS-hiba az IIS Express használatával (dotnet/AspNetCore #16892).
A Linux-tanúsítvány nem megbízható
Ellenőrizze, hogy a megbízhatóságra konfigurált tanúsítvány a kiszolgáló által Kestrel használt felhasználói HTTPS fejlesztői tanúsítvány-e.
Ellenőrizze az aktuális felhasználó alapértelmezett HTTPS fejlesztői Kestrel tanúsítványát a következő helyen:
ls -la ~/.dotnet/corefx/cryptography/x509stores/my
A HTTPS fejlesztői Kestrel tanúsítványfájl az SHA1 lenyomatát tartalmazza. A fájl törlésekor a dotnet dev-certs https --clean rendszeren keresztül, szükség esetén, egy másik ujjlenyomattal újragenerálódik.
Ellenőrizze az exportált tanúsítvány ujjlenyomatát az alábbi paranccsal:
openssl x509 -noout -fingerprint -sha1 -inform pem -in /usr/local/share/ca-certificates/aspnet/https.crt
Ha a tanúsítvány nem egyezik, az a következők egyike lehet:
- Egy régi tanúsítvány.
- Exportált egy fejlesztői tanúsítványt a legfelső szintű felhasználó számára. Ebben az esetben exportálja a tanúsítványt.
A legfelső szintű felhasználói tanúsítvány a következő helyen ellenőrizhető:
ls -la /root/.dotnet/corefx/cryptography/x509stores/my
A Visual Studióval használt IIS Express SSL-tanúsítvány
Az IIS Express-tanúsítvánnyal kapcsolatos problémák megoldásához válassza a Visual Studio telepítőjének Javítás elemét. További információkért tekintse meg ezt a GitHub-problémát.
További információk
Note
Ha .NET 9 vagy újabb SDK-t használ, tekintse meg a cikk .NET 9-es verziójában található frissített Linux-eljárásokat.
Warning
API-projektek
Ne használjon RequireHttpsAttribute olyan webes API-kat, amelyek bizalmas információkat kapnak.
RequireHttpsAttribute HTTP-állapotkódokkal irányítja át a böngészőket a HTTP-ről a HTTPS-be. Előfordulhat, hogy az API-ügyfelek nem értik vagy nem tartják be a HTTP-ről HTTPS-re történő átirányításokat. Az ilyen ügyfelek HTTP-en keresztül küldhetnek információkat. A webes API-knak a következőkre van szükség:
- Nem figyel a HTTP-n.
- Zárja be a kapcsolatot a 400-ás állapotkóddal (hibás kérés), és ne szolgálja ki a kérést.
Ha le szeretné tiltani a HTTP-átirányítást egy API-ban, állítsa be a ASPNETCORE_URLS környezeti változót, vagy használja a parancssori --urls jelzőt. További információ: ASP.NET Core futtatókörnyezetek és 8 módszer az ASP.NET Core-alkalmazások URL-címeinek beállítására Andrew Lock által.
HSTS- és API-projektek
Az alapértelmezett API-projektek nem tartalmazzák a HSTS-t , mivel a HSTS általában csak böngészőutasítás . Más hívók, például telefonos vagy asztali alkalmazások , nem tartják be az utasításokat. Még a böngészőkben is fennáll a veszélye annak, hogy egy API http-n keresztüli hitelesített hívása nem biztonságos hálózatokat veszélyeztet. A biztonságos megközelítés az API-projektek konfigurálása, hogy csak a HTTPS-en keresztül hallgassanak és válaszoljanak.
A HTTP-ről HTTPS-re történő átirányítás ERR_INVALID_REDIRECT hibát okoz a CORS-elővizsgálati kérelemben.
A HTTP-t használó végpontra irányuló kérelmek, amelyeket a UseHttpsRedirection HTTPS-re átirányítanak, sikertelenek a CORS elővizsgálati kérelem során ERR_INVALID_REDIRECT.
Az API-projektek elutasíthatják a HTTP-kéréseket, ahelyett, hogy UseHttpsRedirection segítségével irányítanák át a kéréseket HTTPS-re.
HTTPS megkövetelése
Javasoljuk, hogy az éles ASP.NET Core-webalkalmazások a következőket használják:
- HTTPS-átirányítási köztes szoftver (UseHttpsRedirection) a HTTP-kérések HTTPS-be való átirányításához.
- A HSTS köztes szoftver (UseHsts) HTTP Strict Transport Security (HSTS) protokollfejléceket küld az ügyfeleknek.
Note
A fordított proxykonfigurációban üzembe helyezett alkalmazások lehetővé teszik a proxy számára a kapcsolatbiztonság (HTTPS) kezelését. Ha a proxy a HTTPS-átirányítást is kezeli, nincs szükség HTTPS-átirányítási köztes szoftver használatára. Ha a proxykiszolgáló HSTS-fejlécek írását is kezeli (például natív HSTS-támogatás az IIS 10.0 -ban (1709) vagy újabb verziókban), az alkalmazás nem igényli a HSTS köztes szoftver használatát. További információ: HTTPS/HSTS letiltása a projektlétrehozáskor.
HTTPS átirányítási köztes szoftver (UseHttpsRedirection)
A következő kódhívás a UseHttpsRedirection fájlban található: Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Az előző kiemelt kód:
- Az alapértelmezett HttpsRedirectionOptions.RedirectStatusCode (Status307TemporaryRedirect) értéket használja.
- Az alapértelmezett HttpsRedirectionOptions.HttpsPort (null) értéket használja, kivéve, ha azt a
ASPNETCORE_HTTPS_PORTkörnyezeti változó vagy IServerAddressesFeature felülírja.
Javasoljuk, hogy ideiglenes átirányításokat használjunk állandó átirányítások helyett. A linkek gyorsítótárazása instabil viselkedést okozhat a fejlesztési környezetekben. Ha inkább állandó átirányítási állapotkódot szeretne küldeni, amikor az alkalmazás nem Development környezetben van, tekintse meg az állandó átirányítások konfigurálása a gyártásban című szakaszt. Javasoljuk, hogy HSTS használatával jelezhesse az ügyfeleknek, hogy csak biztonságos erőforrás-kérelmeket kell küldeni az alkalmazásnak (csak éles környezetben).
Portkonfiguráció
A köztes szoftvernek elérhetőnek kell lennie egy portnak ahhoz, hogy egy nem biztonságos kérést átirányítson a HTTPS-be. Ha nincs elérhető port:
- A HTTPS-hez való átirányítás nem történik meg.
- A köztes szoftver naplózza a következő figyelmeztetést: "Nem sikerült meghatározni a https-portot az átirányításhoz."
Adja meg a HTTPS-portot az alábbi módszerek bármelyikével:
Állítsa be a HttpsRedirectionOptions.HttpsPort értékét.
Állítsa be a
https_portgazdagép beállításait:Gazdagépkonfigurációban.
A
ASPNETCORE_HTTPS_PORTkörnyezeti változó beállításával.Úgy, hogy hozzáadsz egy legfelső szintű bejegyzést itt:
appsettings.json.{ "https_port": 443, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
Jelöljön meg egy portot a biztonságos sémával a ASPNETCORE_URLS környezeti változó használatával. A környezeti változó konfigurálja a kiszolgálót. A köztes szoftver közvetetten felderíti a HTTPS-portot a IServerAddressesFeature. Ez a megközelítés nem működik fordított proxytelepítésekben.
Az ASP.NET Core-websablonok HTTPS-URL címet állítanak be a
Properties/launchsettings.jsonmind a Kestrel mind az IIS Express számára.launchsettings.jsoncsak a helyi gépen használható.HTTPS URL-végpontot kell konfigurálni a Kestrel kiszolgáló vagy a HTTP.sys kiszolgáló nyilvános elérhetőségű peremhálózati üzembe helyezéséhez. Az alkalmazás csak egy HTTPS-portot használ. A köztes szoftver a portot észleli a következőn keresztül: IServerAddressesFeature.
Note
Ha egy alkalmazás fordított proxykonfigurációban fut, IServerAddressesFeature nem érhető el. Állítsa be a portot az ebben a szakaszban ismertetett egyéb megközelítések egyikével.
Peremtelepítések
Amikor Kestrel vagy HTTP.sys nyilvános elérésű edge szerverként van használva, akkor Kestrel vagy HTTP.sys úgy kell konfigurálni, hogy mindkettőt figyelje.
- A biztonságos port, amelyre az ügyfél át van irányítva (általában a 443-as port az éles környezetben, és az 5001-es a fejlesztési környezetben).
- A nem biztonságos port (általában 80 éles környezetben és 5000 fejlesztési környezetben).
A nem biztonságos portot az ügyfélnek el kell érnie ahhoz, hogy az alkalmazás nem biztonságos kérést kapjon, és átirányíthassa az ügyfelet a biztonságos portra.
További információ: Kestrel végpontkonfiguráció vagy HTTP.sys webkiszolgáló implementálása a ASP.NET Core-ban.
Üzembe helyezési forgatókönyvek
Az ügyfél és a kiszolgáló közötti tűzfalnak nyitva kell lennie a forgalom számára nyitva lévő kommunikációs portokkal is.
Ha a kérések továbbítása fordított proxykonfigurációban történik, használja a továbbított fejlécek köztes szoftverét , mielőtt meghívja a HTTPS-átirányítási köztes szoftvereket. A továbbított fejlécek köztes rétege a Request.Scheme fejléc használatával frissíti a X-Forwarded-Proto fejlécet. A köztes szoftver lehetővé teszi az átirányítási URI-k és más biztonsági szabályzatok megfelelő működését. Ha a továbbított fejlécek köztes szoftverkomponenst nem használják, előfordulhat, hogy a háttéralkalmazás nem kapja meg a helyes sémát, emiatt pedig átirányítási hurokba kerül. Gyakori végfelhasználói hibaüzenet, hogy túl sok átirányítás történt.
Az Azure App Service-ben való üzembe helyezéskor kövesse az oktatóanyag útmutatását : Meglévő egyéni SSL-tanúsítvány kötése az Azure Web Appshez.
Beállítások
A köztes szoftver beállításainak konfigurálásához a következő kiemelt kódhívások AddHttpsRedirection :
using static Microsoft.AspNetCore.Http.StatusCodes;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = Status307TemporaryRedirect;
options.HttpsPort = 5001;
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
A hívás AddHttpsRedirection csak az értékek HttpsPortRedirectStatusCodemódosításához szükséges.
Az előző kiemelt kód:
-
HttpsRedirectionOptions.RedirectStatusCode beállítása Status307TemporaryRedirect értékre, ami az alapértelmezett. Használja az StatusCodes osztály mezőit a
RedirectStatusCodehozzárendelésekhez. - A HTTPS-portot 5001-re állítja.
Állandó átirányítások konfigurálása éles környezetben
A köztes szoftver alapértelmezésként egy Status307TemporaryRedirect küld az összes átirányításnál. Ha az állandó átirányítási állapotkódot szeretné küldeni, amikor az alkalmazás nem környezetiDevelopment állapotban van, csomagolja be a köztes szoftver beállításainak konfigurációját egy feltételes ellenőrzésbe, amely nem környezetiDevelopment állapotot tartalmaz.
Szolgáltatások konfigurálásakor a következő helyen Program.cs:
using static Microsoft.AspNetCore.Http.StatusCodes;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
if (!builder.Environment.IsDevelopment())
{
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = Status308PermanentRedirect;
options.HttpsPort = 443;
});
}
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
HTTPS-átirányítási köztes szoftver alternatív megközelítése
A HTTPS-átirányításra szolgáló köztes réteg (UseHttpsRedirection) használatának egyik alternatívája az URL-újraírásra szolgáló köztes réteg (AddRedirectToHttps) használata.
AddRedirectToHttps az átirányítás végrehajtásakor az állapotkódot és a portot is beállíthatja. További információkért lásd: URL-átíró köztes szoftver.
Ha a HTTPS-hez a további átirányítási szabályok megkövetelése nélkül irányít át, javasoljuk, hogy a jelen cikkben ismertetett HTTPS-átirányítási köztes szoftver (UseHttpsRedirection) használatát használja.
HTTP Strict Transport Security (HSTS) protokoll
Az OWASP szerint a HTTP Strict Transport Security (HSTS) egy válaszfejlécen keresztül megadott, opt-in biztonsági fejlesztés, amelyet a webalkalmazás kínál. Ha a HSTS-t támogató böngésző a következő fejlécet kapja:
- A böngésző tárolja a tartomány konfigurációját, amely megakadályozza a HTTP-en keresztüli kommunikáció küldését. A böngésző minden kommunikációt HTTPS-en keresztül kényszerít.
- A böngésző megakadályozza, hogy a felhasználó nem megbízható vagy érvénytelen tanúsítványokat használ. A böngésző letiltja azokat a kéréseket, amelyek lehetővé teszik a felhasználó számára, hogy ideiglenesen megbízzanak egy ilyen tanúsítványban.
Mivel a HSTS-t az ügyfél kényszeríti ki, bizonyos korlátozásokkal rendelkezik:
- Az ügyfélnek támogatnia kell a HSTS-t.
- A HSTS legalább egy sikeres HTTPS-kérést igényel a HSTS-szabályzat létrehozásához.
- Az alkalmazásnak minden HTTP-kérést ellenőriznie kell, és át kell irányítania vagy el kell utasítania a HTTP-kérést.
ASP.NET Core a HSTS-t bővítménymetódussal UseHsts implementálja. Az alábbi kódhívások UseHsts , ha az alkalmazás nincs fejlesztési módban:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
UseHsts nem ajánlott a fejlesztés során, mert a HSTS-beállításokat a böngészők könnyen gyorsítótárazhatják. Alapértelmezés szerint UseHsts kizárja a helyi visszacsatolási címet.
A HTTPS-t első alkalommal implementáló éles környezetekben állítsa a kezdeti HstsOptions.MaxAge értéket egy kis értékre az TimeSpan egyik metódus használatával. Állítsa be az értéket úgy, hogy órák helyett legfeljebb egy nap legyen, arra az esetre, ha vissza kell állítania a HTTPS-infrastruktúrát HTTP-re. Miután biztos a HTTPS-konfiguráció fenntarthatóságában, növelje a HSTS-értéket max-age ; a gyakran használt érték egy év.
A következő kiemelt kód:
using static Microsoft.AspNetCore.Http.StatusCodes;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = Status307TemporaryRedirect;
options.HttpsPort = 5001;
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
- Beállítja a
Strict-Transport-Securityfejléc előbetöltési paraméterét. Az előzetes adatbetöltés nem része az RFC HSTS-specifikációnak, de a webböngészők támogatják a HSTS-webhelyek új telepítésre való előzetes betöltését. További információért lásd https://hstspreload.org/. - Engedélyezi az includeSubDomain beállítást, amely a HSTS-szabályzatot alkalmazza a Host altartományaira.
- Az
max-agefejlécStrict-Transport-Securityparaméterét explicit módon 60 napra állítja be. Ha nincs beállítva, az alapértelmezett érték 30 nap. További információt a maximális életkorról szóló irányelvben talál. - A
example.comelemet hozzáadja a kizárandó gazdagépek listájához.
UseHsts kizárja a következő visszacsatolási gazdagépeket:
-
localhost: Az IPv4 visszacsatolási címe. -
127.0.0.1: Az IPv4 visszacsatolási címe. -
[::1]: Az IPv6 visszacsatolási címe.
A HTTPS/HSTS letiltása projektlétrehozáskor
Bizonyos háttérszolgáltatás-forgatókönyvekben, ahol a kapcsolatbiztonság a hálózat nyilvános elérésű peremhálózatán van kezelve, nincs szükség a kapcsolatbiztonság konfigurálására az egyes csomópontokon. A Visual Studio sablonjaiból vagy a dotnet új parancsából létrehozott webalkalmazások engedélyezik a HTTPS-átirányítást és a HSTS-t. Az olyan üzemelő példányok esetében, amelyek nem igénylik ezeket a forgatókönyveket, kikapcsolhatja a HTTPS/HSTS szolgáltatást, ha az alkalmazás a sablonból jön létre.
A HTTPS/HSTS letiltása:
Törölje a jelölést a HTTPS konfigurálás jelölőnégyzetből.
A ASP.NET Core HTTPS fejlesztési tanúsítvány megbízhatósága Windows és macOS rendszeren
A Firefox böngészőben lásd a következő szakaszt.
A .NET Core SDK tartalmaz egy HTTPS fejlesztési tanúsítványt. A tanúsítvány az első futtatás során települ. Például dotnet --info a következő kimenet egy változata jelenik meg:
ASP.NET Core
------------
Successfully installed the ASP.NET Core HTTPS Development Certificate.
To trust the certificate run 'dotnet dev-certs https --trust' (Windows and macOS only).
For establishing trust on other platforms refer to the platform specific documentation.
For more information on configuring HTTPS see https://go.microsoft.com/fwlink/?linkid=848054.
A .NET Core SDK telepítése telepíti a ASP.NET Core HTTPS fejlesztési tanúsítványt a helyi felhasználói tanúsítványtárolóba. A tanúsítvány telepítve van, de nem megbízható. A tanúsítvány megbízhatóságához hajtsa végre az eszköz futtatásához dotnet dev-certs szükséges egyszeri lépést:
dotnet dev-certs https --trust
Az alábbi parancs segítséget nyújt az dotnet dev-certs eszközről:
dotnet dev-certs https --help
Warning
Ne hozzon létre fejlesztési tanúsítványt olyan környezetben, amely újraterjesztésre kerül, például tárolólemezképet vagy virtuális gépet. Ez hamisításhoz és jogosultságszint-emeléséhez vezethet. Ennek elkerülése érdekében állítsa a DOTNET_GENERATE_ASPNET_CERTIFICATE környezeti változót false a .NET CLI első meghívása előtt. Ez kihagyja a ASP.NET Core fejlesztési tanúsítvány automatikus létrehozását a parancssori felület első futtatása során.
Bízzon a HTTPS-tanúsítványban a Firefoxban a SEC_ERROR_INADEQUATE_KEY_USAGE hiba elkerülése érdekében
A Firefox böngésző saját tanúsítványtárolót használ, ezért nem bízik az IIS Express vagy Kestrel a fejlesztői tanúsítványokban.
A HTTPS-tanúsítványnak a Firefoxban való megbízhatóságára, szabályzatfájl létrehozására vagy a FireFox böngészővel való konfigurálására két módszer létezik. A böngészővel való konfigurálás létrehozza a szabályzatfájlt, így a két módszer egyenértékű.
Szabályzatfájl létrehozása HTTPS-tanúsítvány megbízhatóságához a Firefoxban
Hozzon létre egy szabályzatfájlt (policies.json) a következő helyen:
- Windows:
%PROGRAMFILES%\Mozilla Firefox\distribution\ - MacOS:
Firefox.app/Contents/Resources/distribution - Linux: Ebben a cikkben tekintse meg a Linuxon futó Firefox tanúsítvány megbízhatóságát .
Adja hozzá a következő JSON-t a Firefox-házirendfájlhoz:
{
"policies": {
"Certificates": {
"ImportEnterpriseRoots": true
}
}
}
Az előző szabályzatfájl a Windows tanúsítványtárolójában található megbízható tanúsítványokból származó Firefox megbízhatósági tanúsítványokat készít. A következő szakasz alternatív módszert kínál az előző szabályzatfájl létrehozásához a Firefox böngészővel.
HTTPS-tanúsítvány megbízhatóságának konfigurálása a Firefox böngészővel
Állítsa be security.enterprise_roots.enabled = true a következő utasítások felhasználásával.
- Adja meg
about:configa Firefox böngészőben. - Ha elfogadja a kockázatot, válassza a Kockázat elfogadása és a Folytatás lehetőséget.
- Válassza az Összes megjelenítése lehetőséget
- Beállít
security.enterprise_roots.enabled=true - Kilépés és újraindítás a Firefoxból
További információ: Hitelesítésszolgáltatók beállítása a Firefoxban és a mozilla/policy-templates/README fájl.
Fejlesztői tanúsítvány beállítása a Dockerhez
Lásd ezt a GitHub-hibajegyet.
HTTPS-tanúsítvány megbízhatósága Linuxon
A bizalom kiépítése terjesztési és böngészőspecifikus feladat. Az alábbi szakaszok útmutatást nyújtanak néhány népszerű disztribúcióhoz, valamint a Chromium böngészőkhöz (Edge és Chrome) és a Firefoxhoz.
Az Ubuntu megbízik a tanúsítványban a szolgáltatásközi kommunikációhoz
Az alábbi utasítások nem működnek egyes Ubuntu-verziókhoz, például a 20.04-hez. További információ: GitHub-probléma dotnet/AspNetCore.Docs #23686.
Telepítse az OpenSSL 1.1.1h vagy újabb verzióját. Az OpenSSL frissítésére vonatkozó útmutatásért tekintse meg a disztribúciót.
Futtassa az alábbi parancsot:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM sudo update-ca-certificates
Az előző parancsok:
- Győződjön meg arról, hogy az aktuális felhasználó fejlesztői tanúsítványa létrejött.
- Exportálja a mappához
ca-certificatesszükséges emelt szintű engedélyekkel rendelkező tanúsítványt az aktuális felhasználó környezetének használatával. - A
-Ejelző eltávolítása exportálja a fő felhasználói tanúsítványt, és szükség esetén létrehozza. Minden újonnan létrehozott tanúsítvány más ujjlenyomattal rendelkezik. Ha gyökérként fut,sudoés-Enincs rá szükség.
Az előző parancs elérési útja az Ubuntura vonatkozik. Más disztribúciók esetén válassza ki a megfelelő elérési utat, vagy használja a hitelesítésszolgáltatók elérési útját.
HTTPS-tanúsítvány megbízhatósága Linuxon az Edge vagy a Chrome használatával
Linuxon futó chromium böngészők esetén:
Telepítse a
libnss3-tools-t a disztribúciójához.Hozza létre vagy ellenőrizze, hogy a
$HOME/.pki/nssdbmappa létezik-e a gépen.Exportálja a tanúsítványt a következő paranccsal:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEMAz előző parancs elérési útja az Ubuntura vonatkozik. Más disztribúciók esetén válassza ki a megfelelő elérési utat, vagy használja a hitelesítésszolgáltatók elérési útját.
Futtassa az alábbi parancsot:
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n localhost -i /usr/local/share/ca-certificates/aspnet/https.crtLépjen ki, és indítsa újra a böngészőt.
A tanúsítvány megbízhatósága a Linuxon futó Firefoxban
Exportálja a tanúsítványt a következő paranccsal:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEMAz előző parancs elérési útja az Ubuntura vonatkozik. Más disztribúciók esetén válassza ki a megfelelő elérési utat, vagy használja a hitelesítésszolgáltatók elérési útját.
Hozzon létre egy JSON-fájlt
/usr/lib/firefox/distribution/policies.jsona következő paranccsal:
cat <<EOF | sudo tee /usr/lib/firefox/distribution/policies.json
{
"policies": {
"Certificates": {
"Install": [
"/usr/local/share/ca-certificates/aspnet/https.crt"
]
}
}
}
EOF
Megjegyzés: Az Ubuntu 21.10 Firefox snap csomagként érkezik, és a telepítési mappa /snap/firefox/current/usr/lib/firefox.
A szabályzatfájl böngészővel történő konfigurálásának alternatív módjáról ebben a cikkben a HTTPS-tanúsítvány megbízhatóságának konfigurálása a Firefox böngészővel című témakörben olvashat.
A tanúsítvány megbízhatósága a Fedora 34 használatával
See:
- Ez a GitHub-megjegyzés
- Fedora: Megosztott rendszertanúsítványok használata
- .NET-fejlesztési környezet beállítása a Fedorán.
Bízzon a tanúsítványban más disztribúciókkal
Lásd ezt a GitHub-hibajegyet.
HTTPS-tanúsítvány megbízhatósága Linux rendszerhez készült Windows-alrendszerből
Az alábbi utasítások nem működnek egyes Linux-disztribúciók esetében, például az Ubuntu 20.04-ben. További információ: GitHub-probléma dotnet/AspNetCore.Docs #23686.
A Linux windowsos alrendszere (WSL) létrehoz egy HTTPS önaláírt fejlesztési tanúsítványt, amely alapértelmezés szerint nem megbízható a Windowsban. A windowsos WSL-tanúsítvány megbízhatóságának legegyszerűbb módja, ha úgy konfigurálja a WSL-t, hogy ugyanazt a tanúsítványt használja, mint a Windows:
Windows rendszeren exportálja a fejlesztői tanúsítványt egy fájlba:
dotnet dev-certs https -ep https.pfx -p $CREDENTIAL_PLACEHOLDER$ --trustHol
$CREDENTIAL_PLACEHOLDER$található a jelszó?Egy WSL-ablakban importálja az exportált tanúsítványt a WSL-példányon:
dotnet dev-certs https --clean --import <<path-to-pfx>> --password $CREDENTIAL_PLACEHOLDER$
Az előző módszer tanúsítványonként és WSL-eloszlásonként egyszeri művelet. Egyszerűbb, mint a tanúsítvány újra és újra exportálása. Ha windows rendszeren frissíti vagy újragenerálja a tanúsítványt, előfordulhat, hogy újra kell futtatnia az előző parancsokat.
A tanúsítványokkal kapcsolatos problémák, például a nem megbízható tanúsítványok hibaelhárítása
Ez a szakasz segítséget nyújt a ASP.NET Core HTTPS-fejlesztési tanúsítvány telepítésekor és megbízhatóságában, de böngészőbeli figyelmeztetések vannak arról, hogy a tanúsítvány nem megbízható. A ASP.NET Core HTTPS fejlesztési tanúsítványt használja a Kestrelrendszer.
Az IIS Express-tanúsítvány javításához tekintse meg ezt a Stackoverflow-problémát .
Minden platform – a tanúsítvány nem megbízható
Futtassa az alábbi parancsot:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Zárja be a megnyitott böngészőpéldányokat. Nyisson meg egy új böngészőablakot az alkalmazás számára. A tanúsítványmegbízhatóságot a böngészők gyorsítótárazják.
dotnet dev-certs https --clean sikertelen
Az előző parancsok a böngésző megbízhatóságával kapcsolatos legtöbb problémát megoldják. Ha a böngésző továbbra sem bízik a tanúsítványban, kövesse az alábbi platformspecifikus javaslatokat.
Docker – a tanúsítvány nem megbízható
- Törölje a C:\Users{USER}\AppData\Roaming\ASP.NET\Https mappát.
- Tisztítsa meg az oldatot. Törölje a tároló, a és a obj, valamint a mappákat.
- Indítsa újra a fejlesztőeszközt. Például a Visual Studio vagy a Visual Studio Code.
Windows – a tanúsítvány nem megbízható
- Ellenőrizze a tanúsítványtárolóban található tanúsítványokat. Egy
localhosttanúsítványnak kell lennieASP.NET Core HTTPS development certificatebarátságos névvel, mindCurrent User > Personal > CertificatesmindCurrent User > Trusted root certification authorities > Certificatesalatt. - Távolítsa el az összes talált tanúsítványt mind a személyes, mind a megbízható legfelső szintű hitelesítésszolgáltatóktól. Ne távolítsa el az IIS Express localhost tanúsítványt.
- Futtassa az alábbi parancsot:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Zárja be a megnyitott böngészőpéldányokat. Nyisson meg egy új böngészőablakot az alkalmazás számára.
OS X – a tanúsítvány nem megbízható
- Nyissa meg a KeyChain Accesst.
- Válassza ki a rendszerkulcsláncot.
- Ellenőrizze, hogy van-e localhost-tanúsítvány.
- Ellenőrizze, hogy tartalmaz-e szimbólumot
+az ikonon, hogy az az összes felhasználó számára megbízható-e. - Távolítsa el a tanúsítványt a rendszerkulcsláncból.
- Futtassa az alábbi parancsot:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Zárja be a megnyitott böngészőpéldányokat. Nyisson meg egy új böngészőablakot az alkalmazás számára.
A Visual Studióval kapcsolatos tanúsítványproblémák elhárításához lásd: HTTPS-hiba az IIS Express használatával (dotnet/AspNetCore #16892).
A Linux-tanúsítvány nem megbízható
Ellenőrizze, hogy a megbízhatóságra konfigurált tanúsítvány a kiszolgáló által Kestrel használt felhasználói HTTPS fejlesztői tanúsítvány-e.
Ellenőrizze az aktuális felhasználó alapértelmezett HTTPS fejlesztői Kestrel tanúsítványát a következő helyen:
ls -la ~/.dotnet/corefx/cryptography/x509stores/my
A HTTPS fejlesztői Kestrel tanúsítványfájl az SHA1 lenyomatát tartalmazza. A fájl törlésekor a dotnet dev-certs https --clean rendszeren keresztül, szükség esetén, egy másik ujjlenyomattal újragenerálódik.
Ellenőrizze az exportált tanúsítvány ujjlenyomatát az alábbi paranccsal:
openssl x509 -noout -fingerprint -sha1 -inform pem -in /usr/local/share/ca-certificates/aspnet/https.crt
Ha a tanúsítvány nem egyezik, az a következők egyike lehet:
- Egy régi tanúsítvány.
- Exportált egy fejlesztői tanúsítványt a legfelső szintű felhasználó számára. Ebben az esetben exportálja a tanúsítványt.
A legfelső szintű felhasználói tanúsítvány a következő helyen ellenőrizhető:
ls -la /root/.dotnet/corefx/cryptography/x509stores/my
A Visual Studióval használt IIS Express SSL-tanúsítvány
Az IIS Express-tanúsítvánnyal kapcsolatos problémák megoldásához válassza a Visual Studio telepítőjének Javítás elemét. További információkért tekintse meg ezt a GitHub-problémát.
A csoportházirend megakadályozza az önaláírt tanúsítványok megbízhatóságát
Bizonyos esetekben a csoportházirend megakadályozhatja az önaláírt tanúsítványok megbízhatóságát. További információkért tekintse meg ezt a GitHub-problémát.
További információk
Note
Ha .NET 9 vagy újabb SDK-t használ, tekintse meg a cikk .NET 9-es verziójában található frissített Linux-eljárásokat.
Warning
API-projektek
Ne használjon RequireHttpsAttribute olyan webes API-kat, amelyek bizalmas információkat kapnak.
RequireHttpsAttribute HTTP-állapotkódokkal irányítja át a böngészőket a HTTP-ről a HTTPS-be. Előfordulhat, hogy az API-ügyfelek nem értik vagy nem tartják be a HTTP-ről HTTPS-re történő átirányításokat. Az ilyen ügyfelek HTTP-en keresztül küldhetnek információkat. A webes API-knak a következőkre van szükség:
- Nem figyel a HTTP-n.
- Zárja be a kapcsolatot a 400-ás állapotkóddal (hibás kérés), és ne szolgálja ki a kérést.
Ha le szeretné tiltani a HTTP-átirányítást egy API-ban, állítsa be a ASPNETCORE_URLS környezeti változót, vagy használja a parancssori --urls jelzőt. További információ: ASP.NET Core futtatókörnyezetek és 8 módszer az ASP.NET Core-alkalmazások URL-címeinek beállítására Andrew Lock által.
HSTS- és API-projektek
Az alapértelmezett API-projektek nem tartalmazzák a HSTS-t , mivel a HSTS általában csak böngészőutasítás . Más hívók, például telefonos vagy asztali alkalmazások , nem tartják be az utasításokat. Még a böngészőkben is fennáll a veszélye annak, hogy egy API http-n keresztüli hitelesített hívása nem biztonságos hálózatokat veszélyeztet. A biztonságos megközelítés az API-projektek konfigurálása, hogy csak a HTTPS-en keresztül hallgassanak és válaszoljanak.
A HTTP-ről HTTPS-re történő átirányítás ERR_INVALID_REDIRECT hibát okoz a CORS-elővizsgálati kérelemben.
A HTTP-t használó végpontra irányuló kérelmek, amelyeket a UseHttpsRedirection HTTPS-re átirányítanak, sikertelenek a CORS elővizsgálati kérelem során ERR_INVALID_REDIRECT.
Az API-projektek elutasíthatják a HTTP-kéréseket, ahelyett, hogy UseHttpsRedirection segítségével irányítanák át a kéréseket HTTPS-re.
HTTPS megkövetelése
Javasoljuk, hogy az éles ASP.NET Core-webalkalmazások a következőket használják:
- HTTPS-átirányítási köztes szoftver (UseHttpsRedirection) a HTTP-kérések HTTPS-be való átirányításához.
- A HSTS köztes szoftver (UseHsts) HTTP Strict Transport Security (HSTS) protokollfejléceket küld az ügyfeleknek.
Note
A fordított proxykonfigurációban üzembe helyezett alkalmazások lehetővé teszik a proxy számára a kapcsolatbiztonság (HTTPS) kezelését. Ha a proxy a HTTPS-átirányítást is kezeli, nincs szükség HTTPS-átirányítási köztes szoftver használatára. Ha a proxykiszolgáló HSTS-fejlécek írását is kezeli (például natív HSTS-támogatás az IIS 10.0 -ban (1709) vagy újabb verziókban), az alkalmazás nem igényli a HSTS köztes szoftver használatát. További információ: HTTPS/HSTS letiltása a projektlétrehozáskor.
HTTPS átirányítási köztes szoftver (UseHttpsRedirection)
A következő kódhívás a UseHttpsRedirection fájlban található: Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Az előző kiemelt kód:
- Az alapértelmezett HttpsRedirectionOptions.RedirectStatusCode (Status307TemporaryRedirect) értéket használja.
- Az alapértelmezett HttpsRedirectionOptions.HttpsPort (null) értéket használja, kivéve, ha azt a
ASPNETCORE_HTTPS_PORTkörnyezeti változó vagy IServerAddressesFeature felülírja.
Javasoljuk, hogy ideiglenes átirányításokat használjunk állandó átirányítások helyett. A linkek gyorsítótárazása instabil viselkedést okozhat a fejlesztési környezetekben. Ha inkább állandó átirányítási állapotkódot szeretne küldeni, amikor az alkalmazás nem Development környezetben van, tekintse meg az állandó átirányítások konfigurálása a gyártásban című szakaszt. Javasoljuk, hogy HSTS használatával jelezhesse az ügyfeleknek, hogy csak biztonságos erőforrás-kérelmeket kell küldeni az alkalmazásnak (csak éles környezetben).
Note
Ne keverje össze a konfigurációs kulcsot és a HTTPS_PORT környezeti változót, amely a HTTPS átirányítási köztes szoftver portját állítja be a konfigurációs kulccsal és ASPNETCORE_HTTPS_PORTS a HTTPS_PORTS környezeti változóval, amely beállítja a portokat a /HTTP.sys végpontkonfigurációhozKestrel.ASPNETCORE_HTTPS_PORT
Portkonfiguráció
A köztes szoftvernek elérhetőnek kell lennie egy portnak ahhoz, hogy egy nem biztonságos kérést átirányítson a HTTPS-be. Ha nincs elérhető port:
- A HTTPS-hez való átirányítás nem történik meg.
- A köztes szoftver naplózza a következő figyelmeztetést: "Nem sikerült meghatározni a https-portot az átirányításhoz."
Adja meg a HTTPS-portot az alábbi módszerek bármelyikével:
Állítsa be a HttpsRedirectionOptions.HttpsPort értékét.
Állítsa be a
https_portgazdagép beállításait:Gazdagépkonfigurációban.
A
ASPNETCORE_HTTPS_PORTkörnyezeti változó beállításával.Úgy, hogy hozzáadsz egy legfelső szintű bejegyzést itt:
appsettings.json.{ "https_port": 443, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
Jelöljön meg egy portot a biztonságos sémával a ASPNETCORE_URLS környezeti változó használatával. A környezeti változó konfigurálja a kiszolgálót. A köztes szoftver közvetetten felderíti a HTTPS-portot a IServerAddressesFeature. Ez a megközelítés nem működik fordított proxytelepítésekben.
Az ASP.NET Core-websablonok HTTPS-URL címet állítanak be a
Properties/launchsettings.jsonmind a Kestrel mind az IIS Express számára.launchsettings.jsoncsak a helyi gépen használható.HTTPS URL-végpontot kell konfigurálni a Kestrel kiszolgáló vagy a HTTP.sys kiszolgáló nyilvános elérhetőségű peremhálózati üzembe helyezéséhez. Az alkalmazás csak egy HTTPS-portot használ. A köztes szoftver a portot észleli a következőn keresztül: IServerAddressesFeature.
Note
Ha egy alkalmazás fordított proxykonfigurációban fut, IServerAddressesFeature nem érhető el. Állítsa be a portot az ebben a szakaszban ismertetett egyéb megközelítések egyikével.
Peremtelepítések
Amikor Kestrel vagy HTTP.sys nyilvános elérésű edge szerverként van használva, akkor Kestrel vagy HTTP.sys úgy kell konfigurálni, hogy mindkettőt figyelje.
- A biztonságos port, amelyre az ügyfél át van irányítva (általában a 443-as port az éles környezetben, és az 5001-es a fejlesztési környezetben).
- A nem biztonságos port (általában 80 éles környezetben és 5000 fejlesztési környezetben).
A nem biztonságos portot az ügyfélnek el kell érnie ahhoz, hogy az alkalmazás nem biztonságos kérést kapjon, és átirányíthassa az ügyfelet a biztonságos portra.
További információ: Kestrel végpontkonfiguráció vagy HTTP.sys webkiszolgáló implementálása a ASP.NET Core-ban.
Üzembe helyezési forgatókönyvek
Az ügyfél és a kiszolgáló közötti tűzfalnak nyitva kell lennie a forgalom számára nyitva lévő kommunikációs portokkal is.
Ha a kérések továbbítása fordított proxykonfigurációban történik, használja a továbbított fejlécek köztes szoftverét , mielőtt meghívja a HTTPS-átirányítási köztes szoftvereket. A továbbított fejlécek köztes rétege a Request.Scheme fejléc használatával frissíti a X-Forwarded-Proto fejlécet. A köztes szoftver lehetővé teszi az átirányítási URI-k és más biztonsági szabályzatok megfelelő működését. Ha a továbbított fejlécek köztes szoftverkomponenst nem használják, előfordulhat, hogy a háttéralkalmazás nem kapja meg a helyes sémát, emiatt pedig átirányítási hurokba kerül. Gyakori végfelhasználói hibaüzenet, hogy túl sok átirányítás történt.
Az Azure App Service-ben való üzembe helyezéskor kövesse az oktatóanyag útmutatását : Meglévő egyéni SSL-tanúsítvány kötése az Azure Web Appshez.
Beállítások
A köztes szoftver beállításainak konfigurálásához a következő kiemelt kódhívások AddHttpsRedirection :
using static Microsoft.AspNetCore.Http.StatusCodes;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = Status307TemporaryRedirect;
options.HttpsPort = 5001;
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
A hívás AddHttpsRedirection csak az értékek HttpsPortRedirectStatusCodemódosításához szükséges.
Az előző kiemelt kód:
-
HttpsRedirectionOptions.RedirectStatusCode beállítása Status307TemporaryRedirect értékre, ami az alapértelmezett. Használja az StatusCodes osztály mezőit a
RedirectStatusCodehozzárendelésekhez. - A HTTPS-portot 5001-re állítja.
Állandó átirányítások konfigurálása éles környezetben
A köztes szoftver alapértelmezésként egy Status307TemporaryRedirect küld az összes átirányításnál. Ha az állandó átirányítási állapotkódot szeretné küldeni, amikor az alkalmazás nem környezetiDevelopment állapotban van, csomagolja be a köztes szoftver beállításainak konfigurációját egy feltételes ellenőrzésbe, amely nem környezetiDevelopment állapotot tartalmaz.
Szolgáltatások konfigurálásakor a következő helyen Program.cs:
using static Microsoft.AspNetCore.Http.StatusCodes;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
if (!builder.Environment.IsDevelopment())
{
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = Status308PermanentRedirect;
options.HttpsPort = 443;
});
}
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
HTTPS-átirányítási köztes szoftver alternatív megközelítése
A HTTPS-átirányításra szolgáló köztes réteg (UseHttpsRedirection) használatának egyik alternatívája az URL-újraírásra szolgáló köztes réteg (AddRedirectToHttps) használata.
AddRedirectToHttps az átirányítás végrehajtásakor az állapotkódot és a portot is beállíthatja. További információkért lásd: URL-átíró köztes szoftver.
Ha a HTTPS-hez a további átirányítási szabályok megkövetelése nélkül irányít át, javasoljuk, hogy a jelen cikkben ismertetett HTTPS-átirányítási köztes szoftver (UseHttpsRedirection) használatát használja.
HTTP Strict Transport Security (HSTS) protokoll
Az OWASP szerint a HTTP Strict Transport Security (HSTS) egy válaszfejlécen keresztül megadott, opt-in biztonsági fejlesztés, amelyet a webalkalmazás kínál. Ha a HSTS-t támogató böngésző a következő fejlécet kapja:
- A böngésző tárolja a tartomány konfigurációját, amely megakadályozza a HTTP-en keresztüli kommunikáció küldését. A böngésző minden kommunikációt HTTPS-en keresztül kényszerít.
- A böngésző megakadályozza, hogy a felhasználó nem megbízható vagy érvénytelen tanúsítványokat használ. A böngésző letiltja azokat a kéréseket, amelyek lehetővé teszik a felhasználó számára, hogy ideiglenesen megbízzanak egy ilyen tanúsítványban.
Mivel a HSTS-t az ügyfél kényszeríti ki, bizonyos korlátozásokkal rendelkezik:
- Az ügyfélnek támogatnia kell a HSTS-t.
- A HSTS legalább egy sikeres HTTPS-kérést igényel a HSTS-szabályzat létrehozásához.
- Az alkalmazásnak minden HTTP-kérést ellenőriznie kell, és át kell irányítania vagy el kell utasítania a HTTP-kérést.
ASP.NET Core a HSTS-t bővítménymetódussal UseHsts implementálja. Az alábbi kódhívások UseHsts , ha az alkalmazás nincs fejlesztési módban:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
UseHsts nem ajánlott a fejlesztés során, mert a HSTS-beállításokat a böngészők könnyen gyorsítótárazhatják. Alapértelmezés szerint UseHsts kizárja a helyi visszacsatolási címet.
A HTTPS-t első alkalommal implementáló éles környezetekben állítsa a kezdeti HstsOptions.MaxAge értéket egy kis értékre az TimeSpan egyik metódus használatával. Állítsa be az értéket úgy, hogy órák helyett legfeljebb egy nap legyen, arra az esetre, ha vissza kell állítania a HTTPS-infrastruktúrát HTTP-re. Miután biztos a HTTPS-konfiguráció fenntarthatóságában, növelje a HSTS-értéket max-age ; a gyakran használt érték egy év.
A következő kiemelt kód:
using static Microsoft.AspNetCore.Http.StatusCodes;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = Status307TemporaryRedirect;
options.HttpsPort = 5001;
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
- Beállítja a
Strict-Transport-Securityfejléc előbetöltési paraméterét. Az előzetes adatbetöltés nem része az RFC HSTS-specifikációnak, de a webböngészők támogatják a HSTS-webhelyek új telepítésre való előzetes betöltését. További információért lásd https://hstspreload.org/. - Engedélyezi az includeSubDomain beállítást, amely a HSTS-szabályzatot alkalmazza a Host altartományaira.
- Az
max-agefejlécStrict-Transport-Securityparaméterét explicit módon 60 napra állítja be. Ha nincs beállítva, az alapértelmezett érték 30 nap. További információt a maximális életkorról szóló irányelvben talál. - A
example.comelemet hozzáadja a kizárandó gazdagépek listájához.
UseHsts kizárja a következő visszacsatolási gazdagépeket:
-
localhost: Az IPv4 visszacsatolási címe. -
127.0.0.1: Az IPv4 visszacsatolási címe. -
[::1]: Az IPv6 visszacsatolási címe.
A HTTPS/HSTS letiltása projektlétrehozáskor
Bizonyos háttérszolgáltatás-forgatókönyvekben, ahol a kapcsolatbiztonság a hálózat nyilvános elérésű peremhálózatán van kezelve, nincs szükség a kapcsolatbiztonság konfigurálására az egyes csomópontokon. A Visual Studio sablonjaiból vagy a dotnet új parancsából létrehozott webalkalmazások engedélyezik a HTTPS-átirányítást és a HSTS-t. Az olyan üzemelő példányok esetében, amelyek nem igénylik ezeket a forgatókönyveket, kikapcsolhatja a HTTPS/HSTS szolgáltatást, ha az alkalmazás a sablonból jön létre.
A HTTPS/HSTS letiltása:
Törölje a jelölést a HTTPS konfigurálás jelölőnégyzetből.
A ASP.NET Core HTTPS fejlesztési tanúsítvány megbízhatósága Windows és macOS rendszeren
A Firefox böngészőben lásd a következő szakaszt.
A .NET SDK https fejlesztési tanúsítványt tartalmaz. A tanúsítvány az első futtatás során települ. Például dotnet --info a következő kimenet egy változata jelenik meg:
ASP.NET Core
------------
Successfully installed the ASP.NET Core HTTPS Development Certificate.
To trust the certificate run 'dotnet dev-certs https --trust' (Windows and macOS only).
For establishing trust on other platforms refer to the platform specific documentation.
For more information on configuring HTTPS see https://go.microsoft.com/fwlink/?linkid=848054.
A .NET SDK telepítése telepíti a ASP.NET Core HTTPS fejlesztési tanúsítványt a helyi felhasználói tanúsítványtárolóba. A tanúsítvány telepítve van, de nem megbízható. A tanúsítvány megbízhatóságához hajtsa végre az eszköz futtatásához dotnet dev-certs szükséges egyszeri lépést:
dotnet dev-certs https --trust
Az alábbi parancs segítséget nyújt az dotnet dev-certs eszközről:
dotnet dev-certs https --help
Warning
Ne hozzon létre fejlesztési tanúsítványt olyan környezetben, amely újraterjesztésre kerül, például tárolólemezképet vagy virtuális gépet. Ez hamisításhoz és jogosultságszint-emeléséhez vezethet. Ennek elkerülése érdekében állítsa a DOTNET_GENERATE_ASPNET_CERTIFICATE környezeti változót false a .NET CLI első meghívása előtt. Ez kihagyja a ASP.NET Core fejlesztési tanúsítvány automatikus létrehozását a parancssori felület első futtatása során.
Bízzon a HTTPS-tanúsítványban a Firefoxban a SEC_ERROR_INADEQUATE_KEY_USAGE hiba elkerülése érdekében
A Firefox böngésző saját tanúsítványtárolót használ, ezért nem bízik az IIS Express vagy Kestrel a fejlesztői tanúsítványokban.
A HTTPS-tanúsítványnak a Firefoxban való megbízhatóságára, szabályzatfájl létrehozására vagy a FireFox böngészővel való konfigurálására két módszer létezik. A böngészővel való konfigurálás létrehozza a szabályzatfájlt, így a két módszer egyenértékű.
Szabályzatfájl létrehozása HTTPS-tanúsítvány megbízhatóságához a Firefoxban
Hozzon létre egy szabályzatfájlt (policies.json) a következő helyen:
- Windows:
%PROGRAMFILES%\Mozilla Firefox\distribution\ - MacOS:
Firefox.app/Contents/Resources/distribution - Linux: Ebben a cikkben tekintse meg a Linuxon futó Firefox tanúsítvány megbízhatóságát .
Adja hozzá a következő JSON-t a Firefox-házirendfájlhoz:
{
"policies": {
"Certificates": {
"ImportEnterpriseRoots": true
}
}
}
Az előző szabályzatfájl a Windows tanúsítványtárolójában található megbízható tanúsítványokból származó Firefox megbízhatósági tanúsítványokat készít. A következő szakasz alternatív módszert kínál az előző szabályzatfájl létrehozásához a Firefox böngészővel.
HTTPS-tanúsítvány megbízhatóságának konfigurálása a Firefox böngészővel
Állítsa be security.enterprise_roots.enabled = true a következő utasítások felhasználásával.
- Adja meg
about:configa Firefox böngészőben. - Ha elfogadja a kockázatot, válassza a Kockázat elfogadása és a Folytatás lehetőséget.
- Válassza az Összes megjelenítése lehetőséget
- Beállít
security.enterprise_roots.enabled=true - Kilépés és újraindítás a Firefoxból
További információ: Hitelesítésszolgáltatók beállítása a Firefoxban és a mozilla/policy-templates/README fájl.
Fejlesztői tanúsítvány beállítása a Dockerhez
Lásd ezt a GitHub-hibajegyet.
HTTPS-tanúsítvány megbízhatósága Linuxon
A bizalom kiépítése terjesztési és böngészőspecifikus feladat. Az alábbi szakaszok útmutatást nyújtanak néhány népszerű disztribúcióhoz, valamint a Chromium böngészőkhöz (Edge és Chrome) és a Firefoxhoz.
HTTPS-tanúsítvány hitelesítése Linuxon a linux-dev-certs használatával
A linux-dev-certs egy nyílt forráskódú, közösség által támogatott , .NET-alapú globális eszköz, amely kényelmes módot kínál a linuxos fejlesztői tanúsítványok létrehozására és megbízhatóságára. Az eszközt a Microsoft nem tartja karban és nem támogatja.
Az alábbi parancsok telepítik az eszközt, és létrehoznak egy megbízható fejlesztői tanúsítványt:
dotnet tool update -g linux-dev-certs
dotnet linux-dev-certs install
További információkért vagy a problémák jelentéséhez tekintse meg a Linux-dev-certs GitHub-adattárat.
Az Ubuntu megbízik a tanúsítványban a szolgáltatásközi kommunikációhoz
Az alábbi utasítások nem működnek egyes Ubuntu-verziókhoz, például a 20.04-hez. További információ: GitHub-probléma dotnet/AspNetCore.Docs #23686.
Telepítse az OpenSSL 1.1.1h vagy újabb verzióját. Az OpenSSL frissítésére vonatkozó útmutatásért tekintse meg a disztribúciót.
Futtassa az alábbi parancsot:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM sudo update-ca-certificates
Az előző parancsok:
- Győződjön meg arról, hogy az aktuális felhasználó fejlesztői tanúsítványa létrejött.
- Exportálja a mappához
ca-certificatesszükséges emelt szintű engedélyekkel rendelkező tanúsítványt az aktuális felhasználó környezetének használatával. - A
-Ejelző eltávolítása exportálja a fő felhasználói tanúsítványt, és szükség esetén létrehozza. Minden újonnan létrehozott tanúsítvány más ujjlenyomattal rendelkezik. Ha gyökérként fut,sudoés-Enincs rá szükség.
Az előző parancs elérési útja az Ubuntura vonatkozik. Más disztribúciók esetén válassza ki a megfelelő elérési utat, vagy használja a hitelesítésszolgáltatók elérési útját.
HTTPS-tanúsítvány megbízhatósága Linuxon az Edge vagy a Chrome használatával
Linuxon futó chromium böngészők esetén:
Telepítse a
libnss3-tools-t a disztribúciójához.Hozza létre vagy ellenőrizze, hogy a
$HOME/.pki/nssdbmappa létezik-e a gépen.Exportálja a tanúsítványt a következő paranccsal:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEMAz előző parancs elérési útja az Ubuntura vonatkozik. Más disztribúciók esetén válassza ki a megfelelő elérési utat, vagy használja a hitelesítésszolgáltatók elérési útját.
Futtassa az alábbi parancsot:
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n localhost -i /usr/local/share/ca-certificates/aspnet/https.crtLépjen ki, és indítsa újra a böngészőt.
A tanúsítvány megbízhatósága a Linuxon futó Firefoxban
Exportálja a tanúsítványt a következő paranccsal:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEMAz előző parancs elérési útja az Ubuntura vonatkozik. Más disztribúciók esetén válassza ki a megfelelő elérési utat, vagy használja a hitelesítésszolgáltatók elérési útját.
Hozzon létre egy JSON-fájlt
/usr/lib/firefox/distribution/policies.jsona következő paranccsal:
cat <<EOF | sudo tee /usr/lib/firefox/distribution/policies.json
{
"policies": {
"Certificates": {
"Install": [
"/usr/local/share/ca-certificates/aspnet/https.crt"
]
}
}
}
EOF
Megjegyzés: Az Ubuntu 21.10 Firefox snap csomagként érkezik, és a telepítési mappa /snap/firefox/current/usr/lib/firefox.
A szabályzatfájl böngészővel történő konfigurálásának alternatív módjáról ebben a cikkben a HTTPS-tanúsítvány megbízhatóságának konfigurálása a Firefox böngészővel című témakörben olvashat.
A tanúsítvány megbízhatósága a Fedora 34 használatával
See:
- Ez a GitHub-megjegyzés
- Fedora: Megosztott rendszertanúsítványok használata
- .NET-fejlesztési környezet beállítása a Fedorán.
Bízzon a tanúsítványban más disztribúciókkal
Lásd ezt a GitHub-hibajegyet.
HTTPS-tanúsítvány megbízhatósága Linux rendszerhez készült Windows-alrendszerből
Az alábbi utasítások nem működnek egyes Linux-disztribúciók esetében, például az Ubuntu 20.04-ben. További információ: GitHub-probléma dotnet/AspNetCore.Docs #23686.
A Linux windowsos alrendszere (WSL) létrehoz egy HTTPS önaláírt fejlesztési tanúsítványt, amely alapértelmezés szerint nem megbízható a Windowsban. A windowsos WSL-tanúsítvány megbízhatóságának legegyszerűbb módja, ha úgy konfigurálja a WSL-t, hogy ugyanazt a tanúsítványt használja, mint a Windows:
Windows rendszeren exportálja a fejlesztői tanúsítványt egy fájlba:
dotnet dev-certs https -ep https.pfx -p $CREDENTIAL_PLACEHOLDER$ --trustHol
$CREDENTIAL_PLACEHOLDER$található a jelszó?Egy WSL-ablakban importálja az exportált tanúsítványt a WSL-példányon:
dotnet dev-certs https --clean --import <<path-to-pfx>> --password $CREDENTIAL_PLACEHOLDER$
Az előző módszer tanúsítványonként és WSL-eloszlásonként egyszeri művelet. Egyszerűbb, mint a tanúsítvány újra és újra exportálása. Ha windows rendszeren frissíti vagy újragenerálja a tanúsítványt, előfordulhat, hogy újra kell futtatnia az előző parancsokat.
A tanúsítványokkal kapcsolatos problémák, például a nem megbízható tanúsítványok hibaelhárítása
Ez a szakasz segítséget nyújt a ASP.NET Core HTTPS-fejlesztési tanúsítvány telepítésekor és megbízhatóságában, de böngészőbeli figyelmeztetések vannak arról, hogy a tanúsítvány nem megbízható. A ASP.NET Core HTTPS fejlesztési tanúsítványt használja a Kestrelrendszer.
Az IIS Express-tanúsítvány javításához tekintse meg ezt a Stackoverflow-problémát .
Minden platform – a tanúsítvány nem megbízható
Futtassa az alábbi parancsot:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Zárja be a megnyitott böngészőpéldányokat. Nyisson meg egy új böngészőablakot az alkalmazás számára. A tanúsítványmegbízhatóságot a böngészők gyorsítótárazják.
dotnet dev-certs https --clean sikertelen
Az előző parancsok a böngésző megbízhatóságával kapcsolatos legtöbb problémát megoldják. Ha a böngésző továbbra sem bízik a tanúsítványban, kövesse az alábbi platformspecifikus javaslatokat.
Docker – a tanúsítvány nem megbízható
- Törölje a C:\Users{USER}\AppData\Roaming\ASP.NET\Https mappát.
- Tisztítsa meg az oldatot. Törölje a tároló, a és a obj, valamint a mappákat.
- Indítsa újra a fejlesztőeszközt. Például a Visual Studio vagy a Visual Studio Code.
Windows – a tanúsítvány nem megbízható
- Ellenőrizze a tanúsítványtárolóban található tanúsítványokat. Egy
localhosttanúsítványnak kell lennieASP.NET Core HTTPS development certificatebarátságos névvel, mindCurrent User > Personal > CertificatesmindCurrent User > Trusted root certification authorities > Certificatesalatt. - Távolítsa el az összes talált tanúsítványt mind a személyes, mind a megbízható legfelső szintű hitelesítésszolgáltatóktól. Ne távolítsa el az IIS Express localhost tanúsítványt.
- Futtassa az alábbi parancsot:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Zárja be a megnyitott böngészőpéldányokat. Nyisson meg egy új böngészőablakot az alkalmazás számára.
OS X – a tanúsítvány nem megbízható
- Nyissa meg a KeyChain Accesst.
- Válassza ki a rendszerkulcsláncot.
- Ellenőrizze, hogy van-e localhost-tanúsítvány.
- Ellenőrizze, hogy tartalmaz-e szimbólumot
+az ikonon, hogy az az összes felhasználó számára megbízható-e. - Távolítsa el a tanúsítványt a rendszerkulcsláncból.
- Futtassa az alábbi parancsot:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Zárja be a megnyitott böngészőpéldányokat. Nyisson meg egy új böngészőablakot az alkalmazás számára.
A Visual Studióval kapcsolatos tanúsítványproblémák elhárításához lásd: HTTPS-hiba az IIS Express használatával (dotnet/AspNetCore #16892).
A Linux-tanúsítvány nem megbízható
Ellenőrizze, hogy a megbízhatóságra konfigurált tanúsítvány a kiszolgáló által Kestrel használt felhasználói HTTPS fejlesztői tanúsítvány-e.
Ellenőrizze az aktuális felhasználó alapértelmezett HTTPS fejlesztői Kestrel tanúsítványát a következő helyen:
ls -la ~/.dotnet/corefx/cryptography/x509stores/my
A HTTPS fejlesztői Kestrel tanúsítványfájl az SHA1 lenyomatát tartalmazza. A fájl törlésekor a dotnet dev-certs https --clean rendszeren keresztül, szükség esetén, egy másik ujjlenyomattal újragenerálódik.
Ellenőrizze az exportált tanúsítvány ujjlenyomatát az alábbi paranccsal:
openssl x509 -noout -fingerprint -sha1 -inform pem -in /usr/local/share/ca-certificates/aspnet/https.crt
Ha a tanúsítvány nem egyezik, az a következők egyike lehet:
- Egy régi tanúsítvány.
- Exportált egy fejlesztői tanúsítványt a legfelső szintű felhasználó számára. Ebben az esetben exportálja a tanúsítványt.
A legfelső szintű felhasználói tanúsítvány a következő helyen ellenőrizhető:
ls -la /root/.dotnet/corefx/cryptography/x509stores/my
A Visual Studióval használt IIS Express SSL-tanúsítvány
Az IIS Express-tanúsítvánnyal kapcsolatos problémák megoldásához válassza a Visual Studio telepítőjének Javítás elemét. További információkért tekintse meg ezt a GitHub-problémát.
A csoportházirend megakadályozza az önaláírt tanúsítványok megbízhatóságát
Bizonyos esetekben a csoportházirend megakadályozhatja az önaláírt tanúsítványok megbízhatóságát. További információkért tekintse meg ezt a GitHub-problémát.