Aspnetcore: Host in https aufgrund schwacher HTTP2-Verschlüsselung nicht erreichbar

Erstellt am 31. März 2019  ·  75Kommentare  ·  Quelle: dotnet/aspnetcore

Beschreibe den Fehler

Der Browser ist mit der für HTTP2 verwendeten Verschlüsselung nicht zufrieden (ich denke)
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY und gleichwertig in Chrom

Schlechte Problemumgehung

nur für Firefox
Ich habe es geschafft, in about:config und die schwache Chiffrierprüfung zu deaktivieren. Dies hat tatsächlich einen Effekt

Gibt es eine einfache Möglichkeit, HTTP2 über einen Kestrel IOptions<> vollständig zu deaktivieren?

Reproduzieren

Schritte zum Reproduzieren des Verhaltens:

  1. deinstalliert ALL sdk
  2. Ordner aus Programmdateien / user / appdata / temp entfernt
  3. Installieren Sie sdk 2.2.105 und 3.0.0-preview3 von https://dot.net
  4. Version von ASP.NET Core: die mit Vorschau3 gelieferte
  5. dotnet new webapi -n foo
  6. kommentiere UseHsts
  7. Kommentieren Sie UseHttpsRedirection()
  8. dotnet run --project foo.csproj
  9. Drücken Sie den http Endpunkt => funktioniert
  10. Drücken Sie den https Endpunkt => abgelehnt

Erwartetes Verhalten

Ich versuchte zu :

  • dotnet dev-certs http --clean
  • dotnet dev-certs http --trust
  • lösche .vs/
  • Ändern Sie launchSettings.json in etwas anderes
  • UseHttpsRedirection()
  • UseHsts()
  • funktioniert nicht für IP / DNS im Browser

Ich bin mir ziemlich sicher, dass alles, was ich getan habe, das Update von Vs2019 war. Es wurde vor 2 Wochen auf demselben SDK (oder dem neuesten Win10-Insider - schnelles Ring-Update) ausgeführt.

>dotnet --version
3.0.100-preview3-010431
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.0.0-preview3-19153-02" />
  </ItemGroup>

</Project>
Done area-commandlinetools bug servers-kestrel

Hilfreichster Kommentar

Es gibt einen Tippfehler in https://github.com/aspnet/AspNetCore/issues/8952#issuecomment -482499042, aber wenn dies korrigiert wurde, funktionierte dies:

dotnet dev-certs https --clean
dotnet dev-certs https --trust

Alle 75 Kommentare

Auf welchem ​​Betriebssystem ist der Server? Wir haben dies auf 2012 / Win8 gesehen.

Sie können HTTP / 2 mit den folgenden Optionen deaktivieren:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#listenoptionsprotocols
Z.B:

{
  "Kestrel": {
    "EndPointDefaults": {
      "Protocols": "Http1"
    }
  }
}

Siehe Plattformanforderungen hier:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#http2 -support

Windows 10 - Schneller Ring Insider
Vs2019 Vorschau
Vorschau von netcoreapp3.0.0
(Haufen Randmaterial ^^)

hat letzte Woche gut funktioniert. Wurde seitdem von einem Insider-Bump + der neuesten Vorschau auf vs2019 getroffen

Es wurde auch versucht, 2 Registrierungsschlüssel hinzuzufügen, um HTTP2 für den Win2016-Server zu deaktivieren.
es hatte keine Auswirkung auf einen Browser

Diese Registrierungsschlüssel gelten nur für IIS / Http.Sys. Ich frage mich, ob Insider eine Regression haben. @ Shirhatti

Ist es eine Möglichkeit, Entwickler wissen zu lassen, dass sie auf einem Server ausgeführt werden, der möglicherweise so endet?

Zum Beispiel eine dotnet tool -Verschlüsselung, die auf dem aktuellen Computer / Server verwendet werden kann, z. B. Farben, um eine potenziell schwache Verschlüsselung anzuzeigen, und so weiter.
Oder ein Boolescher Wert, um den Server aggressiv und ausfallsicher zu machen, wenn die aufgelistete Verschlüsselung beim Start zu schwach ist.

Dies würde erfordern, die Liste der "akzeptablen" zu kennen, und ich habe wirklich keine Ahnung, ob eine solche Liste existiert und ob es überhaupt möglich ist

Ich habe lange gebraucht, um zu erkennen, woher es kam

Können Sie die spezifische Windows-Build-Nummer angeben?

Wir würden diese Art von Werkzeug nur hinzufügen, wenn wir nicht mehr sagen könnten, dass es bei allen rtm win10-Builds funktioniert.

Ab dem 1803-Update können Sie mit IIS Http.Sys pro Bindung steuern. Sie müssen HTTP / 2 nicht mehr für den gesamten Server deaktivieren.

image

Davon abgesehen sollte der globale Registrierungsschlüssel weiterhin funktionieren. Können Sie Ihre Windows-Build-Nummer teilen und ich werde sie untersuchen

@ Shirhatti sie benutzen Turmfalke.

Whoops 🤦‍♂️. Ignoriere meinen vorherigen Kommentar.

auch ich möchte Http2 wirklich nicht deaktivieren, wenn es behoben werden kann;)

@ Tratcher
hilft das

> systeminfo
OS Version:                10.0.18362 N/A Build 18362
OS Configuration:          Standalone Workstation

image

> Get-TlsCipherSuite


KeyType               : 0
Certificate           :
MaximumExchangeLength : 0
MinimumExchangeLength : 0
Exchange              :
HashLength            : 0
Hash                  :
CipherBlockLength     : 16
CipherLength          : 256
BaseCipherSuite       : 4866
CipherSuite           : 4866
Cipher                : AES
Name                  : TLS_AES_256_GCM_SHA384
Protocols             : {772}

