ASP.NET Core 'de HTTPS 'yi zorla
Gönderen Rick Anderson
Bu belgede nasıl yapılacağı gösterilmektedir:
- Tüm istekler için HTTPS gerektir.
- Tüm HTTP isteklerini HTTPS 'ye yeniden yönlendirin.
Hiçbir API, istemcinin ilk istekte hassas veri göndermesini engelleyebilir.
Uyarı
API projeleri
Hassas bilgileri alan Web API 'Lerinde RequireHttpsAttribute kullanmayın. RequireHttpsAttribute tarayıcıları HTTP 'den HTTPS 'ye yönlendirmek için HTTP durum kodlarını kullanır. API istemcileri HTTP 'den HTTPS 'ye yeniden yönlendirmeyi anlamayabilir veya buna uymayabilir. Bu tür istemciler, HTTP üzerinden bilgi gönderebilir. Web API 'Leri şunlardan biri olmalıdır:
- HTTP üzerinde dinleme yok.
- Durum kodu 400 olan bağlantıyı kapatın (Hatalı Istek) ve isteğe bağlı değildir.
Bir API 'de HTTP yeniden yönlendirmeyi devre dışı bırakmak için, ASPNETCORE_URLS ortam değişkenini ayarlayın veya --urls komut satırı bayrağını kullanın. daha fazla bilgi için bkz ASP.NET Core'da birden çok ortam kullanma . ve bir ASP.NET Core uygulamasının url 'lerini Andrew kilit ile ayarlamak için 5 yol .
HSTS ve API projeleri
Varsayılan API projeleri, genellikle yalnızca bir tarayıcı yönergesi olduğu için HSTS içermez. Telefon veya masaüstü uygulamaları gibi diğer çağıranlar, yönergeye uymayın. Tarayıcılar içinde bile, HTTP üzerinden bir API 'ye yapılan tek bir kimlik doğrulamalı çağrı, güvenli olmayan ağlarda risk içerir. Güvenli yaklaşım, API projelerini yalnızca HTTPS dinlemesi ve HTTPS üzerinden yanıt verecek şekilde yapılandırmaktır.
HTTPS gerektir
üretim ASP.NET Core web uygulamalarının kullanmasını öneririz:
- UseHttpsRedirectionHttp ISTEKLERINI https 'ye yeniden yönlendirmek IÇIN https yeniden yönlendirme ara yazılımı ().
- İstemcilere HTTP katı aktarım güvenliği Protokolü (HSTS) üst bilgileri göndermek için HSTS ara yazılımı (Usehsts).
Not
Ters Proxy yapılandırmasında dağıtılan uygulamalar, proxy 'nin bağlantı güvenliğini (HTTPS) işlemesini sağlar. Ara sunucu HTTPS yeniden yönlendirmeyi de işleiyorsa, HTTPS yeniden yönlendirme ara yazılımı kullanmanız gerekmez. Proxy sunucusu Ayrıca, HSTS üst bilgilerini (örneğin, ııs 10,0 (1709) veya sonraki sürümlerde yerel HSTS desteği) yazmayı de işişişişsa, uygulama Için HSTS ara yazılımı gerekli değildir. Daha fazla bilgi için bkz. Proje oluşturma SıRASıNDA https/HSTS 'nin geri çevirme.
UseHttpsRedirection
Aşağıdaki kod UseHttpsRedirection program. cs dosyasında çağırır:
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();
Vurgulanan önceki kod:
- Varsayılan Httpsredirectionoptions. RedirectStatusCode (Status307TemporaryRedirect) kullanır.
- ,
ASPNETCORE_HTTPS_PORTOrtam değişkeni veya ıveraddressesözelliğitarafından geçersiz kılınmadıkça varsayılan Httpsredirectionoptions. HttpsPort (null) kullanır.
Kalıcı yeniden yönlendirmeler yerine geçici yeniden yönlendirmeler kullanmanızı öneririz. Bağlantıyı önbelleğe alma, geliştirme ortamlarında kararsız davranışa neden olabilir. Uygulama geliştirme dışı bir ortamda olduğunda kalıcı yeniden yönlendirme durum kodu göndermek isterseniz, üretim içindeki kalıcı yeniden yönlendirmeleri yapılandırma bölümüne bakın. İstemcilere yalnızca güvenli kaynak isteği gönderilmesi gerektiğini bildirmek için HSTS kullanılması önerilir (yalnızca üretimde).
Bağlantı noktası yapılandırması
Ara yazılımın güvenli olmayan bir isteği HTTPS 'ye yönlendirmesi için bir bağlantı noktası kullanılabilir olmalıdır. Kullanılabilir bağlantı noktası yoksa:
- HTTPS olarak yeniden yönlendirme gerçekleşmez.
- Ara yazılım "yeniden yönlendirme için HTTPS bağlantı noktası saptanamadı" uyarısını günlüğe kaydeder.
Aşağıdaki yaklaşımlardan herhangi birini kullanarak HTTPS bağlantı noktasını belirtin:
Httpsredirectionoptions. HttpsPortöğesini ayarlayın.
https_portKonak ayarınıayarlayın:Konak yapılandırmasında.
ASPNETCORE_HTTPS_PORTOrtam değişkenini ayarlayarak.' De bir üst düzey giriş ekleyerek appsettings.json :
{ "https_port": 443, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
ASPNETCORE_URLS ortam değişkeninikullanarak güvenli düzene sahip bir bağlantı noktası belirtin. Ortam değişkeni sunucusunu yapılandırır. Ara yazılım, üzerinden HTTPS bağlantı noktasını dolaylı olarak bulur IServerAddressesFeature . Bu yaklaşım, ters proxy dağıtımlarında çalışmaz.
ASP.NET Core web şablonları, hem hem de IIS Express için Properties/launchsettings. json içinde bir HTTPS URL 'si ayarlar Kestrel . launchsettings. JSON yalnızca yerel makinede kullanılır.
KestrelSunucu veya HTTP.sys sunucusunun herkese açık bir uç DAĞıTıMı için https URL uç noktası yapılandırın. Uygulama tarafından yalnızca BIR HTTPS bağlantı noktası kullanılır. Ara yazılım, ile bağlantı noktasını bulur IServerAddressesFeature .
Not
Bir uygulama ters proxy yapılandırmasında çalıştırıldığında, IServerAddressesFeature kullanılabilir değildir. Bu bölümde açıklanan diğer yaklaşımlardan birini kullanarak bağlantı noktasını ayarlayın.
Edge dağıtımları
KestrelYa da HTTP.sys , herkese açık bir uç sunucu olarak kullanıldığında Kestrel veya HTTP.sys her ikisini de dinlemek üzere yapılandırılması gerekir:
- İstemcinin yeniden yönlendirildiği güvenli bağlantı noktası (genellikle üretim ortamında 443 ve geliştirme sırasında 5001).
- Güvenli olmayan bağlantı noktası (genellikle üretim ortamında 80 ve geliştirme sırasında 5000).
Güvenli olmayan bir istek alabilmesi ve istemciyi güvenli bağlantı noktasına yeniden yönlendirebilmesi için güvensiz bağlantı noktasına istemci tarafından erişilebilir olması gerekir.
Daha fazla bilgi için bkz. Kestrel Endpoint Configuration veya ASP.NET Core Web sunucusu uygulamasını HTTP.sys .
Dağıtım senaryoları
İstemci ve sunucu arasındaki herhangi bir güvenlik duvarının trafik için iletişim bağlantı noktaları açık olması gerekir.
İstekler ters bir ara sunucu yapılandırmasında iletilirse, HTTPS yeniden yönlendirme ara yazılımı çağrılmadan önce Iletilen üstbilgiler ara yazılımını kullanın. İletilen üstbilgiler ara yazılımı, Request.Scheme üst bilgisini kullanarak öğesini güncelleştirir X-Forwarded-Proto . Ara yazılım, yeniden yönlendirme URI 'Leri ve diğer güvenlik ilkelerinin doğru çalışmasına izin verir. Iletilen üstbilgiler ara yazılımı kullanılmazsa, arka uç uygulaması doğru düzeni alamayabilir ve yeniden yönlendirme döngüsünde sona ermeyebilir. Yaygın bir son kullanıcı hata iletisi, çok fazla yeniden yönlendirme meydana geldi.
Azure App Service dağıtım sırasında, öğreticideki yönergeleri izleyin: mevcut bir özel SSL sertifikasını Azure 'A bağlama Web Apps.
Seçenekler
Aşağıdaki vurgulanan kod, ara yazılım seçeneklerini yapılandırmak için Addhttpsredirection öğesini çağırır:
using System.Net;
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 = (int)HttpStatusCode.TemporaryRedirect;
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ğırma AddHttpsRedirection yalnızca veya değerlerini değiştirmek için gereklidir HttpsPort RedirectStatusCode .
Vurgulanan önceki kod:
- Httpsredirectionoptions. RedirectStatusCode Status307TemporaryRedirect değerini, varsayılan değer olan olarak ayarlar. Atamaları için sınıfının alanlarını kullanın StatusCodes
RedirectStatusCode. - HTTPS bağlantı noktasını 5001 olarak ayarlar.
Üretimde kalıcı yeniden yönlendirmeleri yapılandırma
Ara yazılım varsayılan olarak tüm yeniden yönlendirmelere bir Status307TemporaryRedirect gönderir. Uygulama geliştirme dışı bir ortamda olduğunda kalıcı yeniden yönlendirme durum kodu göndermek isterseniz, geliştirme dışı bir ortam için bir koşullu denetim içindeki ara yazılım seçenekleri yapılandırmasını sarın.
Program. cs' de Hizmetleri yapılandırırken:
using System.Net;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
if (builder.Environment.IsDevelopment())
{
builder.Services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = (int)HttpStatusCode.PermanentRedirect;
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 yeniden yönlendirme ara yazılımı alternatif yaklaşımı
HTTPS yeniden yönlendirme ara yazılımı () kullanmanın bir alternatifi UseHttpsRedirection , URL yeniden yazma ara yazılımı ( AddRedirectToHttps ) kullanmaktır. AddRedirectToHttps , yeniden yönlendirme yürütüldüğünde durum kodunu ve bağlantı noktasını da ayarlayabilir. Daha fazla bilgi için bkz. URL yeniden yazma ara yazılımı.
Ek yeniden yönlendirme kuralları gereksinimi olmadan HTTPS 'ye yönlendirilirken, bu konuda açıklanan HTTPS yeniden yönlendirme ara yazılımı () kullanmanızı öneririz UseHttpsRedirection .
HTTP katı aktarım güvenliği Protokolü (HSTS)
Her OWASPiçin, http katı aktarım güvenliği (HSTS) , yanıt üst bilgisi kullanılarak bir Web uygulaması tarafından belirtilen bir katılım güvenlik geliştirmedir. HSTS 'yi destekleyen bir tarayıcı bu üstbilgiyi alırsa:
- Tarayıcı, HTTP üzerinden iletişimin gönderilmesini önleyen etki alanı için yapılandırmayı depolar. Tarayıcı, HTTPS üzerinden tüm iletişimi zorlar.
- Tarayıcı, kullanıcının güvenilmeyen veya geçersiz sertifikalar kullanmasını engeller. Tarayıcı, kullanıcının bu sertifikaya geçici olarak güvenmesine izin veren istemleri devre dışı bırakır.
HSTS istemci tarafından zorlandığından bazı sınırlamalar vardır:
- İstemcinin HSTS'yi desteklemesi gerekir.
- HSTS, HSTS ilkesi kurmak için en az bir başarılı HTTPS isteği gerektirir.
- Uygulamanın her HTTP isteğini denetlemesi ve HTTP isteğini yeniden yönlendirmesi veya reddetmesi gerekir.
ASP.NET Core yöntemiyle HSTS'yi UseHsts uygulayan bir yöntemdir. Aşağıdaki kod, UseHsts uygulama geliştirme modunda değilse şunları çağırabilir:
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 geliştirme aşamasında önerilmez çünkü HSTS ayarları tarayıcılar tarafından yüksek oranda önbelleğe alınabilir. Varsayılan olarak, UseHsts yerel geri döngü adresini dışlar.
HTTPS'yi ilk kez uygulayan üretim ortamları için yöntemlerden birini kullanarak ilk HstsOptions.MaxAge değerini küçük bir TimeSpan değere ayarlayın. HTTPS altyapısını HTTP'ye geri döndürmenize gerek olması durumunda saat değerini tek bir günden fazla olacak şekilde ayarlayın. HTTPS yapılandırmasının sürdürülebilirliği konusunda emin olduktan sonra HSTS değerini artırabilirsiniz; yaygın olarak kullanılan bir max-age değer bir yıldır.
Aşağıdaki vurgulanmış kod:
using System.Net;
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 = (int)HttpStatusCode.TemporaryRedirect;
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();
- Üst bilginin preload parametresini
Strict-Transport-Securityayarlar. Preload, RFC HSTSbelirtimlerinin bir parçası değildir, ancak yeni yüklemede HSTS sitelerini önceden yüklemek için web tarayıcıları tarafından desteklenir. Daha fazla bilgi için bkz. https://hstspreload.org/. - Konak alt etki alanlara HSTS ilkesi uygulanan includeSubDomain'ietkinleştirir.
- Üst bilginin
max-ageparametresini açıkçaStrict-Transport-Security60 gün olarak ayarlar. Ayarlanmazsa varsayılan olarak 30 gün kullanılır. Daha fazla bilgi için max-age yönergesine bakın. - Dışlanan
example.comkonak listesine ekler.
UseHsts aşağıdaki geri döngü konaklarını dışlar:
localhost: IPv4 geri döngü adresi.127.0.0.1: IPv4 geri döngü adresi.[::1]: IPv6 geri döngü adresi.
Proje oluşturma sırasında HTTPS/HSTS'yi geri almayı geri bırakma
Bağlantı güvenliğinin ağın genel uçta işlene bazı arka uç hizmet senaryolarında, her düğümde bağlantı güvenliğinin yapılandırılması gerekmez. Visual Studio veya dotnet new komutundan oluşturulan web uygulamaları HTTPS yeniden yönlendirmesini ve HSTS'yi etkinleştirir. Bu senaryoları gerektirmeyen dağıtımlar için, uygulama şablondan oluşturulduğunda HTTPS/HSTS'yi geridebilirsiniz.
HTTPS/HSTS'yi geri almak için:
HTTPS için yapılandır onay kutusunun işaretini kaldırın.

Windows macOS ASP.NET Core HTTPS geliştirme sertifikasına güvenin
Firefox tarayıcısı için sonraki bölüme bakın.
Bu .NET Core SDK HTTPS geliştirme sertifikası içerir. Sertifika, ilk çalıştırma deneyiminin bir parçası olarak yüklenir. Örneğin, dotnet --info aşağıdaki çıkışın bir varyasyonu üretir:
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.
Yükleme .NET Core SDK, ASP.NET Core HTTPS geliştirme sertifikasını yerel kullanıcı sertifika deposuna yükler. Sertifika yüklenmiş ancak güvenilir değildir. Sertifikaya güvenmek için dotnet aracını çalıştırmak üzere tek adımlı adımı dev-certs gerçekleştirin:
dotnet dev-certs https --trust
Aşağıdaki komut araçta yardım dev-certs sağlar:
dotnet dev-certs https --help
Uyarı
Kapsayıcı görüntüsü veya sanal makine gibi yeniden dağıtacak bir ortamda geliştirme sertifikası oluşturma. Bunu yapmak, gizliliğin bozulmalarına ve ayrıcalık yükseltmelerine neden olabilir. Bunu önlemeye yardımcı olmak için . NET CLI'sini ilk kez çağırmadan DOTNET_GENERATE_ASPNET_CERTIFICATE false önce ortam değişkenlerini olarak ayarlayın. Bu, CLI'nın ilk çalıştırma ASP.NET Core geliştirme sertifikasının otomatik olarak neslini atlar.
Bu hatayı önlemek için Firefox ile HTTPS sertifikasına SEC_ERROR_INADEQUATE_KEY_USAGE güvenin
Firefox tarayıcısı kendi sertifika depolarını kullanır ve bu nedenle sertifikalara veya IIS Express Kestrel güvenmiyor.
Firefox ile HTTPS sertifikasına güvenme, ilke dosyası oluşturma veya FireFox tarayıcısıyla yapılandırma gibi iki yaklaşım vardır. Tarayıcı ile yapılandırma ilke dosyasını oluşturur, bu nedenle iki yaklaşım eşdeğerdir.
Firefox ile HTTPS sertifikasına güvenen bir ilke dosyası oluşturma
İlke dosyası oluşturma:
- Windows:
%PROGRAMFILES%\Mozilla Firefox\distribution\policies.json - Macos:
Firefox.app/Contents/Resources/distribution - Linux: Bu belgede Linux üzerinde Firefox ile sertifikaya güvenin.
Firefox ilke dosyasına aşağıdaki JSON'u ekleyin:
{
"policies": {
"Certificates": {
"ImportEnterpriseRoots": true
}
}
}
Yukarıdaki ilke dosyası, firefox güven sertifikalarını sertifika depolama alanı içinde bulunan güvenilir sertifikalardan Windows yapar. Sonraki bölüm, Firefox tarayıcısını kullanarak önceki ilke dosyasını oluşturmak için alternatif bir yaklaşım sağlar.
Firefox tarayıcısını kullanarak HTTPS sertifikası güvenini yapılandırma
Aşağıdaki security.enterprise_roots.enabled = true yönergeleri kullanarak ayarlayın:
about:configFireFox tarayıcısına girin.- Riski Kabul Et'i ve riski kabul ediyorsanız Devam'ı seçin.
- Hepsini Göster'i seçin
- Ayarla
security.enterprise_roots.enabled=true - Firefox'ta çıkış ve yeniden başlatma
Daha fazla bilgi için bkz. Firefox'ta Sertifika Yetkililerini (CA) Ayarlama ve mozilla/policy-templates/README dosyası.
Docker için geliştirici sertifikası ayarlama
Linux'ta HTTPS sertifikasına güven
Güveni kurmak dağıtıma ve tarayıcıya özgü bir görevdir. Aşağıdaki bölümlerde bazı popüler dağıtımlar ve diğer tarayıcılar (Edge Chromium Chrome) ve Firefox için yönergeler sağlanmıştır.
Ubuntu hizmet-hizmet iletişimi için sertifikaya güven
OpenSSL 1.1.1h veya sonraki bir sürümü yükleyin. OpenSSL'i güncelleştirme yönergeleri için dağıtımınıza bakın.
Aşağıdaki komutları çalıştırın:
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
Yukarıdaki komutlar:
- Geçerli kullanıcının geliştirici sertifikasının oluşturulduktan sonra emin olur.
- Geçerli kullanıcının ortamını kullanarak, klasör için gereken
ca-certificatesyükseltilmiş izinlere sahip sertifikayı dışarı aktarın. - Bayrağın
-Ekaldırılması, kök kullanıcı sertifikasını dışarı aktararak gerekirse sertifikayı oluşturmasını sağlar. Yeni oluşturulan her sertifikanın parmak izi farklıdır. Kök olaraksudoçalıştırlırken-Eve gerekli değildir.
Yukarıdaki komutta yer alan yol Ubuntu'ya özeldir. Diğer dağıtımlar için uygun bir yol seçin veya Sertifika Yetkilileri (CA) yolunu kullanın.
Edge veya Chrome kullanarak Linux'ta HTTPS sertifikasına güvenme
Linux'ta chromium tarayıcıları için:
Dağıtımınız
libnss3-toolsiçin yükleyin.Klasörde makinede
$HOME/.pki/nssdbvar olduğunu oluşturun veya doğrulayın.Sertifikayı aşağıdaki komutla dışarı aktarın:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEMYukarıdaki komutta yer alan yol Ubuntu'ya özeldir. Diğer dağıtımlar için uygun bir yol seçin veya Sertifika Yetkilileri (CA) yolunu kullanın.
Aşağıdaki komutları çalıştırın:
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n localhost -i /usr/local/share/ca-certificates/aspnet/https.crt certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n localhost -i /usr/local/share/ca-certificates/aspnet/https.crtTarayıcıdan çıkın ve tarayıcıyı yeniden başlatın.
Linux üzerinde Firefox ile sertifikaya güvenin
Sertifikayı aşağıdaki komutla dışarı aktarın:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEMYukarıdaki komutta yer alan yol Ubuntu'ya özeldir. Diğer dağıtımlar için uygun bir yol seçin veya Sertifika Yetkilileri (CA) yolunu kullanın.
aşağıdaki içeriklerle bir JSON
/usr/lib/firefox/distribution/policies.jsondosyası oluşturun:
cat <<EOF | sudo tee /usr/lib/firefox/distribution/policies.json
{
"policies": {
"Certificates": {
"Install": [
"/usr/local/share/ca-certificates/aspnet/https.crt"
]
}
}
}
EOF
İlke dosyasını tarayıcı kullanarak yapılandırmanın alternatif bir yolu için bu belgede Firefox tarayıcısını kullanarak HTTPS sertifikasının güvenini yapılandırma'ya bakın.
Fedora 34 ile sertifikaya güvenin
Sertifikaya diğer dağıtımlarla güvenin
Linux için Windows Alt Sistemi'den HTTPS sertifikasına güven
Uygulama Linux için Windows Alt Sistemi (WSL), otomatik olarak imzalanan bir HTTPS geliştirme sertifikası üretir. Sertifika depo Windows WSL sertifikasına güven olacak şekilde yapılandırmak için:
Geliştirici sertifikasını dosya üzerinde bir dosyaya Windows:
dotnet dev-certs https -ep C:\<<path-to-folder>>\aspnetcore.pfx -p $CREDENTIAL_PLACEHOLDER$Burada
$CREDENTIAL_PLACEHOLDER$bir paroladır.WSL penceresinde, wsl örneğinde dışarı aktaran sertifikayı içeri aktarın:
dotnet dev-certs https --clean --import /mnt/c/<<path-to-folder>>/aspnetcore.pfx -p $CREDENTIAL_PLACEHOLDER$
Yukarıdaki yaklaşım, sertifika başına ve WSL dağıtımı başına bir kez yapılan bir işlemdir. Sertifikayı tekrar tekrar dışarı aktarmadan daha kolaydır. Windows'da sertifikayı güncelleştiriyor veya yeniden üretiyorsanız, önceki komutları yeniden çalıştırmanız gerekir.
Sertifikaya güvenilmiyor gibi sertifika sorunlarını giderme
Bu bölümde, ASP.NET Core HTTPS geliştirme sertifikası yüklü ve güvenilir olduğunda, ancak sertifikaya güvenilmiyorsa yine de tarayıcı uyarılarına sahip olursanız yardım sağlanır. Aşağıdaki ASP.NET Core HTTPS geliştirme sertifikası tarafından Kestrel kullanılır.
Sertifikayı IIS Express için bu Stackoverflow sorununa bakın.
Tüm platformlar - sertifikaya güvenilmiyor
Aşağıdaki komutları çalıştırın:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Açık tüm tarayıcı örneklerini kapatın. Uygulamaya yeni bir tarayıcı penceresi açın. Sertifika güveni tarayıcılar tarafından önbelleğe alınmış.
dotnet dev-certs https --clean Başarısız Oluyor
Yukarıdaki komutlar çoğu tarayıcı güven sorununu çözer. Tarayıcı sertifikaya hala güvenmiyorsa, aşağıdaki platforma özgü önerileri izleyin.
Docker - sertifikaya güvenilmiyor
- C:\Users { USER}\AppData\Roaming\ASP.NET\Https klasörünü silin.
- Çözümü temizleyin. Bin ve obj klasörlerini silin.
- Geliştirme aracını yeniden başlatın. Örneğin, Visual Studio, Visual Studio Code veya Mac için Visual Studio.
Windows - sertifikaya güvenilmiyor
- Sertifika depolamada sertifikaları kontrol edin. Hem hem de
localhostaltında kolayASP.NET Core HTTPS development certificateadla bir sertifika olmasıCurrent User > Personal > CertificatesgerekirCurrent User > Trusted root certification authorities > Certificates - Bulunan tüm sertifikaları hem Kişisel hem de Güvenilen kök sertifika yetkililerinden kaldırın. localhost sertifikasını IIS Express kaldır.
- Aşağıdaki komutları çalıştırın:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Açık tüm tarayıcı örneklerini kapatın. Uygulamaya yeni bir tarayıcı penceresi açın.
OS X - sertifikaya güvenilmiyor
- AnahtarLık Erişimi'ne açın.
- Sistem anahtarlık'ı seçin.
- Localhost sertifikasının olup olamay olduğunu kontrol edin.
- Tüm kullanıcılar için
+güvenilir olduğunu belirtmek için simgede bir simge olup o simgeyi içerdiğini kontrol edin. - Sertifikayı sistem anahtarlıktan kaldırın.
- Aşağıdaki komutları çalıştırın:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Açık tüm tarayıcı örneklerini kapatın. Uygulamaya yeni bir tarayıcı penceresi açın.
Sertifika sorunlarını gidermek için IIS Express sorunlarını gidermek için bkz. IIS Express (dotnet/AspNetCore #16892) Visual Studio.
Linux sertifikasına güvenilmiyor
Güven için yapılandırılan sertifikanın, sunucu tarafından kullanılacak kullanıcı HTTPS geliştirici sertifikası olduğunu Kestrel kontrol edin.
Geçerli kullanıcı varsayılan HTTPS geliştirici Kestrel sertifikasını aşağıdaki konumdan kontrol edin:
ls -la ~/.dotnet/corefx/cryptography/x509stores/my
HTTPS geliştirici Kestrel sertifikası dosyası SHA1 parmak izidir. aracılığıyla dosya dotnet dev-certs https --clean silindiğinde, gerektiğinde farklı bir parmak iziyle yeniden oluşturulur.
Dışarı aktarılmış sertifikanın parmak izinin aşağıdaki komutla eş olup olağını kontrol edin:
openssl x509 -noout -fingerprint -sha1 -inform pem -in /usr/local/share/ca-certificates/aspnet/https.crt
Sertifika eşleşmezse, aşağıdakilerden biri olabilir:
- Eski bir sertifika.
- Kök kullanıcı için dışarı aktarmış bir geliştirici sertifikası. Bu durumda sertifikayı dışarı aktarın.
Kök kullanıcı sertifikası şu şekilde denetlenir:
ls -la /root/.dotnet/corefx/cryptography/x509stores/my
IIS Express Visual Studio ile kullanılan SSL sertifikası
IIS Express sertifikayla ilgili sorunları düzeltmek için, Visual Studio yükleyiciden Onar'ı seçin. Daha fazla bilgi için bu soruna GitHub bakın.
Ek bilgiler
Uyarı
API projeleri
Hassas bilgiler alan Web API'leri üzerinde RequireHttpsAttribute kullanmayın. RequireHttpsAttribute tarayıcıları HTTP'den HTTPS'ye yönlendirmek için HTTP durum kodlarını kullanır. API istemcileri HTTP'den HTTPS'ye yeniden yönlendirmeleri an veya yönlendiremeyebilirsiniz. Bu tür istemciler HTTP üzerinden bilgi gönderebilir. Web API'leri şu ikiden biri gerekir:
- HTTP'de dinleme.
- 400 (Hatalı İstek) durum koduyla bağlantıyı kapatın ve isteği karşılanmaz.
BIR API'de HTTP yeniden yönlendirmesini devre dışı bırakmak için ASPNETCORE_URLS ortam değişkenlerini ayarlayın veya komut --urls satırı bayrağını kullanın. Daha fazla bilgi için bkz. Andrew Lock tarafından bir uygulamanın ASP.NET Core'da birden çok ortam kullanma URL'ASP.NET Core ayarlamanın 5 yolu.
HSTS ve API projeleri
HSTS genellikle yalnızca tarayıcı yönergesi olduğundan varsayılan API projeleri HSTS'yi içermez. Telefon veya masaüstü uygulamaları gibi diğer çağrı yapanlar yönergeye uymaz. Tarayıcılarda bile, HTTP üzerinden API'ye yapılan tek bir kimliği doğrulanmış çağrının güvenli olmayan ağlarda riskleri vardır. Güvenli yaklaşım, API projelerini yalnızca HTTPS üzerinden dinlemek ve yanıtlamak üzere yapılandırmaktır.
HTTPS gerektir
Üretim ve web ASP.NET Core şunların kullanımını öneririz:
- HTTP isteklerini HTTPS'ye yönlendirmek için HTTPS Yeniden Yönlendirme Ara Yazılımı ( UseHttpsRedirection ).
- İstemcilere HTTP Katı Aktarım Güvenliği Protokolü (HSTS) üst bilgileri göndermek için HSTS Ara Yazılımı(UseHsts).
Not
Ters ara sunucu yapılandırmasında dağıtılan uygulamalar, ara sunucusunun bağlantı güvenliğini (HTTPS) işlemesine olanak sağlar. Ara sunucu HTTPS yeniden yönlendirmesini de ele alıyorsa, HTTPS Yeniden Yönlendirme Ara Yazılımı'nın kullanımına gerek yoktur. Ara sunucu aynı zamanda HSTS üst bilgileri yazmayı da (örneğin, IIS 10.0 (1709)veya sonraki bir sonraki bir yıl içinde yerel HSTS desteği) ele alıyorsa, uygulama için HSTS Ara Yazılımı gerekli değildir. Daha fazla bilgi için bkz. Proje oluşturma sırasında HTTPS/HSTS'yi geri almayı geri kabul edin.
UseHttpsRedirection
Aşağıdaki kod sınıfında UseHttpsRedirection Startup çağrısında dır:
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();
});
}
Yukarıdaki vurgulanan kod:
- Varsayılan HttpsRedirectionOptions.RedirectStatusCode (Status307TemporaryRedirect ) kullanır.
- Ortam değişkeni veya IServerAddressesFeature tarafından geçersiz kılınmadıkça varsayılan HttpsRedirectionOptions.HttpsPort (null)
ASPNETCORE_HTTPS_PORTkullanır.
Kalıcı yeniden yönlendirmeler yerine geçici yeniden yönlendirmeler kullanılması önerilir. Bağlantı önbelleğe alma, geliştirme ortamlarında kararsız davranışlara neden olabilir. Uygulama Geliştirme dışı bir ortamdayken kalıcı bir yeniden yönlendirme durum kodu göndermeyi tercih ederseniz Üretimde kalıcı yeniden yönlendirmeleri yapılandırma bölümüne bakın. HSTS kullanarak istemcilere uygulamaya yalnızca güvenli kaynak isteklerinin (yalnızca üretimde) gönderileceklerini sinyal göndermenizi öneririz.
Bağlantı noktası yapılandırması
Güvenli olmayan bir isteği HTTPS'ye yeniden yönlendirmek için ara yazılım için bir bağlantı noktası kullanılabilir olması gerekir. Bağlantı noktası yoksa:
- HTTPS'ye yeniden yönlendirme oluşmaz.
- Ara yazılım "Yeniden yönlendirme için https bağlantı noktası belirlenemedi" uyarılarını günlüğe kaydeder.
Aşağıdaki yaklaşımlardan birini kullanarak HTTPS bağlantı noktasını belirtin:
Konak
https_portayarını ayarlayın:Konak yapılandırmasında.
Ortam
ASPNETCORE_HTTPS_PORTdeğişkenlerini ayarerek.içinde bir üst düzey giriş appsettings.json ekleyerek:
{ "https_port": 443, "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*" }
ortam değişkenlerini kullanarak güvenli şemaya sahip bir ASPNETCORE_URLS gösterir. Ortam değişkeni, sunucuyu yapılandırıyor. Ara yazılım aracılığıyla DOLAYLı olarak HTTPS bağlantı noktasını IServerAddressesFeature keşfeder. Bu yaklaşım, ters ara sunucu dağıtımlarında çalışmıyor.
Geliştirme aşamasında launchsettings.json içinde bir HTTPS URL'si ayarlayın. Https'yi IIS Express etkinleştirin.
Sunucu veya sunucu sunucusu için genel uç uç dağıtımı için bir HTTPS URL Kestrel HTTP.sys yapılandırma. Uygulama tarafından yalnızca bir HTTPS bağlantı noktası kullanılır. Ara yazılım aracılığıyla bağlantı noktasını IServerAddressesFeature keşfeder.
Not
Bir uygulama ters ara sunucu yapılandırmasında çalıştır IServerAddressesFeature olduğunda kullanılamaz. Bu bölümde açıklanan diğer yaklaşımlardan birini kullanarak bağlantı noktasını ayarlayın.
Uç dağıtımları
Genel HTTP.sys uç sunucu olarak ne zaman veya HTTP.sys her ikisini de dinleyecek Kestrel Kestrel şekilde yapılandırılması gerekir:
- İstemcinin yeniden yönlendirilmesine neden olan güvenli bağlantı noktası (genellikle üretimde 443 ve geliştirmede 5001).
- Güvenli olmayan bağlantı noktası (genellikle üretimde 80 ve geliştirmede 5000).
Güvenli olmayan bağlantı noktasına, uygulamanın güvenli olmayan bir istek göndererek istemciyi güvenli bağlantı noktasına yeniden yönlendirilmesi için istemci tarafından erişilebilir olması gerekir.
Daha fazla bilgi için bkz. Kestrel uç nokta yapılandırması veya ASP.NET Core Web sunucusu uygulamasını HTTP.sys .
Dağıtım senaryoları
İstemci ve sunucu arasındaki tüm güvenlik duvarlarının da trafik için açık iletişim bağlantı noktaları olması gerekir.
İstekler ters ara sunucu yapılandırmasında iletildi ise HTTPS Yeniden Yönlendirme Ara Yazılımı'nın çağrılmadan önce Iletilen Üst Bilgiler Ara Yazılımı'dır. Iletili Üst Bilgiler Ara Yazılımı, üst bilgi Request.Scheme kullanarak 'ı X-Forwarded-Proto 2. Ara yazılım yeniden yönlendirme URL'lerini ve diğer güvenlik ilkelerinin düzgün çalışmasına izin sağlar. Iletili Üst Bilgiler Ara Yazılımı kullanılmazsa, arka uç uygulaması doğru düzeni almayabilir ve bir yeniden yönlendirme döngüsüne yol açabilir. Yaygın bir son kullanıcı hata iletisi, çok fazla yeniden yönlendirmenin meydana geldiğidir.
Azure App Service dağıtımı Azure App Service Öğretici:Mevcut bir özel SSL sertifikasını Azure Web Apps.
Seçenekler
Aşağıdaki vurgulanmış kod, ara yazılım seçeneklerini yapılandırmak için AddHttpsRedirection'ı çağırıyor:
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ğrısı AddHttpsRedirection yalnızca veya değerlerini değiştirmek için HttpsPort RedirectStatusCode gereklidir.
Yukarıdaki vurgulanmış kod:
- Varsayılan değer olan HttpsRedirectionOptions.RedirectStatusCode Status307TemporaryRedirect değerini olarak ayarlar. sınıfını atamaları StatusCodes için sınıfının alanlarını
RedirectStatusCodekullanın. - HTTPS bağlantı noktasını 5001 olarak ayarlar.
Üretimde kalıcı yeniden yönlendirmeleri yapılandırma
Ara yazılım varsayılan olarak tüm yeniden yönlendirmelerle status307TemporaryRedirect gönderir. Uygulama Geliştirme dışı bir ortamdayken kalıcı bir yeniden yönlendirme durum kodu göndermeyi tercih ederseniz, Geliştirme dışı bir ortam için koşullu bir denetimde ara yazılım seçenekleri yapılandırmasını sarman.
Startup.cs'de hizmetleri yapılandırıyorken:
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 Yeniden Yönlendirme Ara Yazılımı alternatif yaklaşımı
HTTPS Yeniden Yönlendirme Ara Yazılımı ( ) kullanmanın UseHttpsRedirection alternatifi, URL Yeniden Yazma Ara Yazılımı ( ) AddRedirectToHttps kullanmaktır. AddRedirectToHttps , yeniden yönlendirme yürütülürken durum kodunu ve bağlantı noktasını da ayarlamayı da sağlar. Daha fazla bilgi için bkz. URL Yeniden Yazma Ara Yazılımı.
Ek yeniden yönlendirme kurallarına gerek kalmadan HTTPS'ye yeniden yönlendirmede, bu konuda açıklanan HTTPS Yeniden Yönlendirme Ara Yazılımı 'nın ( UseHttpsRedirection ) kullanılması önerilir.
HTTP Katı Aktarım Güvenlik Protokolü (HSTS)
OWASPbaşına HTTP Katı Aktarım Güvenliği (HSTS), yanıt üst bilgisi kullanarak bir web uygulaması tarafından belirtilen bir kabul güvenlik geliştirmesidir. HSTS'yi destekleyen bir tarayıcı şu üst bilgileri aldığında:
- Tarayıcı, HTTP üzerinden herhangi bir iletişim gönderilmesini engelleyen etki alanı yapılandırmasını depolar. Tarayıcı, HTTPS üzerinden tüm iletişimi güçler.
- Tarayıcı, kullanıcının güvenilmeyen veya geçersiz sertifikalar kullanmasını önler. Tarayıcı, bir kullanıcının böyle bir sertifikaya geçici olarak güvenmesine izin verecek istemleri devre dışı bırakıyor.
HSTS istemci tarafından zorunlu olduğundan bazı sınırlamaları vardır:
- İstemcinin HSTS'yi desteklemesi gerekir.
- HSTS, HSTS ilkesi kurmak için en az bir başarılı HTTPS isteği gerektirir.
- Uygulamanın her HTTP isteğini denetlemesi ve HTTP isteğini yeniden yönlendirmesi veya reddetmesi gerekir.
ASP.NET Core yöntemiyle HSTS'yi UseHsts uygulayan bir yöntemdir. Aşağıdaki kod, UseHsts uygulama geliştirme modunda değilse şunları çağırabilir:
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 geliştirme aşamasında önerilmez çünkü HSTS ayarları tarayıcılar tarafından yüksek oranda önbelleğe alınabilir. Varsayılan olarak, UseHsts yerel geri döngü adresini dışlar.
HTTPS'yi ilk kez uygulayan üretim ortamları için yöntemlerden birini kullanarak ilk HstsOptions.MaxAge değerini küçük bir TimeSpan değere ayarlayın. HTTPS altyapısını HTTP'ye geri döndürmenize gerek olması durumunda saat değerini tek bir günden fazla olacak şekilde ayarlayın. HTTPS yapılandırmasının sürdürülebilirliği konusunda emin olduktan sonra HSTS değerini artırabilirsiniz; yaygın olarak kullanılan bir max-age değer bir yıldır.
Aşağıdaki kod:
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;
});
}
- Üst bilginin preload parametresini
Strict-Transport-Securityayarlar. Preload, RFC HSTSbelirtimlerinin bir parçası değildir, ancak yeni yüklemede HSTS sitelerini önceden yüklemek için web tarayıcıları tarafından desteklenir. Daha fazla bilgi için bkz. https://hstspreload.org/. - Konak alt etki alanlara HSTS ilkesi uygulanan includeSubDomain'ietkinleştirir.
- Üst bilginin
max-ageparametresini açıkçaStrict-Transport-Security60 gün olarak ayarlar. Ayarlanmazsa, varsayılan olarak 30 gün olur. Daha fazla bilgi için max-age yönergesine bakın. - Dışlanan
example.comkonak listesine ekler.
UseHsts aşağıdaki geri döngü konaklarını dışlar:
localhost: IPv4 geri döngü adresi.127.0.0.1: IPv4 geri döngü adresi.[::1]: IPv6 geri döngü adresi.
Proje oluşturma sırasında HTTPS/HSTS'yi geri almayı geri bırakma
Bağlantı güvenliğinin ağın genel uçta işlene bazı arka uç hizmet senaryolarında, her düğümde bağlantı güvenliğinin yapılandırılması gerekmez. Visual Studio veya dotnet new komutundan oluşturulan web uygulamaları HTTPS yeniden yönlendirmesini ve HSTS'yi etkinleştirir. Bu senaryoları gerektirmeyen dağıtımlar için, uygulama şablondan oluşturulduğunda HTTPS/HSTS'yi geridebilirsiniz.
HTTPS/HSTS'yi geri almak için:
HTTPS için yapılandır onay kutusunun işaretini kaldırın.

