Aspnetcore: Hôte inaccessible en https en raison d'un chiffrement Http2 faible

Créé le 31 mars 2019  ·  75Commentaires  ·  Source: dotnet/aspnetcore

Décrivez le bogue

Le navigateur n'est pas satisfait du chiffrement utilisé pour HTTP2 (je suppose)
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY et équivalent en chrome

Mauvaise solution de contournement

uniquement pour Firefox
j'ai réussi à entrer about:config et à désactiver la vérification du chiffrement faible, cela a effectivement un effet

existe-t-il un moyen simple de désactiver complètement HTTP2 via un Kestrel IOptions<> ?

Reproduire

Étapes pour reproduire le comportement:

  1. désinstallé ALL sdk
  2. dossier supprimé des fichiers programme / utilisateur / appdata / temp
  3. installez sdk 2.2.105 et 3.0.0-preview3 depuis https://dot.net
  4. version d'ASP.NET Core: celle livrée avec preview3
  5. dotnet new webapi -n foo
  6. commenter UseHsts
  7. commenter UseHttpsRedirection()
  8. dotnet run --project foo.csproj
  9. frapper le http endpoint => fonctionne
  10. atteindre le point https terminaison

Comportement prévisible

j'ai essayé de :

  • dotnet dev-certs http --clean
  • dotnet dev-certs http --trust
  • supprimer .vs/
  • remplacez launchSettings.json par autre chose
  • supprimé UseHttpsRedirection()
  • supprimé UseHsts()
  • ne fonctionne pas pour IP / DNS dans le navigateur

à peu près sûr que tout ce que j'ai fait était la mise à jour Vs2019, c'était workign il y a 2 semaines sur le même SDK (ou le dernier insider win10 - mise à jour rapide de l'anneau)

>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

Commentaire le plus utile

Il y a une faute de frappe dans https://github.com/aspnet/AspNetCore/issues/8952#issuecomment -482499042, mais une fois corrigé, cela a fonctionné:

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

Tous les 75 commentaires

Sur quel système d'exploitation est le serveur? Nous avons vu cela sur 2012 / Win8.

Vous pouvez désactiver HTTP / 2 en utilisant ces options:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#listenoptionsprotocols
Par exemple:

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

Voir les exigences de la plate-forme ici:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#http2 -support

Windows 10 - Insider de l'anneau rapide
Aperçu de la VS2019
Aperçu de netcoreapp3.0.0
(tas de trucs de bord ^^)

fonctionnait bien la semaine dernière. A été frappé par une bosse d'initié + dernier aperçu de vs2019 depuis

a également essayé d'ajouter 2 clés de registre pour désactiver HTTP2 pour le serveur Win2016.
cela n'a eu aucun effet sur aucun navigateur

Ces clés de registre sont uniquement pour IIS / Http.Sys. Je me demande si Insiders a une régression. @shirhatti

Est-ce un moyen de faire savoir au développeur qu'il s'exécute sur un serveur qui pourrait finir comme ça?

Par exemple, un chiffrement de liste dotnet tool qui peut être utilisé sur la machine / serveur actuel avec, par exemple, des couleurs pour indiquer un chiffrement faible potentiel, etc.
Ou un booléen pour rendre le serveur agressif et failfast si le chiffrement répertorié est trop faible au démarrage.

Cela nécessiterait de connaître la liste des "acceptables" et je n'ai vraiment aucune idée si une telle liste existe et si c'est possible du tout

il m'a fallu du temps pour réaliser d'où ça venait

Pouvez-vous donner le numéro de build spécifique de Windows?

Nous n'ajouterions ce type d'outils que si nous ne pouvions plus dire que cela fonctionnait sur toutes les versions de rtm win10.

À partir de la mise à jour 1803, IIS vous permet de contrôler Http.Sys sur une base par liaison. Vous n'avez plus besoin de désactiver HTTP / 2 pour l'ensemble du serveur.

image

Cela étant dit, la clé d'enregistrement globale devrait toujours fonctionner. Pouvez-vous partager votre numéro de version Windows et je l'examinerai

@shirhatti ils utilisent Kestrel.

Oups 🤦‍♂️. Ignorez mon commentaire précédent.

aussi je ne veux vraiment pas désactiver Http2 s'il peut être corrigé;)

@Tratcher
cela aide-t-il?

> 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 Pouvez-vous nous fournir une trace de wirehark afin que nous puissions voir exactement ce qui est négocié? Merci!

cc @anurse

Quel filtre utiliserais-je pour extraire ce que vous recherchez, à peu près sûr que je peux fuir des données que je ne veux pas trop
J'ai aussi un doute que je vois quelque chose:

  • Avec Chrome, je n'ai pas de journaux hors de Kestrel
  • Avec Firefox, j'ai ceci:
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)