KeyType               : 0
Certificate           :
MaximumExchangeLength : 0
MinimumExchangeLength : 0
Exchange              :
HashLength            : 0
Hash                  :
CipherBlockLength     : 16
CipherLength          : 128
BaseCipherSuite       : 4865
CipherSuite           : 4865
Cipher                : AES
Name                  : TLS_AES_128_GCM_SHA256
Protocols             : {772}

KeyType               : 0
Certificate           :
MaximumExchangeLength : 0
MinimumExchangeLength : 0
Exchange              :
HashLength            : 0
Hash                  :
CipherBlockLength     : 0
CipherLength          : 0
BaseCipherSuite       : 0
CipherSuite           : 0
Cipher                :
Name                  : TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
Protocols             : {}

KeyType               : 0
Certificate           : ECDSA
MaximumExchangeLength : 65536
MinimumExchangeLength : 0
Exchange              : ECDH
HashLength            : 0
Hash                  :
CipherBlockLength     : 16
CipherLength          : 128
BaseCipherSuite       : 49195
CipherSuite           : 49195
Cipher                : AES
Name                  : TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
Protocols             : {771, 65277}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 65536
MinimumExchangeLength : 0
Exchange              : ECDH
HashLength            : 0
Hash                  :
CipherBlockLength     : 16
CipherLength          : 256
BaseCipherSuite       : 49200
CipherSuite           : 49200
Cipher                : AES
Name                  : TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Protocols             : {771, 65277}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 65536
MinimumExchangeLength : 0
Exchange              : ECDH
HashLength            : 0
Hash                  :
CipherBlockLength     : 16
CipherLength          : 128
BaseCipherSuite       : 49199
CipherSuite           : 49199
Cipher                : AES
Name                  : TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
Protocols             : {771, 65277}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 1024
MinimumExchangeLength : 1024
Exchange              : DH
HashLength            : 0
Hash                  :
CipherBlockLength     : 16
CipherLength          : 256
BaseCipherSuite       : 159
CipherSuite           : 159
Cipher                : AES
Name                  : TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
Protocols             : {771, 65277}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 1024
MinimumExchangeLength : 1024
Exchange              : DH
HashLength            : 0
Hash                  :
CipherBlockLength     : 16
CipherLength          : 128
BaseCipherSuite       : 158
CipherSuite           : 158
Cipher                : AES
Name                  : TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
Protocols             : {771, 65277}

KeyType               : 0
Certificate           :
MaximumExchangeLength : 0
MinimumExchangeLength : 0
Exchange              :
HashLength            : 0
Hash                  :
CipherBlockLength     : 0
CipherLength          : 0
BaseCipherSuite       : 0
CipherSuite           : 0
Cipher                :
Name                  : TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
Protocols             : {}

KeyType               : 0
Certificate           : ECDSA
MaximumExchangeLength : 65536
MinimumExchangeLength : 0
Exchange              : ECDH
HashLength            : 256
Hash                  : SHA256
CipherBlockLength     : 16
CipherLength          : 128
BaseCipherSuite       : 49187
CipherSuite           : 49187
Cipher                : AES
Name                  : TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
Protocols             : {771, 65277}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 65536
MinimumExchangeLength : 0
Exchange              : ECDH
HashLength            : 384
Hash                  : SHA384
CipherBlockLength     : 16
CipherLength          : 256
BaseCipherSuite       : 49192
CipherSuite           : 49192
Cipher                : AES
Name                  : TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Protocols             : {771, 65277}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 65536
MinimumExchangeLength : 0
Exchange              : ECDH
HashLength            : 256
Hash                  : SHA256
CipherBlockLength     : 16
CipherLength          : 128
BaseCipherSuite       : 49191
CipherSuite           : 49191
Cipher                : AES
Name                  : TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
Protocols             : {771, 65277}

KeyType               : 0
Certificate           : ECDSA
MaximumExchangeLength : 65536
MinimumExchangeLength : 0
Exchange              : ECDH
HashLength            : 160
Hash                  : SHA1
CipherBlockLength     : 16
CipherLength          : 256
BaseCipherSuite       : 49162
CipherSuite           : 49162
Cipher                : AES
Name                  : TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
Protocols             : {769, 770, 771, 65279...}