Windows macOS ASP.NET Core HTTPS geliştirme sertifikasına güvenin
Firefox tarayıcısı için sonraki bölüme bakın.
Bu .NET Core SDK HTTPS geliştirme sertifikası içerir. Sertifika, ilk çalıştırma deneyiminin bir parçası olarak yüklenir. Örneğin, dotnet --info aşağıdaki çıkışın bir varyasyonu üretir:
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.
Yükleme .NET Core SDK, ASP.NET Core HTTPS geliştirme sertifikasını yerel kullanıcı sertifika deposuna yükler. Sertifika yüklenmiştir ancak güvenilir değildir. Sertifikaya güvenmek için dotnet aracını çalıştırmak üzere tek adımlı adımı dev-certs gerçekleştirin:
dotnet dev-certs https --trust
Aşağıdaki komut araçta yardım dev-certs sağlar:
dotnet dev-certs https --help
Uyarı
Kapsayıcı görüntüsü veya sanal makine gibi yeniden dağıtacak bir ortamda geliştirme sertifikası oluşturma. Bunu yapmak, gizliliğin bozulmalarına ve ayrıcalık yükseltmelerine neden olabilir. Bunu önlemeye yardımcı olmak için . NET CLI'sini ilk kez çağırmadan DOTNET_GENERATE_ASPNET_CERTIFICATE false önce ortam değişkenlerini olarak ayarlayın. Bu, CLI'nın ilk çalıştırma ASP.NET Core geliştirme sertifikasının otomatik olarak neslini atlar.
Bu hatayı önlemek için Firefox ile HTTPS sertifikasına SEC_ERROR_INADEQUATE_KEY_USAGE güvenin
Firefox tarayıcısı kendi sertifika depolarını kullanır ve bu nedenle sertifikalara veya IIS Express Kestrel güvenmiyor.
Firefox ile HTTPS sertifikasına güvenme, ilke dosyası oluşturma veya FireFox tarayıcısıyla yapılandırma gibi iki yaklaşım vardır. Tarayıcı ile yapılandırma ilke dosyasını oluşturur, bu nedenle iki yaklaşım eşdeğerdir.
Firefox ile HTTPS sertifikasına güvenen bir ilke dosyası oluşturma
İlke dosyası oluşturma:
- Windows:
%PROGRAMFILES%\Mozilla Firefox\distribution\policies.json - Macos:
Firefox.app/Contents/Resources/distribution - Linux: Bu belgede Linux üzerinde Firefox ile sertifikaya güvenin.
Firefox ilke dosyasına aşağıdaki JSON'u ekleyin:
{
"policies": {
"Certificates": {
"ImportEnterpriseRoots": true
}
}
}
Yukarıdaki ilke dosyası, firefox güven sertifikalarını sertifika depolama alanı içinde bulunan güvenilir sertifikalardan Windows yapar. Sonraki bölüm, Firefox tarayıcısını kullanarak önceki ilke dosyasını oluşturmak için alternatif bir yaklaşım sağlar.
Firefox tarayıcısını kullanarak HTTPS sertifikası güvenini yapılandırma
Aşağıdaki security.enterprise_roots.enabled = true yönergeleri kullanarak ayarlayın:
about:configFireFox tarayıcısına girin.- Riski Kabul Et'i ve riski kabul ediyorsanız Devam'ı seçin.
- Hepsini Göster'i seçin
- Ayarla
security.enterprise_roots.enabled=true - Firefox'ta çıkış ve yeniden başlatma
Daha fazla bilgi için bkz. Firefox'ta Sertifika Yetkililerini (CA) Ayarlama ve mozilla/policy-templates/README dosyası.
Docker için geliştirici sertifikası ayarlama
Linux'ta HTTPS sertifikasına güven
Güveni kurmak dağıtıma ve tarayıcıya özgü bir görevdir. Aşağıdaki bölümlerde bazı popüler dağıtımlar ve diğer tarayıcılar (Edge Chromium Chrome) ve Firefox için yönergeler sağlanmıştır.
Ubuntu hizmet-hizmet iletişimi için sertifikaya güven
OpenSSL 1.1.1h veya sonraki bir sürümü yükleyin. OpenSSL'i güncelleştirme yönergeleri için dağıtımınıza bakın.
Aşağıdaki komutları çalıştırın:
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
Yukarıdaki komutlar:
- Geçerli kullanıcının geliştirici sertifikasının oluşturulduktan sonra emin olur.
- Geçerli kullanıcının ortamını kullanarak, klasör için gereken
ca-certificatesyükseltilmiş izinlere sahip sertifikayı dışarı aktarın. - Bayrağın
-Ekaldırılması, kök kullanıcı sertifikasını dışarı aktararak gerekirse sertifikayı oluşturmasını sağlar. Yeni oluşturulan her sertifikanın parmak izi farklıdır. Kök olaraksudoçalıştırlırken-Eve gerekli değildir.
Yukarıdaki komutta yer alan yol Ubuntu'ya özeldir. Diğer dağıtımlar için uygun bir yol seçin veya Sertifika Yetkilileri (CA) yolunu kullanın.
Edge veya Chrome kullanarak Linux'ta HTTPS sertifikasına güvenme
Linux'ta chromium tarayıcıları için:
Dağıtımınız
libnss3-toolsiçin yükleyin.Klasörün makinede
$HOME/.pki/nssdbvar olduğunu oluşturun veya doğrulayın.Sertifikayı aşağıdaki komutla dışarı aktarın:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEMYukarıdaki komutta yer alan yol Ubuntu'ya özeldir. Diğer dağıtımlar için uygun bir yol seçin veya Sertifika Yetkilileri (CA) yolunu kullanın.
Aşağıdaki komutları çalıştırın:
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n localhost -i /usr/local/share/ca-certificates/aspnet/https.crt certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n localhost -i /usr/local/share/ca-certificates/aspnet/https.crtTarayıcıdan çıkın ve tarayıcıyı yeniden başlatın.
Linux üzerinde Firefox ile sertifikaya güvenme
Sertifikayı aşağıdaki komutla dışarı aktarın:
dotnet dev-certs https sudo -E dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEMYukarıdaki komutta yer alan yol Ubuntu'ya özeldir. Diğer dağıtımlar için uygun bir yol seçin veya Sertifika Yetkilileri (CA) yolunu kullanın.
Aşağıdaki içeriklerle bir JSON
/usr/lib/firefox/distribution/policies.jsondosyası oluşturun:
cat <<EOF | sudo tee /usr/lib/firefox/distribution/policies.json
{
"policies": {
"Certificates": {
"Install": [
"/usr/local/share/ca-certificates/aspnet/https.crt"
]
}
}
}
EOF
İlke dosyasını tarayıcı kullanarak yapılandırmanın alternatif bir yolu için bu belgede Firefox tarayıcısını kullanarak HTTPS sertifikasının güvenini yapılandırma'ya bakın.
Fedora 34 ile sertifikaya güvenin
Sertifikaya diğer dağıtımlarla güvenin
Linux için Windows Alt Sistemi'den HTTPS sertifikasına güven
Uygulama Linux için Windows Alt Sistemi (WSL), otomatik olarak imzalanan bir HTTPS geliştirme sertifikası üretir. Sertifika depo Windows WSL sertifikasına güven olacak şekilde yapılandırmak için:
Geliştirici sertifikasını dosya üzerinde bir dosyaya Windows:
dotnet dev-certs https -ep C:\<<path-to-folder>>\aspnetcore.pfx -p $CREDENTIAL_PLACEHOLDER$Burada
$CREDENTIAL_PLACEHOLDER$bir paroladır.WSL penceresinde, wsl örneğinde dışarı aktaran sertifikayı içeri aktarın:
dotnet dev-certs https --clean --import /mnt/c/<<path-to-folder>>/aspnetcore.pfx -p $CREDENTIAL_PLACEHOLDER$
Yukarıdaki yaklaşım, sertifika başına ve WSL dağıtımı başına bir kez yapılan bir işlemdir. Sertifikayı tekrar tekrar dışarı aktarmadan daha kolaydır. Windows'da sertifikayı güncelleştiriyor veya yeniden üretiyorsanız, önceki komutları yeniden çalıştırmanız gerekir.
Sertifikaya güvenilmiyor gibi sertifika sorunlarını giderme
Bu bölümde, ASP.NET Core HTTPS geliştirme sertifikası yüklü ve güvenilir olduğunda, ancak sertifikaya güvenilmiyorsa yine de tarayıcı uyarılarına sahip olursanız yardım sağlanır. Aşağıdaki ASP.NET Core HTTPS geliştirme sertifikası tarafından Kestrel kullanılır.
Sertifikayı IIS Express için bu Stackoverflow sorununa bakın.
Tüm platformlar - sertifikaya güvenilmiyor
Aşağıdaki komutları çalıştırın:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Açık tüm tarayıcı örneklerini kapatın. Uygulamaya yeni bir tarayıcı penceresi açın. Sertifika güveni tarayıcılar tarafından önbelleğe alınmış.
dotnet dev-certs https --clean Başarısız Oluyor
Yukarıdaki komutlar çoğu tarayıcı güven sorununu çözer. Tarayıcı sertifikaya hala güvenmiyorsa, aşağıdaki platforma özgü önerileri izleyin.
Docker - sertifikaya güvenilmiyor
- C:\Users { USER}\AppData\Roaming\ASP.NET\Https klasörünü silin.
- Çözümü temizleyin. Bin ve obj klasörlerini silin.
- Geliştirme aracını yeniden başlatın. Örneğin, Visual Studio, Visual Studio Code veya Mac için Visual Studio.
Windows - sertifikaya güvenilmiyor
- Sertifika depolamada sertifikaları kontrol edin. Hem hem de
localhostaltında kolayASP.NET Core HTTPS development certificateadla bir sertifika olmasıCurrent User > Personal > CertificatesgerekirCurrent User > Trusted root certification authorities > Certificates - Bulunan tüm sertifikaları hem Kişisel hem de Güvenilen kök sertifika yetkililerinden kaldırın. localhost sertifikasını IIS Express kaldır.
- Aşağıdaki komutları çalıştırın:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Açık tüm tarayıcı örneklerini kapatın. Uygulamaya yeni bir tarayıcı penceresi açın.
OS X - sertifikaya güvenilmiyor
- AnahtarLık Erişimi'ne açın.
- Sistem anahtarlık'ı seçin.
- Localhost sertifikası olup olmadığını denetleyin.
+Tüm kullanıcılar için güvenilir olduğunu göstermek için simgenin üzerinde bir simge içerip içermediğinden emin olun.- Sertifikayı sistem anahtarlığınızdan kaldırın.
- Aşağıdaki komutları çalıştırın:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
Açık olan tüm tarayıcı örneklerini kapatın. Uygulamaya yeni bir tarayıcı penceresi açın.
Visual Studio sertifika sorunlarını gidermek için IIS Express (dotnet/aspnetcore #16892) kullanarak HTTPS hatası bölümüne bakın.
Linux sertifikası güvenilir değil
Güven için yapılandırılan sertifikanın, sunucu tarafından kullanılacak kullanıcı HTTPS Geliştirici Sertifikası olduğunu denetleyin Kestrel .
Şu konumdaki geçerli kullanıcı varsayılan HTTPS Geliştirici Kestrel sertifikasını denetle:
ls -la ~/.dotnet/corefx/cryptography/x509stores/my
HTTPS Geliştirici Kestrel sertifika dosyası, SHA1 parmak izdir. Dosya üzerinden silindiğinde dotnet dev-certs https --clean , farklı bir parmak iziyle gerektiğinde yeniden oluşturulur.
Aşağıdaki komutla, dışarıya aktarılmış sertifikanın parmak izini denetleyin:
openssl x509 -noout -fingerprint -sha1 -inform pem -in /usr/local/share/ca-certificates/aspnet/https.crt
Sertifika eşleşmezse, aşağıdakilerden biri olabilir:
- Eski bir sertifika.
- Kök kullanıcı için bir geliştirici sertifikası verildi. Bu durumda, sertifikayı dışarı aktarın.
Kök kullanıcı sertifikası şu şekilde denetlenebilir:
ls -la /root/.dotnet/corefx/cryptography/x509stores/my
IIS Express Visual Studio ile kullanılan SSL sertifikası
IIS Express sertifikayla ilgili sorunları gidermek için Visual Studio yükleyicisinden onar ' ı seçin. daha fazla bilgi için bu GitHub sorunabakın.