Je suppose que pour l'instant je continuerai à utiliser Firefox pour faire une capture, mais je choisis soit de mauvaises options lors de l'installation de WireShark (beaucoup de questions sur loopback / wifi / admin etc ...) et je pourrais avoir opt_out parmi trop d'options

aussi j'ai essayé d'utiliser ce filtre: tcp.port == 5043 (qui est censé être le port Kestrel)
et je ne vois rien

aussi je n'ai pas oui désactivé H2, tellement c'est normal:

(la valeur double arrondie est un bonus)

image

@shirhatti

aimerait vraiment faire une capture Wireshark
J'utilise un ordinateur portable (donc Wifi) et j'utilise localhost pour Kestrel
sur un ordinateur portable qui a maintenant ~ 6-8 adaptateur réseau

quelle est la meilleure façon d'avoir une capture propre et agréable?

également quel filtre de capture dois-je utiliser pour filtrer ce dont vous avez besoin?

Je peux reproduire ceci sur 18356.21 et # 8409 le rapporte également sur 18362.1.

Notez que cela fonctionne dans IE et Edge, il s'agit donc d'un conflit entre les chiffrements pris en charge par Windows et ce que Chrome prend en charge.

@Tratcher
Eh bien Chrome et Firefox
c'est un peu méchant

Il est probable que le certificat [dev] lui-même ne soit pas sécurisé, mais qu'il soit uniquement compatible avec certaines combinaisons de chiffrement. ie je ne pense pas que cela fonctionne avec les cyphers EC. La négociation revient aux chiffrements compatibles cert et ne trouve apparemment pas celui qui répond aux exigences HTTP / 2.

Commentaire de de l'autre fil

Que puis-je faire pour aider ?

@tebeco Je pense que nous en avons assez pour continuer maintenant, merci.

Apporter en aperçu 5.

La solution, si vous le pouvez, consiste à utiliser Vs.net et IIS Express et à déboguer de cette façon, car le certificat de développement IIS Express fonctionne correctement, même sur les versions Windows Insider. Résout le problème pour le moment pour ceux qui frappent cela.

Un autre point de données: nous avons testé en utilisant le cert d'IIS Express dans Kestrel et cela a également fonctionné, nous verrons ce qui doit changer avec le cert de développement AspNetCore.

@Tratcher Avez-vous des mesures pour le faire? Ce serait une solution de contournement douce pour le moment. Heureux que cela ait fonctionné!

@anurse pouvez-vous coller votre exemple de code?

Oui. Nous avons l'intention de corriger notre certificat de développement pour la version 3.0, mais comme solution temporaire, vous pouvez utiliser le certificat de développement IIS Express directement à partir de Kestrel.

Cela ne fonctionne que sur Windows (mais jusqu'à présent, le problème n'a été signalé que là-bas), et nécessite que vous ayez IIS Express installé et configuré (l'installation de VS est suffisante pour cela). Vous n'êtes pas obligé d' utiliser IIS Express pour héberger votre site , nous empruntons simplement son certificat de développement :).

Vous devez d'abord trouver votre certificat IIS Express dans le magasin de certificats utilisateur et obtenir l'empreinte numérique. Le script PowerShell suivant fera l'affaire:

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

Une fois que vous avez l'empreinte numérique, vous pouvez écrire un petit bout de code dans Program.cs pour récupérer ce certificat du magasin et l'utiliser pour Kestrel.

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 Génial! Merci!

Nous devons mettre à jour notre certificat de développement. @javiercn est-ce quelque chose que vous pouvez regarder? Le certificat de développement IIS Express dans Win 10 18356 fonctionne bien, mais pas le nôtre. Tout ce que nous devons faire est de nous assurer que nous répondons aux mêmes exigences.

Il s'agit d'une priorité élevée pour l'aperçu 5 car le certificat de développement est complètement cassé sous Windows 10 19H1.

cc @mkArtakMSFT

@anurse Après avoir lu le problème, mais cela devrait être faisable. Devra faire savoir à @blowdart , mais si nous ne faisons que créer la clé d'une clé plus moderne, cela devrait être bien. (Encore une fois, je n'ai pas lu le problème, mais j'imagine que c'est tout).