KeyType               : 0
Certificate           : ECDSA
MaximumExchangeLength : 65536
MinimumExchangeLength : 0
Exchange              : ECDH
HashLength            : 160
Hash                  : SHA1
CipherBlockLength     : 16
CipherLength          : 128
BaseCipherSuite       : 49161
CipherSuite           : 49161
Cipher                : AES
Name                  : TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
Protocols             : {769, 770, 771, 65279...}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 65536
MinimumExchangeLength : 0
Exchange              : ECDH
HashLength            : 160
Hash                  : SHA1
CipherBlockLength     : 16
CipherLength          : 256
BaseCipherSuite       : 49172
CipherSuite           : 49172
Cipher                : AES
Name                  : TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
Protocols             : {769, 770, 771, 65279...}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 65536
MinimumExchangeLength : 0
Exchange              : ECDH
HashLength            : 160
Hash                  : SHA1
CipherBlockLength     : 16
CipherLength          : 128
BaseCipherSuite       : 49171
CipherSuite           : 49171
Cipher                : AES
Name                  : TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
Protocols             : {769, 770, 771, 65279...}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 16384
MinimumExchangeLength : 512
Exchange              : RSA
HashLength            : 0
Hash                  :
CipherBlockLength     : 16
CipherLength          : 256
BaseCipherSuite       : 157
CipherSuite           : 157
Cipher                : AES
Name                  : TLS_RSA_WITH_AES_256_GCM_SHA384
Protocols             : {771, 65277}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 16384
MinimumExchangeLength : 512
Exchange              : RSA
HashLength            : 0
Hash                  :
CipherBlockLength     : 16
CipherLength          : 128
BaseCipherSuite       : 156
CipherSuite           : 156
Cipher                : AES
Name                  : TLS_RSA_WITH_AES_128_GCM_SHA256
Protocols             : {771, 65277}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 16384
MinimumExchangeLength : 512
Exchange              : RSA
HashLength            : 256
Hash                  : SHA256
CipherBlockLength     : 16
CipherLength          : 256
BaseCipherSuite       : 61
CipherSuite           : 61
Cipher                : AES
Name                  : TLS_RSA_WITH_AES_256_CBC_SHA256
Protocols             : {771, 65277}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 16384
MinimumExchangeLength : 512
Exchange              : RSA
HashLength            : 256
Hash                  : SHA256
CipherBlockLength     : 16
CipherLength          : 128
BaseCipherSuite       : 60
CipherSuite           : 60
Cipher                : AES
Name                  : TLS_RSA_WITH_AES_128_CBC_SHA256
Protocols             : {771, 65277}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 16384
MinimumExchangeLength : 512
Exchange              : RSA
HashLength            : 160
Hash                  : SHA1
CipherBlockLength     : 16
CipherLength          : 256
BaseCipherSuite       : 53
CipherSuite           : 53
Cipher                : AES
Name                  : TLS_RSA_WITH_AES_256_CBC_SHA
Protocols             : {769, 770, 771, 65279...}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 16384
MinimumExchangeLength : 512
Exchange              : RSA
HashLength            : 160
Hash                  : SHA1
CipherBlockLength     : 16
CipherLength          : 128
BaseCipherSuite       : 47
CipherSuite           : 47
Cipher                : AES
Name                  : TLS_RSA_WITH_AES_128_CBC_SHA
Protocols             : {769, 770, 771, 65279...}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 16384
MinimumExchangeLength : 512
Exchange              : RSA
HashLength            : 160
Hash                  : SHA1
CipherBlockLength     : 8
CipherLength          : 168
BaseCipherSuite       : 10
CipherSuite           : 10
Cipher                : 3DES
Name                  : TLS_RSA_WITH_3DES_EDE_CBC_SHA
Protocols             : {769, 770, 771, 768...}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 16384
MinimumExchangeLength : 512
Exchange              : RSA
HashLength            : 256
Hash                  : SHA256
CipherBlockLength     : 1
CipherLength          : 0
BaseCipherSuite       : 59
CipherSuite           : 59
Cipher                :
Name                  : TLS_RSA_WITH_NULL_SHA256
Protocols             : {771, 65277}

KeyType               : 0
Certificate           : RSA
MaximumExchangeLength : 16384
MinimumExchangeLength : 512
Exchange              : RSA
HashLength            : 160
Hash                  : SHA1
CipherBlockLength     : 1
CipherLength          : 0
BaseCipherSuite       : 2
CipherSuite           : 2
Cipher                :
Name                  : TLS_RSA_WITH_NULL_SHA
Protocols             : {769, 770, 771, 768...}

KeyType               : 0
Certificate           :
MaximumExchangeLength : 0
MinimumExchangeLength : 0
Exchange              :
HashLength            : 0
Hash                  :
CipherBlockLength     : 0
CipherLength          : 0
BaseCipherSuite       : 0
CipherSuite           : 0
Cipher                :
Name                  : TLS_PSK_WITH_AES_256_GCM_SHA384
Protocols             : {}

KeyType               : 0
Certificate           :
MaximumExchangeLength : 256
MinimumExchangeLength : 0
Exchange              : PSK
HashLength            : 0
Hash                  :
CipherBlockLength     : 16
CipherLength          : 128
BaseCipherSuite       : 168
CipherSuite           : 168
Cipher                : AES
Name                  : TLS_PSK_WITH_AES_128_GCM_SHA256
Protocols             : {771, 65277}

KeyType               : 0
Certificate           :
MaximumExchangeLength : 256
MinimumExchangeLength : 0
Exchange              : PSK
HashLength            : 384
Hash                  : SHA384
CipherBlockLength     : 16
CipherLength          : 256
BaseCipherSuite       : 175
CipherSuite           : 175
Cipher                : AES
Name                  : TLS_PSK_WITH_AES_256_CBC_SHA384
Protocols             : {771, 65277}

KeyType               : 0
Certificate           :
MaximumExchangeLength : 256
MinimumExchangeLength : 0
Exchange              : PSK
HashLength            : 256
Hash                  : SHA256
CipherBlockLength     : 16
CipherLength          : 128
BaseCipherSuite       : 174
CipherSuite           : 174
Cipher                : AES
Name                  : TLS_PSK_WITH_AES_128_CBC_SHA256
Protocols             : {771, 65277}

KeyType               : 0
Certificate           :
MaximumExchangeLength : 256
MinimumExchangeLength : 0
Exchange              : PSK
HashLength            : 384
Hash                  : SHA384
CipherBlockLength     : 1
CipherLength          : 0
BaseCipherSuite       : 177
CipherSuite           : 177
Cipher                :
Name                  : TLS_PSK_WITH_NULL_SHA384
Protocols             : {771, 65277}

KeyType               : 0
Certificate           :
MaximumExchangeLength : 256
MinimumExchangeLength : 0
Exchange              : PSK
HashLength            : 256
Hash                  : SHA256
CipherBlockLength     : 1
CipherLength          : 0
BaseCipherSuite       : 176
CipherSuite           : 176
Cipher                :
Name                  : TLS_PSK_WITH_NULL_SHA256
Protocols             : {771, 65277}

@tebeco Können Sie uns eine Wireshark-Spur zur Verfügung stellen, damit wir genau sehen können, was verhandelt wird? Vielen Dank!

cc @anurse

Welchen Filter würde ich verwenden, um zu extrahieren, wonach Sie suchen? Ich bin mir ziemlich sicher, dass ich Daten verlieren kann, die ich auch nicht möchte
Ich habe auch Zweifel, dass ich tatsächlich etwas sehe:

  • Mit Chrom habe ich keine Logs von Kestrel
  • Mit Firefox habe ich folgendes bekommen:
info: Microsoft.AspNetCore.Server.Kestrel[20]
      Connection id "xxxxxxxxxxxxxxxxxxx" request processing ended abnormally.
System.IO.IOException: The decryption operation failed, see inner exception. ---> System.ComponentModel.Win32Exception: An unknown error occurred while processing the certificate.
   --- End of inner exception stack trace ---
   at System.Net.Security.SslStreamInternal.ReadAsyncInternal[TReadAdapter](TReadAdapter adapter, Memory`1 buffer)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal.AdaptedPipeline.ReadInputAsync(Stream stream)
   at System.IO.Pipelines.PipeCompletion.ThrowLatchedException()
   at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result)
   at System.IO.Pipelines.Pipe.GetReadAsyncResult()
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication`1 application)

Ich denke, dass ich Firefox vorerst weiterhin verwenden werde, um eine Aufnahme zu machen, aber ich wähle entweder schlechte Optionen bei der Installation von Wireshark (viele Fragen zu Loopback / WLAN / Admin usw.) und ich habe möglicherweise opt_out von zu vielen Optionen

Außerdem habe ich versucht, diesen Filter zu verwenden: tcp.port == 5043 (das soll der Kestrel-Port sein)
und ich sehe nichts

auch ich habe ja ja nicht deaktiviert H2, soooo ist das normal:

(Der doppelte gerundete Wert ist ein Bonus)

image

@ Shirhatti

würde wirklich gerne eine Wireshark-Aufnahme machen
Ich benutze einen Laptop (also Wifi) und benutze localhost als Turmfalke
auf einem Laptop, der jetzt ~ 6-8 Netzwerkadapter hat

Was ist der beste Weg, um eine saubere und schöne Aufnahme zu machen?

Welchen Erfassungsfilter sollte ich auch verwenden, um zu filtern, was Sie benötigen?

Ich kann dies auf 18356.21 reproduzieren und # 8409 berichtet es auch auf 18362.1.

Beachten Sie, dass es in IE und Edge funktioniert. Dies ist also ein Konflikt zwischen den von Windows unterstützten Chiffren und den von Chrome unterstützten Chiffren.

@ Tratcher
Nun, Chrome und Firefox
das ist ein bisschen böse

Es ist wahrscheinlich nicht so, dass das [dev] -Zertifikat selbst unsicher ist, sondern dass es nur mit bestimmten Verschlüsselungsanzügen kompatibel ist. dh ich glaube nicht, dass es mit EC-Chiffren funktioniert. Die Aushandlung greift auf zertifikatkompatible Chiffren zurück und findet anscheinend keine, die die HTTP / 2-Anforderungen erfüllt.

@ Tratchers Kommentar aus dem anderen Thread

Was kann ich machen um zu helfen ?

@tebeco Ich denke, wir haben jetzt genug, um weiterzumachen, danke.

In die Vorschau bringen5.

Wenn Sie können, können Sie Vs.net und IIS Express verwenden und auf diese Weise debuggen, da das IIS Express-Entwicklungszertifikat auch unter Windows Insider-Versionen ordnungsgemäß funktioniert. Löst das Problem vorerst für diejenigen, die dies treffen.

Ein weiterer Datenpunkt: Wir haben das Zertifikat von IIS Express in Kestrel getestet und es hat auch funktioniert. Wir werden sehen, was sich mit dem AspNetCore-Entwicklerzertifikat ändern muss.

@Tratcher Hast du Schritte dazu? Wäre vorerst eine süße Lösung. Ich bin froh, dass es funktioniert hat!

@anurse können Sie in Ihr Codebeispiel einfügen?

Ja. Wir beabsichtigen, unser Entwicklungszertifikat für 3.0 zu reparieren, aber als vorübergehende Problemumgehung können Sie das IIS Express-Entwicklungszertifikat direkt von Kestrel verwenden.

Dies funktioniert nur unter Windows (aber bisher wurde das Problem nur dort gemeldet) und erfordert, dass Sie IIS Express installiert und konfiguriert haben (die Installation von VS ist hierfür ausreichend). Sie müssen IIS Express nicht zum Hosten Ihrer Site verwenden , wir leihen nur das Entwicklungszertifikat aus :).

Zuerst müssen Sie Ihr IIS Express-Zertifikat im Benutzerzertifikatsspeicher finden und den Fingerabdruck abrufen. Das folgende PowerShell-Skript erledigt den Trick:

dir Cert:\CurrentUser\Root\ | Where { $_.FriendlyName -like "IIS Express*" } | Select Thumbprint