C'est ma compréhension. Comme je l'ai dit, nous savons que le certificat IIS Express fait les choses correctement , nous devons juste comprendre ce qui est différent et appliquer cette modification à notre certificat également :).

@shirhatti connaissez-vous quelqu'un qui saurait précisément quelle modification a été apportée au certificat IIS? Cela pourrait aider à économiser quelques plongées dans les détails du certificat si nous savions simplement les changements qui ont été apportés :)

J'ai jeté un coup d'œil à cela en créant une machine Windows 10, en la mettant à jour avec la dernière version d'initié et en installant vs (afin qu'IIS installe le cert).

Je n'ai rien pu voir sur le certificat. Quelqu'un peut-il exporter un "certificat de travail" et le partager avec moi afin que je puisse l'examiner? Je n'ai besoin que de la partie publique.

Certs.zip

Voici les deux pour que vous puissiez comparer. Notez également que le certificat ASP.NET Core se trouve dans le magasin personnel de l'utilisateur actuel et que le certificat IIS Express se trouve dans le magasin personnel de l'ordinateur local si cela est important.

@anurse J'ai

  • Contraintes de base: nous les mettons, IIS ne le fait pas. Ils ne devraient pas avoir d'importance.
  • Utilisation de la clé: nous ajoutons uniquement le chiffrement de clé tandis que IIS ajoute la signature numérique et le chiffrement des données.

Ma théorie de travail est que la suite TLS en cours de résolution est différente entre les deux. @Tratcher pouvez-vous obtenir la suite négociée pour les deux certificats? Pour une raison quelconque, avec notre certificat, il est probable que TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ne soit pas sélectionné. (Cela lit Eliptic Curve Diffie-Helman Ephemeral pour l'échange de clés, RSA pour l'authentification, AES128 Galois Counter Mode pour le cryptage).

Sur cette base, la solution probable consiste simplement à ajouter une signature numérique à l'utilisation de la clé. Cela dit, je pense que cela justifie de regarder l'ensemble par défaut de suites de chiffrement utilisées par Kestrel et IIS et de les comparer, car je suppose que Kestrel passe à quelque chose d'inacceptable, donc changer notre certificat ne fera que résoudre le problème. et ne pas le réparer correctement.

@anurse L'extrait de Pouvez-vous demander à quelqu'un dans l'équipe de l'essayer?

Plus important encore, je pense que nous devrions revoir les suites de chiffrement offertes par IIS et Kestrel.

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>
}

Si vous avez utilisé la version d'initié d'hier, c'est 20H1 pas 19H1. Vous devrez faire l'anneau de prévisualisation de la version ou l'anneau lent pour obtenir la version avec le problème. (Peut-être que c'est un problème avec le 19H1 maintenant final?)

Je suis d'accord avec l'ajout de cet EKU.

Je viens de reprocher le problème, puis j'ai installé le certificat mis à jour de @javiercn et je suis passé dessus et le problème ne se reproduit plus avec le certificat mis à jour.

https://github.com/aspnet/AspNetCore/pull/9293/files PR est prêt à mettre à jour le KU.

PR a fusionné. Fermez-le si vous pensez qu'il n'y a rien d'autre à aborder ici