Sobald Sie den Fingerabdruck erhalten haben, können Sie ein kleines Stück Code in Program.cs schreiben, um das Zertifikat aus dem Geschäft zu holen und es für Kestrel zu verwenden.

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();

                // Add this section below
                webBuilder.ConfigureKestrel(options =>
                {
                    options.ConfigureHttpsDefaults(ssl =>
                    {
                        // Open the Current User's Trusted Root Certificate store
                        var store = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
                        store.Open(OpenFlags.ReadOnly);

                        // Find the IIS Express Certificate
                        var cert = store.Certificates.Find(X509FindType.FindByThumbprint, "<<put the hex thumbprint value in here>>", validOnly: false);
                        ssl.ServerCertificate = cert.Cast<X509Certificate2>().First();
                    });
                });
            });
}

@anurse Super ! Vielen Dank!

Wir müssen unser Entwicklerzertifikat aktualisieren. @javiercn ist das etwas, das du dir ansehen kannst? Das IIS Express Dev Cert in Win 10 18356 funktioniert einwandfrei, unser jedoch nicht. Wir müssen lediglich sicherstellen, dass wir die gleichen Anforderungen erfüllen.

Dies hat für Vorschau 5 hohe Priorität, da das Entwicklungszertifikat unter Windows 10 19H1 vollständig beschädigt ist.

cc @mkArtakMSFT

@anurse Nachdem ich das Problem gelesen habe, sollte es aber machbar sein. Muss @blowdart wissen lassen, aber wenn wir nur den Schlüssel für einen moderneren Schlüssel machen, sollte das in Ordnung sein. (Auch hier habe ich die Ausgabe nicht gelesen, aber ich stelle mir vor, dass es das ist).

Das ist mein Verständnis. Wie gesagt, wir wissen, dass das IIS Express-Zertifikat es richtig macht . Wir müssen nur herausfinden, was anders ist, und diese Änderung auch auf unser Zertifikat anwenden :).

@shirhatti Kennen Sie jemanden, der genau wissen würde, welche Änderungen am IIS-Zertifikat vorgenommen wurden? Könnte helfen, ein wenig in die Details des Zertifikats einzutauchen, wenn wir nur die vorgenommenen Änderungen kennen :)

Ich habe mir das angeschaut, indem ich einen Windows 10-Computer erstellt, auf den neuesten Insider-Build aktualisiert und vs installiert habe (damit IIS das Zertifikat installiert).

Ich konnte nichts auf dem Zertifikat sehen. Kann jemand ein "Arbeitszertifikat" exportieren und mit mir teilen, damit ich es mir ansehen kann? Ich brauche nur den öffentlichen Teil.

Certs.zip

Hier sind beide, damit Sie vergleichen können. Beachten Sie außerdem, dass sich das ASP.NET Core-Zertifikat im persönlichen Speicher des aktuellen Benutzers und das IIS Express-Zertifikat im persönlichen Speicher des lokalen Computers befindet, wenn dies von Bedeutung ist.

@anurse Ich habe mir das

  • Grundlegende Einschränkungen: Wir setzen sie ein, IIS nicht. Sie sollten keine Rolle spielen.
  • Schlüsselverwendung: Wir fügen nur die Schlüsselverschlüsselung hinzu, während IIS die digitale Signatur und die Datenverschlüsselung hinzufügt.

Meine Arbeitstheorie ist, dass die aufgelöste TLS-Suite zwischen beiden unterschiedlich ist. @Tratcher können Sie die ausgehandelte Suite für beide Zertifikate erhalten? Aus irgendeinem Grund wird mit unserem Zertifikat wahrscheinlich TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 nicht ausgewählt. (Das heißt Eliptic Curve Diffie-Helman Ephemeral für den Schlüsselaustausch, RSA für die Authentifizierung, AES128 Galois Counter Mode für die Verschlüsselung).

Auf dieser Grundlage besteht die wahrscheinliche Lösung darin, der Schlüsselnutzung einfach die digitale Signatur hinzuzufügen. Ich denke jedoch, dass es gerechtfertigt ist, die von Kestrel und IIS verwendeten Standard-Chiffresuiten zu betrachten und zu vergleichen, da ich vermute, dass Kestrel auf etwas inakzeptables herunterstuft, sodass eine Änderung unseres Zertifikats nur eine Band-Hilfe für das Problem darstellt und nicht richtig reparieren.

@anurse Mit dem folgenden Powershell-Snippet wird ein "aspnetcore-kompatibles" https-Zertifikat mit der Hinzufügung der digitalen Signatur erstellt. Ich habe versucht, dies auf den Insider-Builds von Win 10 zu wiederholen, und ich konnte es nicht. Können Sie jemanden im Team dazu bringen, es auszuprobieren?

Noch wichtiger ist, dass wir die von IIS und Kestrel angebotenen Cipher Suites überprüfen sollten.

function TryCreateAspNetCoreCertUsingPowershell () {
    $ekuOidCollection = [System.Security.Cryptography.OidCollection]::new();
    $ekuOidCollection.Add([System.Security.Cryptography.Oid]::new("1.3.6.1.5.5.7.3.1","Server Authentication"));
    $sanBuilder = [System.Security.Cryptography.X509Certificates.SubjectAlternativeNameBuilder]::new();
    $sanBuilder.AddDnsName("localhost");

    $certificateExtensions = @(
        # Subject Alternative Name
        $sanBuilder.Build($true),        
        # ASP.NET Core OID
        [System.Security.Cryptography.X509Certificates.X509Extension]::new(
            "1.3.6.1.4.1.311.84.1.1",
            [System.Text.Encoding]::ASCII.GetBytes("ASP.NET Core HTTPS development certificate"),
            $false),
        # KeyUsage
        [System.Security.Cryptography.X509Certificates.X509KeyUsageExtension]::new(
            [System.Security.Cryptography.X509Certificates.X509KeyUsageFlags]::KeyEncipherment -bor [System.Security.Cryptography.X509Certificates.X509KeyUsageFlags]::DigitalSignature,
            $true),
        # Enhanced key usage
        [System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension]::new(
            $ekuOidCollection,
            $true),
        # Basic constraints
        [System.Security.Cryptography.X509Certificates.X509BasicConstraintsExtension]::new($false,$false,0,$true))
    $parameters = @{
        Subject = "localhost";
        KeyAlgorithm = "RSA";
        KeyLength = 2048;
        CertStoreLocation = "Cert:\CurrentUser\My";
        KeyExportPolicy = "Exportable";
        NotBefore = Get-Date;
        NotAfter = (Get-Date).AddYears(1);
        HashAlgorithm = "SHA256";
        Extension = $certificateExtensions;
        SuppressOid = @("2.5.29.14");
        FriendlyName = "ASP.NET Core HTTPS development certificate"
    }
    New-SelfSignedCertificate <strong i="11">@parameters</strong>
}