je viens de mettre à jour à 20H1 hier
je ne sais pas quel aperçu 3.0.0-previewX contiendra la fusion
pouvez-vous m'éclairer là-dessus? aperçu4 ou 5?
(Je peux tester une nuit mais je ne veux pas l'utiliser après le test rapide)

Cela fera partie de preview5.

Si vous courez

dotnet dev-certs http --clean

Le script PowerShell ci-dessus et ensuite

dotnet dev-certs http --trust

Cela devrait vous débloquer.

Merci tout le monde. Ceci est maintenant corrigé et je ferai un suivi concernant l'inclusion de cela dans la version Known issues pour Preview5.

Il y a une faute de frappe dans https://github.com/aspnet/AspNetCore/issues/8952#issuecomment -482499042, mais une fois corrigé, cela a fonctionné:

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

Je viens d'installer l'aperçu 6 et cela se produit toujours.
Chrome rapporte ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY .

Je n'ai installé aucun aperçu avant, seulement SDK 2.0 et plus.

Version SDK / Runtime: 3.0.100-preview6-012264 .

dotnet - sortie info
SDK .NET Core (reflétant tout global.json):
Version: 3.0.100-preview6-012264
Commit: be3f0c1a03

Environnement d'exécution:
Nom du système d'exploitation: Windows
Version du système d'exploitation: 10.0.18362
Plateforme du système d'exploitation: Windows
RID: win10-x64
Chemin de base: C: \ Program Files \ dotnet \ sdk3.0.100-preview6-012264 \

Hôte (utile pour le support):
Version: 3.0.0-aperçu6-27804-01
Commit: fdf81c6faf

SDK .NET Core installés:
2.1.402 [C: \ Program Files \ dotnet \ sdk]
2.1.403 [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.507 [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.1.800-preview-009696 [C: \ Program Files \ dotnet \ sdk]
2.2.100 [C: \ Program Files \ dotnet \ sdk]
2.2.102 [C: \ Program Files \ dotnet \ sdk]
2.2.104 [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]

Les environnements d'exécution .NET Core installés:
Microsoft.AspNetCore.All 2.1.4 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.5 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.6 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.7 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.8 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.9 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.11 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.0 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.1 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.2 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.3 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.5 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.4 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.5 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.6 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.7 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.8 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.9 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.11 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.0 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.1 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.2 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.3 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.5 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.0-preview6.19307.2 [C: \ Program Files \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.4 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.5 [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]

Cela pourrait être lié à https://github.com/aspnet/AspNetCore/issues/11283 pour moi.

@nphmuller

Avez-vous essayé d'exécuter les commandes suivantes avec un environnement dotnet preview6?

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

Il est probable que vous ayez un ancien certificat. Nous avons ajouté une logique pour mettre à niveau le certificat, mais je ne sais pas s'il a été intégré à l'aperçu6 ou s'il sera disponible dans l'aperçu7.

@javiercn
J'ai essayé, comme solution de contournement, mais --clean échoue. J'ai créé https://github.com/aspnet/AspNetCore/issues/11283 pour ce problème.

@nphmuller Quel système d'exploitation utilisez-vous?

Vous pouvez ouvrir le gestionnaire de certificats et nettoyer les certificats vous-même (je comprends que ce n'est pas idéal)
Sous Windows (Win + R) -> mmc -> entrée -> (Ctrl + M (ajouter un composant logiciel enfichable) -> Certificats -> Mon compte d'utilisateur -> Certificats -> Personnel -> Certificats -> Trouvez ceux avec 'localhost '-> Supprimez ceux qui ont ASP.NET Core HTTPS ... .
Répétez avec les certificats sur les autorités de certification racines de confiance
Réexécuter dotnet dev-certs https --trust

@javiercn
Ce travail. Merci!
Je suis sur Win 10 1903 (18362.175) (également dans la sortie dotnet --info , j'ai écrit dans mon commentaire initial)

Je suppose, comme vous l'avez écrit, que la logique de mise à niveau n'a pas atteint l'aperçu 6, mais sera dans l'aperçu 7.

@javiercn @nphmuller J'ai eu le même problème, j'ai essayé de supprimer les certificats manuellement et de les recréer en utilisant dotnet dev-certs https --trust . Cela a fonctionné, mais j'obtiens maintenant une erreur ERR_CERT_AUTHORITY_INVALID. Il semble que Kestrel utilise toujours l'ancien certificat. Des idées?

Avez-vous fermé et rouvert les fenêtres de votre navigateur? Les navigateurs mettent en cache les certificats en mémoire, vous devez donc fermer et ouvrir un nouveau navigateur pour que les modifications apparaissent.

Oui, je l'ai fait. J'ai également redémarré mon ordinateur tout à l'heure. Ne semble pas fonctionner (essayé dans Chrome, Firefox, Edge). Y a-t-il un endroit où le certificat peut être mis en cache? Il semble que le certificat soit bien le précédent.

Avez-vous utilisé le SDK 3.0 pour générer le certificat?

Oui, je pense. dotnet --info sortie @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

Sur les fenêtres aussi?

dotnet --info listez simplement les sdks
vous pourriez avoir été affecté par un global.json dans ce dossier ou dans n'importe quel dossier parent
cela entraînerait la régénération du même ancien certificat

essayer un nettoyage
chèque dotnet --version
puis utilisez la commande --trust

@javiercn Que voulez-vous dire? Je suis sous Windows. 🙂

@tebeco dotnet --version imprime également 3.0.100-preview6-012264 .

le problème est que vous devez être sûr de cela lorsque vous avez réellement exécuté cette commande à ce moment-là

Je ne peux pas vraiment suivre. Qu'est-ce que je suis supposé faire? 😕

faire un nettoyage complet
aucune idée si le redémarrage est nécessaire
puis vérifiez le dotnet version avant de relancer le --trust un

C'est ce que j'ai déjà fait (quelques fois) 🙂 - toujours pas de succès.

J'ai un VS2019 Preview 16.2 Preview 2 fraîchement installé et c'est le premier noyau ASP.NET avec le projet Kestrel que je lance et je rencontre le même problème. J'ai essayé les commandes clean / trust pour actualiser le certificat sans changement.

dotnet --version
3.0.100-aperçu-010184

Ceci est un projet vide avec .ConfigureKestrel () ajouté sans aucune modification

@karaziox, le SDK 3.0.100-preview-010184 provient de 3.0.0-preview2, où ce problème n'a pas été résolu avant preview6. Accédez à https://dotnet.microsoft.com/download/dotnet-core/3.0 et installez le SDK 3.0.100-preview6-012264.

@javiercn Que voulez-vous dire? Je suis sous Windows. 🙂

@tebeco dotnet --version imprime également 3.0.100-preview6-012264 .

@Tratcher le problème se produit toujours dans preview6.

Je crois que le correctif est en preview7, pas en preview6. @jkotalik pouvez-vous confirmer?

Encore un problème pour moi avec dotnet 3.0.100-preview6-012264 et VS 16.2.0 Preview 3.0

IIS fonctionne correctement avec l'application ASP.Net Core par défaut, Kestrel échoue avec ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

@simonmurdock pouvez-vous essayer de régénérer manuellement le certificat sur la ligne de commande avec dotnet dev-certs https --clean et dotnet dev-certs https --trust . Il y a eu quelques problèmes résolus concernant l'expérience utilisateur qui seront résolus dans preview7, mais le certificat devrait fonctionner s'il est régénéré dans preview6.

Salut. Même problème pour moi 3.0.100-preview6-012264 (OS Win 8.1), j'ai installé VS2019 16.1.1. Vérifié avec dotnet new blazorhosted . J'ai essayé de nettoyer les certificats (fermeture de chrome 75.0.3770.100) avec l'outil dotnet et de faire confiance à nouveau, mais sans aide.

@vmandic HTTP / 2 n'est pas pris en charge sur Win8.1, vous devrez le désactiver.
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#http2 -support

@Tratcher nous devrions probablement désactiver HTTP2 par défaut si vous utilisez Win7 ou Win8

@jkotalik ouvre un nouveau numéro pour le triage s'il vous plaît. En théorie, cela peut fonctionner sur Win8.1, il y a juste un problème avec la commande de chiffrement et l'obtention d'un certificat qui prend en charge certains des cyphers alternatifs.

Comme le problème n'était toujours pas résolu lorsque j'ai installé Preview8 hier, j'ai essayé d'exécuter à nouveau dotnet dev-certs https --clean et dotnet dev-certs https --trust , sans succès.

J'ai constaté que Kestrel utilisait toujours un ancien certificat obsolète, mais je n'ai pas pu localiser ledit certificat dans le gestionnaire de certificats Windows. Il s'avère que les certificats sont mis en cache ici: C:\Users\<user>\AppData\Roaming\ASP.NET\Https . Il y avait trois fichiers * .pfx, dont l'un était évidemment encore utilisé par Kestrel.

Il m'a fallu littéralement des heures pour trouver cela. Je m'attendais déjà à ce que les certificats soient mis en cache, mais je n'ai pas pu le trouver quelque part dans la documentation. Cela a vraiment besoin d'être documenté, s'il vous plaît.

J'imagine que c'est parce que vous utilisez des conteneurs Docker. C'est l'emplacement où docker exporte le certificat pour l'importer dans le conteneur.

@anurse, nous pourrions ajouter ceci à la documentation, je pense. Je ne suis pas sûr des implications du nettoyage de ce dossier pour les dockers, mais nous pouvons leur demander.

Ce que je ne veux pas, c'est l'ajouter à l'outil, car il s'agit d'un détail d'implémentation de l'outil Docker et n'a rien à voir avec l'outil.

Cela dit, je ne pense pas que nous devions modifier le temps d'exécution ici tant que nous fournissons des détails sur ce qu'il faut faire si vous rencontrez cette situation dans la documentation. J'ai déposé https://github.com/aspnet/AspNetCore.Docs/issues/13927 pour le suivre.

Merci d'avoir élaboré.

L'ajout de ceci à la documentation aidera les gens à gagner du temps. Merci beaucoup!

Cette page vous a été utile?
0 / 5 - 0 notes