Wenn Sie den Insider-Build von gestern verwendet haben, ist das 20H1, nicht 19H1. Sie müssen den Release-Vorschau-Ring oder den langsamen Ring ausführen, um die Version mit dem Problem zu erhalten. (Vielleicht ist dies ein Problem mit dem jetzt endgültigen 19H1?)

Ich bin damit einverstanden, diese EKU hinzuzufügen.

Ich habe das Problem gerade erneut getestet, dann das aktualisierte Zertifikat von @javiercn installiert und darauf umgestellt, und das Problem wird mit dem aktualisierten Zertifikat nicht mehr erneut angezeigt.

PR zusammengeführt. Schließen Sie es, wenn Sie der Meinung sind, dass hier nichts anderes zu tun ist

Ich habe gestern auf 20H1 aktualisiert
Ich bin nicht sicher, welche Vorschau 3.0.0-previewX die Zusammenführung enthält
Kannst du mich darüber aufklären? Vorschau4 oder 5?
(Ich kann jeden Abend testen, bin aber nicht bereit, ihn nach dem Schnelltest zu verwenden.)

Dies wird Teil von Vorschau5 sein.

Wenn du läufst

dotnet dev-certs http --clean

Das Powershell-Skript oben und dann

dotnet dev-certs http --trust

Es sollte dich entsperren.

Vielen Dank an alle. Dies ist jetzt behoben und ich werde dies in Bezug auf die Aufnahme in die Version Known issues für Preview5 weiterverfolgen.

Es gibt einen Tippfehler in https://github.com/aspnet/AspNetCore/issues/8952#issuecomment -482499042, aber wenn dies korrigiert wurde, funktionierte dies:

dotnet dev-certs https --clean
dotnet dev-certs https --trust

Gerade installiert Vorschau 6 und das ist immer noch passiert.
Chrome meldet ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY .

Ich habe noch keine Vorschau installiert, nur SDK 2.0 und höher.

SDK / Runtime-Version: 3.0.100-preview6-012264 .

dotnet --info Ausgabe
.NET Core SDK (das alle global.json widerspiegelt):
Version: 3.0.100-Vorschau6-012264
Commit: be3f0c1a03

Laufzeitumgebung:
Betriebssystemname: Windows
Betriebssystemversion: 10.0.18362
Betriebssystemplattform: Windows
RID: win10-x64
Basispfad: C: \ Programme \ dotnet \ sdk3.0.100-Vorschau6-012264 \

Host (nützlich für den Support):
Version: 3.0.0-Vorschau6-27804-01
Commit: fdf81c6faf

Installierte .NET Core SDKs:
2.1.402 [C: \ Programme \ dotnet \ sdk]
2.1.403 [C: \ Programme \ dotnet \ sdk]
2.1.500 [C: \ Programme \ dotnet \ sdk]
2.1.502 [C: \ Programme \ dotnet \ sdk]
2.1.503 [C: \ Programme \ dotnet \ sdk]
2.1.504 [C: \ Programme \ dotnet \ sdk]
2.1.505 [C: \ Programme \ dotnet \ sdk]
2.1.507 [C: \ Programme \ dotnet \ sdk]
2.1.600 [C: \ Programme \ dotnet \ sdk]
2.1.601 [C: \ Programme \ dotnet \ sdk]
2.1.602 [C: \ Programme \ dotnet \ sdk]
2.1.604 [C: \ Programme \ dotnet \ sdk]
2.1.700 [C: \ Programme \ dotnet \ sdk]
2.1.800-Vorschau-009696 [C: \ Programme \ dotnet \ sdk]
2.2.100 [C: \ Programme \ dotnet \ sdk]
2.2.102 [C: \ Programme \ dotnet \ sdk]
2.2.104 [C: \ Programme \ dotnet \ sdk]
2.2.202 [C: \ Programme \ dotnet \ sdk]
2.2.204 [C: \ Programme \ dotnet \ sdk]
2.2.300 [C: \ Programme \ dotnet \ sdk]
3.0.100-Vorschau6-012264 [C: \ Programme \ dotnet \ sdk]

Installierte .NET Core-Laufzeiten:
Microsoft.AspNetCore.All 2.1.4 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.5 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.6 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.7 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.8 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.9 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.11 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.0 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.1 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.2 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.3 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.5 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.4 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.5 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.6 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.7 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.8 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.9 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.11 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.0 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.1 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.2 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.3 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.5 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.0-Vorschau6.19307.2 [C: \ Programme \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.4 [C: \ Programme \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.5 [C: \ Programme \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.6 [C: \ Programme \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.7 [C: \ Programme \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.8 [C: \ Programme \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.9 [C: \ Programme \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.11 [C: \ Programme \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.0 [C: \ Programme \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.1 [C: \ Programme \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.2 [C: \ Programme \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.3 [C: \ Programme \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.5 [C: \ Programme \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.0-Vorschau6-27804-01 [C: \ Programme \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.0.0-Vorschau6-27804-01 [C: \ Programme \ dotnet \ shared \ Microsoft.WindowsDesktop.App]

Könnte für mich mit https://github.com/aspnet/AspNetCore/issues/11283 verwandt sein.

@nphmuller

Haben Sie versucht, die folgenden Befehle in einer Vorschau-6-Dotnet-Umgebung auszuführen?

dotnet dev-certs https --clean
dotnet dev-certs https --trust

Es ist wahrscheinlich, dass Sie ein altes Zertifikat haben. Wir haben Logik hinzugefügt, um das Zertifikat zu aktualisieren, aber ich bin nicht sicher, ob es in die Vorschau6 gelangt ist oder in der Vorschau7 verfügbar sein wird.

@ Javiercn
Ich habe es als Problemumgehung versucht, aber --clean schlägt fehl. Ich habe für dieses Problem https://github.com/aspnet/AspNetCore/issues/11283 erstellt.

@nphmuller Welches Betriebssystem verwenden Sie?

Sie können den Zertifizierungsmanager öffnen und die Zertifikate selbst reinigen (ich verstehe, dass dies nicht ideal ist).
Unter Windows (Win + R) -> mmc -> Enter -> (Strg + M (Snap-In hinzufügen) -> Zertifikate -> Mein Benutzerkonto -> Zertifikate -> Persönlich -> Zertifikate -> Finden Sie diejenigen mit 'localhost '-> Entferne diejenigen, die ASP.NET Core HTTPS ... .
Wiederholen Sie dies mit den Zertifikaten der Trusted Root Certification Authorities
Führen Sie dotnet dev-certs https --trust

@ Javiercn
Diese Arbeit. Vielen Dank!
Ich bin auf Win 10 1903 (18362.175) (Auch in der Ausgabe von dotnet --info habe ich in meinem ersten Kommentar geschrieben)

Meine Vermutung wäre, wie Sie geschrieben haben, dass die Upgrade-Logik es nicht bis zur Vorschau 6 geschafft hat, sondern in der Vorschau 7 sein wird.

@javiercn @nphmuller Ich hatte das gleiche Problem, habe versucht, Zertifikate manuell zu entfernen und sie mit dotnet dev-certs https --trust neu zu erstellen. Das hat funktioniert, aber jetzt erhalte ich einen ERR_CERT_AUTHORITY_INVALID-Fehler. Es sieht so aus, als ob Turmfalke immer noch das alte Zertifikat verwendet. Irgendwelche Ideen?

Haben Sie Ihre Browserfenster geschlossen und wieder geöffnet? Browser speichern Zertifikate im Speicher, sodass Sie einen neuen Browser schließen und öffnen müssen, damit die Änderungen angezeigt werden.

Ja, ich habe es getan. Ich habe gerade meinen Computer neu gestartet. Scheint nicht zu funktionieren (versucht in Chrome, Firefox, Edge). Gibt es einen Ort, an dem das Zertifikat zwischengespeichert werden könnte? Es sieht so aus, als wäre das Zertifikat tatsächlich das vorherige.

Haben Sie das 3.0 SDK zum Generieren des Zertifikats verwendet?

Ja, ich denke schon. dotnet --info Ausgabe von @nphmuller :

dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   3.0.100-preview6-012264
 Commit:    be3f0c1a03

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.18362
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.0.100-preview6-012264\

Host (useful for support):
  Version: 3.0.0-preview6-27804-01
  Commit:  fdf81c6faf

.NET Core SDKs installed:
  2.1.202 [C:\Program Files\dotnet\sdk]
  2.1.500 [C:\Program Files\dotnet\sdk]
  2.1.502 [C:\Program Files\dotnet\sdk]
  2.1.503 [C:\Program Files\dotnet\sdk]
  2.1.504 [C:\Program Files\dotnet\sdk]
  2.1.505 [C:\Program Files\dotnet\sdk]
  2.1.600-preview-009426 [C:\Program Files\dotnet\sdk]
  2.1.600-preview-009472 [C:\Program Files\dotnet\sdk]
  2.1.600-preview-009497 [C:\Program Files\dotnet\sdk]
  2.1.600 [C:\Program Files\dotnet\sdk]
  2.1.601 [C:\Program Files\dotnet\sdk]
  2.1.602 [C:\Program Files\dotnet\sdk]
  2.1.604 [C:\Program Files\dotnet\sdk]
  2.1.700 [C:\Program Files\dotnet\sdk]
  2.2.200-preview-009648 [C:\Program Files\dotnet\sdk]
  2.2.200-preview-009748 [C:\Program Files\dotnet\sdk]
  2.2.200-preview-009804 [C:\Program Files\dotnet\sdk]
  2.2.200 [C:\Program Files\dotnet\sdk]
  2.2.201 [C:\Program Files\dotnet\sdk]
  2.2.202 [C:\Program Files\dotnet\sdk]
  2.2.204 [C:\Program Files\dotnet\sdk]
  2.2.300 [C:\Program Files\dotnet\sdk]
  3.0.100-preview6-012264 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0-preview6.19307.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.0-preview6-27804-01 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.0.0-preview6-27804-01 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

Auch unter Windows?

dotnet --info listet einfach die SDKS auf
Sie könnten von einer global.json in diesem Ordner oder einem übergeordneten Ordner betroffen sein
Dies würde dazu führen, dass dasselbe alte Zertifikat neu generiert wird

versuche es aufzuräumen
Überprüfen Sie dotnet --version
Verwenden Sie dann den Befehl --trust

@javiercn Was meinst du? Ich bin unter Windows. 🙂

@tebeco dotnet --version druckt auch 3.0.100-preview6-012264 .

Das Problem ist, dass Sie sich dessen sicher sein müssen, wenn Sie diesen Befehl in diesem Moment tatsächlich ausgeführt haben

Ich kann nicht wirklich mitmachen. Was soll ich machen? 😕

Führen Sie eine vollständige Bereinigung durch
Keine Ahnung, ob ein Neustart erforderlich ist
Überprüfen Sie dann die dotnet version bevor Sie die --trust one erneut

Das habe ich schon gemacht (ein paar Mal) still - immer noch kein Erfolg.

Ich habe eine frisch installierte VS2019 Preview 16.2 Preview 2 und dies ist der erste ASP.NET-Kern mit Kestrel-Projekt, den ich ausführe, und ich stoße auf dasselbe Problem. Ich habe versucht, mit den Befehlen clean / trust das Zertifikat ohne Änderung zu aktualisieren.

dotnet --version
3.0.100-Vorschau-010184

Dies ist ein leeres Projekt, bei dem .ConfigureKestrel () ohne Änderungen hinzugefügt wurde

@karaziox Das 3.0.100-Vorschau-010184 SDK stammt aus 3.0.0-Vorschau2, wo dieses Problem erst in der Vorschau6 behoben wurde6. Gehen Sie zu https://dotnet.microsoft.com/download/dotnet-core/3.0 und installieren Sie das SDK 3.0.100-Preview6-012264.

@javiercn Was meinst du? Ich bin unter Windows. 🙂

@tebeco dotnet --version druckt auch 3.0.100-preview6-012264 .

@Tratcher das Problem tritt immer noch in Vorschau6 auf.

Ich glaube, das Update ist in Vorschau7, nicht in Vorschau6. @jkotalik kannst du bestätigen?

Immer noch ein Problem für mich mit dotnet 3.0.100-preview6-012264 und VS 16.2.0 Preview 3.0

IIS funktioniert einwandfrei mit der Standard-ASP.Net-Kernanwendung. Turmfalke schlägt mit ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY fehl

@simonmurdock können Sie versuchen, das Zertifikat in der Befehlszeile manuell mit dotnet dev-certs https --clean und dotnet dev-certs https --trust generieren . Es wurden einige Probleme bezüglich der Benutzererfahrung behoben, die in der Vorschau7 behoben werden. Das Zertifikat sollte jedoch funktionieren, wenn es in der Vorschau6 neu generiert wird.

Hallo. Gleiches Problem für mich 3.0.100-preview6-012264 (OS Win 8.1), habe VS2019 16.1.1 installiert. Verifiziert mit dotnet new blazorhosted . Ich habe versucht, die Zertifikate (Schließen von Chrom 75.0.3770.100) mit dem Dotnet-Tool zu reinigen und wieder zu vertrauen, aber keine Hilfe.

@vmandic HTTP / 2 wird unter Win8.1 nicht unterstützt. Sie müssen es deaktivieren.
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#http2 -support

@Tratcher sollten wir wahrscheinlich HTTP2 standardmäßig deaktivieren, wenn es unter Win7 oder Win8 läuft

@jkotalik bitte eine neue Ausgabe für Triage öffnen. Theoretisch kann es unter Win8.1 funktionieren. Es gibt nur ein Problem mit der Bestellung der Chiffre und dem Erhalt eines Zertifikats, das einige der alternativen Chiffren unterstützt.

Da das Problem bei der gestrigen Installation von Preview8 immer noch nicht behoben war, habe ich erfolglos versucht, sowohl dotnet dev-certs https --clean als auch dotnet dev-certs https --trust erneut auszuführen.

Ich habe festgestellt, dass Kestrel immer noch ein altes, veraltetes Zertifikat verwendet, das besagte Zertifikat jedoch nicht im Windows-Zertifikatmanager gefunden werden konnte. Es stellt sich heraus, dass die Zertifikate hier zwischengespeichert sind: C:\Users\<user>\AppData\Roaming\ASP.NET\Https . Es gab drei * .pfx-Dateien, von denen eine offensichtlich noch von Kestrel verwendet wurde.

Ich habe buchstäblich Stunden gebraucht, um das zu finden. Ich hatte bereits erwartet, dass Zertifikate zwischengespeichert werden, konnte sie jedoch nicht irgendwo in der Dokumentation finden. Dies muss wirklich dokumentiert werden, bitte.

Ich kann mir vorstellen, dass Sie Docker-Container verwenden. Hier exportiert Docker das Zertifikat, um es in den Container zu importieren.

@anurse wir könnten dies zu den Dokumenten hinzufügen, denke ich. Ich bin nicht sicher, welche Auswirkungen das Bereinigen dieses Ordners auf die Docker-Leute hat, aber wir können sie fragen.

Was ich nicht möchte, ist, dies dem Tool hinzuzufügen, da es ein Implementierungsdetail für Docker-Tools ist und nichts mit dem Tool zu tun hat.

Ich glaube jedoch nicht, dass wir die Laufzeit hier ändern müssen, solange wir in den Dokumenten Details dazu angeben, was zu tun ist, wenn Sie auf diese Situation stoßen. Ich habe https://github.com/aspnet/AspNetCore.Docs/issues/13927 abgelegt, um dies zu verfolgen.

Vielen Dank für die Ausarbeitung.

Wenn Sie dies zur Dokumentation hinzufügen, sparen Sie Zeit. Vielen Dank!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen