Aspnetcore: Host inaccesible en https debido a un cifrado Http2 débil

Creado en 31 mar. 2019  ·  75Comentarios  ·  Fuente: dotnet/aspnetcore

Describe el error

El navegador no está satisfecho con el cifrado utilizado para HTTP2 (supongo)
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY y equivalente en Chrome

Solución incorrecta

solo para firefox
Me las arreglé para entrar about:config y deshabilitar la verificación de cifrado débil, esto en realidad tiene un efecto

¿Existe una forma sencilla de deshabilitar completamente HTTP2 a través de un Kestrel IOptions<> ?

Reproducir

Pasos para reproducir el comportamiento:

  1. desinstalado TODOS los sdk
  2. carpeta eliminada de los archivos de programa / usuario / appdata / temp
  3. instalar sdk 2.2.105 y 3.0.0-preview3 desde https://dot.net
  4. versión de ASP.NET Core: la que se envía con preview3
  5. dotnet new webapi -n foo
  6. comentar UseHsts
  7. comentar UseHttpsRedirection()
  8. dotnet run --project foo.csproj
  9. golpee el http endpoint => funciona
  10. golpee el https punto final => rechazado

Comportamiento esperado

lo intenté :

  • dotnet dev-certs http --clean
  • dotnet dev-certs http --trust
  • eliminar .vs/
  • cambiar launchSettings.json por cualquier otra cosa
  • eliminado UseHttpsRedirection()
  • eliminado UseHsts()
  • no funciona para IP / dns en el navegador

Estoy bastante seguro de que todo lo que hice fue actualizar Vs2019, estaba funcionando hace 2 semanas en el mismo SDK (o la última información privilegiada de win10 - actualización de anillo rápido)

>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

Comentario más útil

Hay un error tipográfico en https://github.com/aspnet/AspNetCore/issues/8952#issuecomment -482499042, pero cuando se corrigió, funcionó:

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

Todos 75 comentarios

¿En qué sistema operativo está el servidor? Hemos visto esto en 2012 / Win8.

Puede optar por no usar HTTP / 2 usando estas opciones:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#listenoptionsprotocols
P.ej:

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

Consulte los requisitos de la plataforma aquí:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#http2 -support

Windows 10: información privilegiada de anillo rápido
Vista previa de vs2019
netcoreapp3.0.0 vista previa
(montón de cosas de borde ^^)

estaba funcionando bien la semana pasada. Fue golpeado por un golpe de información privilegiada + la última vista previa de vs2019 desde

También intenté agregar 2 claves de registro para deshabilitar HTTP2 para el servidor Win2016.
no tuvo ningún efecto en ningún navegador

Esas claves de registro son solo para IIS / Http.Sys. Me pregunto si Insiders tiene una regresión. @shirhatti

¿Es una forma de hacerle saber al desarrollador que se está ejecutando en un servidor que puede terminar así?

Por ejemplo, un cifrado de listado dotnet tool que se puede usar en la máquina / servidor actual con, por ejemplo, colores para indicar un cifrado débil potencial y así sucesivamente.
O un booleano para hacer que el servidor sea agresivo y sin fallas si el cifrado enumerado es demasiado débil en el momento del inicio.

Esto requeriría conocer la lista de los "aceptables" y realmente no tengo idea de si existe tal lista y si es posible en absoluto.

me tomó mucho tiempo darme cuenta de dónde venía

¿Puede dar el número de compilación de Windows específico?

Solo agregaríamos este tipo de herramientas si ya no pudiéramos decir que funcionó en todas las compilaciones de rtm win10.

A partir de la actualización de 1803, IIS le permite controlar Http.Sys por enlace. Ya no necesita deshabilitar HTTP / 2 para todo el servidor.

image

Dicho esto, la clave de registro global aún debería funcionar. ¿Puedes compartir tu número de compilación de Windows y lo investigaré?

@shirhatti están usando Kestrel.

Ups 🤦‍♂️. Ignora mi comentario anterior.

también realmente no quiero deshabilitar Http2 si se puede arreglar;)

@Tratcher
esto ayuda?

> 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 ¿Puede proporcionarnos un rastreo de wirehark para que podamos ver exactamente lo que se está negociando? ¡Gracias!

cc @anurse

¿Qué filtro usaría para extraer lo que está buscando? Estoy bastante seguro de que puedo filtrar datos que no quiero
También tengo una duda de que realmente veo algo:

  • Con Chrome no tengo registros de Kestrel
  • Con Firefox obtuve esto:
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)

Supongo que, por ahora, seguiré usando Firefox para hacer una captura, pero elijo malas opciones al instalar Wireshark (muchas preguntas sobre loopback / wifi / admin, etc.) y es posible que tenga opt_out de demasiadas opciones.

también intenté usar este filtro: tcp.port == 5043 (que se supone que es el puerto de Kestrel)
y no veo nada

También no lo hice sí desactivado H2, así que eso es normal:

(el valor doble redondeado es una ventaja)

image

@shirhatti

realmente me gustaría hacer una captura de Wireshark
Estoy usando una computadora portátil (entonces Wifi) y usando localhost para kestrel
en una computadora portátil que ahora tiene ~ 6-8 adaptador de red

¿Cuál es la mejor manera de tener una captura limpia y agradable?

también, ¿qué filtro de captura debo usar para filtrar lo que necesita?

Puedo reproducir esto en 18356.21 y # 8409 también lo informa en 18362.1.

Tenga en cuenta que funciona en IE y Edge, por lo que se trata de un conflicto entre lo que admite Windows y lo que admite Chrome.

@Tratcher
Bueno, Chrome y Firefox
eso es un poco desagradable

No es probable que el certificado [dev] en sí sea inseguro, sino que solo sea compatible con ciertos conjuntos de cifrado. es decir, no creo que funcione con cifrados EC. La negociación recurre a cifrados compatibles con cert y aparentemente no encuentra uno que cumpla con los requisitos de HTTP / 2.

Comentario de del otro hilo

Que puedo hacer para ayudar ?

@tebeco Creo que ya tenemos suficiente para continuar, gracias.

Llevando a la vista previa 5.

La solución, si puede, es usar Vs.net e IIS Express y depurar de esa manera porque el certificado de desarrollo de IIS Express funciona correctamente incluso en versiones internas de Windows. Resuelve el problema por ahora para aquellos que lo golpean.

Otro punto de datos: probamos con el certificado de IIS Express en Kestrel y también funcionó, veremos qué debe cambiar con el certificado de desarrollo de AspNetCore.

@Tratcher ¿Tienes pasos para hacerlo? Sería una buena solución por ahora. ¡Me alegro de que haya funcionado!

@anurse, ¿puedes pegar tu muestra de código?

Sí. Tenemos la intención de arreglar nuestro certificado de desarrollo para 3.0, pero como solución temporal, puede usar el certificado de desarrollo de IIS Express directamente de Kestrel.

Esto solo funciona en Windows (pero hasta ahora el problema solo se ha informado allí) y requiere que tenga IIS Express instalado y configurado (instalar VS es suficiente para esto). En realidad, no tiene que usar IIS Express para alojar su sitio , solo estamos tomando prestado su certificado de desarrollo :).

Primero debe encontrar su certificado IIS Express en el almacén de certificados de usuario y obtener la huella digital. El siguiente script de PowerShell hará el truco:

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

Una vez que tenga la huella digital, puede escribir un pequeño código en Program.cs para sacar ese certificado de la tienda y usarlo para 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 ¡Impresionante! ¡Gracias!

Necesitamos actualizar nuestro certificado de desarrollo. @javiercn ¿ es algo que puedes mirar? El IIS Express Dev Cert en Win 10 18356 funciona bien, pero el nuestro no. Todo lo que tenemos que hacer es asegurarnos de cumplir los mismos requisitos.

Esto es de alta prioridad para la versión preliminar 5, ya que el certificado de desarrollo está completamente roto en Windows 10 19H1.

cc @mkArtakMSFT

@anurse Habiendo leído el problema, pero debería ser factible. Tendremos que informar a @blowdart, pero si solo estamos creando la clave para una clave más moderna, debería estar bien. (De nuevo, no he leído el tema, pero imagino que es eso).

Ese es mi entendimiento. Como dije, sabemos que el certificado IIS Express lo está haciendo bien , solo tenemos que averiguar qué es diferente y aplicar ese cambio a nuestro certificado también :).

@shirhatti , ¿conoce a alguien que sepa específicamente qué cambio se realizó en el certificado IIS? Podría ayudar a ahorrar un poco de buceo en los detalles del certificado si supiéramos los cambios que se realizaron :)

He echado un vistazo a esto creando una máquina con Windows 10, actualizándola a la última versión de información privilegiada e instalando vs (para que IIS instale el certificado).

No he podido ver nada en el certificado. ¿Alguien puede exportar un "certificado de trabajo" y compartirlo conmigo para que pueda echarle un vistazo? Solo necesito la parte pública.

Certificados.zip

Aquí tienes los dos para que puedas comparar. También tenga en cuenta que el certificado ASP.NET Core está en la tienda personal del usuario actual y el certificado IIS Express está en la tienda personal de la máquina local si es importante.

@anurse He echado un vistazo a esto. Los certificados son principalmente idénticos (basados ​​en los certificados proporcionados por @ JohnGalt1717) pero por un par de cosas:

  • Restricciones básicas: las incluimos, IIS no. No deberían importar.
  • Uso de claves: solo agregamos cifrado de claves, mientras que IIS sí agrega cifrado de datos y firma digital.

Mi teoría de trabajo es que la suite TLS que se está resolviendo es diferente entre las dos. @Tratcher, ¿ puede obtener la suite negociada para ambos certificados? Por alguna razón, con nuestro certificado, es probable que TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 no esté siendo atacado. (Eso dice Eliptic Curve Diffie-Helman Ephemeral para intercambio de claves, RSA para autenticación, AES128 Galois Counter Mode para cifrado).

En base a esto, la solución probable es simplemente agregar Firma digital al uso de la clave. Dicho esto, creo que justifica mirar el conjunto predeterminado de conjuntos de cifrado utilizados por Kestrel e IIS y compararlos, ya que supongo que Kestrel se está degradando a algo inaceptable, por lo que cambiar nuestro certificado solo resolverá el problema con una curita. y no arreglarlo correctamente.

@anurse El siguiente fragmento de powershell creará un certificado https "compatible con aspnetcore" con la adición de la firma digital. He estado tratando de reproducir esto en las compilaciones internas de Win 10 y no he podido. ¿Puedes conseguir que alguien del equipo lo pruebe?

Más importante aún, creo que deberíamos revisar los conjuntos de cifrado que ofrecen IIS y 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 usó la compilación de información privilegiada de ayer, eso es 20H1, no 19H1. Deberá hacer el anillo de vista previa de lanzamiento o el anillo lento para obtener la versión con el problema. (¿Quizás esto sea un problema con el 19H1 ahora final?)

Estoy de acuerdo con agregar ese EKU.

Reprodé el problema en este momento, luego instalé el certificado actualizado de cambié y el problema ya no se repros con el

https://github.com/aspnet/AspNetCore/pull/9293/files PR está disponible para actualizar la KU.

PR se fusionó. Ciérrelo si siente que no hay nada más que abordar aquí

Acabo de actualizar a 20H1 ayer
No estoy seguro de qué vista previa 3.0.0-previewX contendrá la combinación
¿Puedes iluminarme sobre eso? vista previa 4 o 5?
(Puedo probar una noche a la mañana, pero no quiero usarla después de la prueba rápida)

Esto será parte de preview5.

Si tu corres

dotnet dev-certs http --clean

El script de powershell arriba y luego

dotnet dev-certs http --trust

Debería desbloquearte.

Gracias a todos. Esto ahora está arreglado y haré un seguimiento con respecto a incluirlo en el Known issues para la versión Preview5.

Hay un error tipográfico en https://github.com/aspnet/AspNetCore/issues/8952#issuecomment -482499042, pero cuando se corrigió, funcionó:

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

Acabo de instalar la vista previa 6 y esto aún sucede.
Chrome informa ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY .

No he instalado ninguna vista previa antes, solo SDK 2.0 en adelante.

Versión SDK / Runtime: 3.0.100-preview6-012264 .

dotnet - salida de info
.NET Core SDK (que refleja cualquier archivo global.json):
Versión: 3.0.100-preview6-012264
Confirmar: be3f0c1a03

Entorno de ejecución:
Nombre del sistema operativo: Windows
Versión del SO: 10.0.18362
Plataforma del sistema operativo: Windows
RID: win10-x64
Ruta base: C: \ Archivos de programa \ dotnet \ sdk3.0.100-preview6-012264 \

Anfitrión (útil para soporte):
Versión: 3.0.0-preview6-27804-01
Comprometerse: fdf81c6faf

SDK de .NET Core instalados:
2.1.402 [C: \ Archivos de programa \ dotnet \ sdk]
2.1.403 [C: \ Archivos de programa \ dotnet \ sdk]
2.1.500 [C: \ Archivos de programa \ dotnet \ sdk]
2.1.502 [C: \ Archivos de programa \ dotnet \ sdk]
2.1.503 [C: \ Archivos de programa \ dotnet \ sdk]
2.1.504 [C: \ Archivos de programa \ dotnet \ sdk]
2.1.505 [C: \ Archivos de programa \ dotnet \ sdk]
2.1.507 [C: \ Archivos de programa \ dotnet \ sdk]
2.1.600 [C: \ Archivos de programa \ dotnet \ sdk]
2.1.601 [C: \ Archivos de programa \ dotnet \ sdk]
2.1.602 [C: \ Archivos de programa \ dotnet \ sdk]
2.1.604 [C: \ Archivos de programa \ dotnet \ sdk]
2.1.700 [C: \ Archivos de programa \ dotnet \ sdk]
2.1.800-preview-009696 [C: \ Archivos de programa \ dotnet \ sdk]
2.2.100 [C: \ Archivos de programa \ dotnet \ sdk]
2.2.102 [C: \ Archivos de programa \ dotnet \ sdk]
2.2.104 [C: \ Archivos de programa \ dotnet \ sdk]
2.2.202 [C: \ Archivos de programa \ dotnet \ sdk]
2.2.204 [C: \ Archivos de programa \ dotnet \ sdk]
2.2.300 [C: \ Archivos de programa \ dotnet \ sdk]
3.0.100-preview6-012264 [C: \ Archivos de programa \ dotnet \ sdk]

Tiempos de ejecución de .NET Core instalados:
Microsoft.AspNetCore.All 2.1.4 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.5 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.6 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.7 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.8 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.9 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.11 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.0 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.1 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.2 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.3 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.5 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.4 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.5 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.6 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.7 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.8 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.9 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.11 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.0 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.1 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.2 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.3 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.5 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.0-preview6.19307.2 [C: \ Archivos de programa \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.4 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.5 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.6 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.7 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.8 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.9 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.11 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.0 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.1 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.2 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.3 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.5 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.0-preview6-27804-01 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.0.0-preview6-27804-01 [C: \ Archivos de programa \ dotnet \ shared \ Microsoft.WindowsDesktop.App]

Podría estar relacionado con https://github.com/aspnet/AspNetCore/issues/11283 para mí.

@nphmuller

¿Intentó ejecutar los siguientes comandos con un entorno dotnet de preview6?

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

Es probable que tenga un certificado antiguo. Agregamos lógica para actualizar el certificado, pero no estoy seguro de si llegó a la vista previa6 o si estará disponible en la vista previa7.

@javiercn
Lo intenté, como solución, pero --clean falla. Creé https://github.com/aspnet/AspNetCore/issues/11283 para este problema.

@nphmuller ¿Qué sistema operativo estás usando?

Puede abrir el administrador de certificados y limpiar los certificados usted mismo (entiendo que esto no es ideal)
En Windows (Win + R) -> mmc -> ingrese -> (Ctrl + M (agregar complemento) -> Certificados -> Mi cuenta de usuario -> Certificados -> Personal -> Certificados -> Encuentre los que tienen 'localhost '-> Elimina los que tienen ASP.NET Core HTTPS ... .
Repita con los certificados en las autoridades de certificación raíz de confianza
Vuelva a ejecutar dotnet dev-certs https --trust

@javiercn
Ese trabajo. ¡Gracias!
Estoy en Win 10 1903 (18362.175) (También en la salida dotnet --info , escribí en mi comentario inicial)

Supongo que, como escribió, la lógica de actualización no llegó a la versión preliminar 6, pero estará en la versión preliminar 7.

@javiercn @nphmuller Tuve el mismo problema, intenté eliminar los certificados manualmente y volver a crearlos usando dotnet dev-certs https --trust . Eso funcionó, pero ahora aparece un error ERR_CERT_AUTHORITY_INVALID. Parece que Kestrel todavía está usando el certificado anterior. ¿Algunas ideas?

¿Cerró y volvió a abrir las ventanas de su navegador? Los navegadores guardan en caché los certificados en la memoria, por lo que debe cerrar y abrir un nuevo navegador para que aparezcan los cambios.

Sí, lo hice. También reinicié mi computadora ahora mismo. No parece funcionar (probado en Chrome, Firefox, Edge). ¿Existe algún lugar donde el certificado pueda almacenarse en caché? Parece que el certificado es el anterior.

¿Usó el SDK 3.0 para generar el certificado?

Sí, eso creo. dotnet --info salida de @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

¿También en Windows?

dotnet --info solo enumera los sdks
podría haber sido afectado por un archivo global.json en esa carpeta o en cualquier carpeta principal
que daría como resultado la regeneración del mismo certificado antiguo

prueba una limpieza
cheque dotnet --version
luego use el comando --trust

@javiercn ¿A qué te refieres? Estoy en Windows. 🙂

@tebeco dotnet --version imprime 3.0.100-preview6-012264 también.

el problema es que debes estar seguro de eso cuando realmente ejecutaste ese comando en ese momento

Realmente no puedo seguirlo. ¿Que se supone que haga? 😕

hacer una limpieza completa
no tengo idea si es necesario reiniciar
luego verifique el dotnet version antes de volver a ejecutar el --trust one

Eso es lo que ya hice (algunas veces) 🙂 - todavía no tuve éxito.

Tengo un VS2019 Preview 16.2 Preview 2 recién instalado y este es el primer núcleo ASP.NET con el proyecto Kestrel que ejecuto y estoy teniendo el mismo problema. Probé los comandos clean / trust para actualizar el certificado sin cambios.

dotnet --version
3.0.100-vista previa-010184

Este es un proyecto vacío con .ConfigureKestrel () agregado sin ningún cambio

@karaziox, el SDK 3.0.100-preview-010184 es de 3.0.0-preview2, donde este problema no se solucionó hasta la vista previa6. Vaya a https://dotnet.microsoft.com/download/dotnet-core/3.0 e instale SDK 3.0.100-preview6-012264.

@javiercn ¿A qué te refieres? Estoy en Windows. 🙂

@tebeco dotnet --version imprime 3.0.100-preview6-012264 también.

@Tratcher el problema todavía ocurre en la vista previa 6.

Creo que la solución está en Preview7, no en Preview6. @jkotalik ¿puedes confirmar?

Sigue siendo un problema para mí con dotnet 3.0.100-preview6-012264 y VS 16.2.0 Preview 3.0

IIS funciona bien con la aplicación ASP.Net Core predeterminada, Kestrel falla con ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

@simonmurdock ¿ puede intentar regenerar manualmente el certificado en la línea de comando con dotnet dev-certs https --clean y dotnet dev-certs https --trust ? Se resolvieron algunos problemas relacionados con la experiencia del usuario que se solucionarán en la vista previa7, pero el certificado debería funcionar si se vuelve a generar en la vista previa6.

Hola. El mismo problema para mí 3.0.100-preview6-012264 (OS Win 8.1), he instalado VS2019 16.1.1. Verificado con dotnet new blazorhosted . Intenté limpiar los certificados (cerrando Chrome 75.0.3770.100) con la herramienta dotnet y confiando nuevamente pero sin ayuda.

@vmandic HTTP / 2 no es compatible con Win8.1, deberá desactivarlo.
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#http2 -support

@Tratcher probablemente deberíamos deshabilitar HTTP2 de forma predeterminada si se ejecuta en Win7 o Win8

@jkotalik abre una nueva edición para la clasificación, por favor. En teoría, puede funcionar en Win8.1, solo hay un problema con el pedido de cifrado y la obtención de un certificado que admita algunos de los cifrados alternativos.

Como el problema aún no se resolvió cuando instalé Preview8 ayer, intenté ejecutar tanto dotnet dev-certs https --clean como dotnet dev-certs https --trust nuevamente, sin éxito.

Descubrí que Kestrel todavía estaba usando un certificado antiguo y desactualizado, pero no pude ubicar dicho certificado en el administrador de certificados de Windows. Resulta que los certificados se almacenan en caché aquí: C:\Users\<user>\AppData\Roaming\ASP.NET\Https . Había tres archivos * .pfx, uno de los cuales obviamente todavía lo usaba Kestrel.

Me tomó literalmente horas encontrar esto. Ya esperaba que los certificados se almacenan en caché, pero no pude encontrarlo en algún lugar de la documentación. Esto realmente necesita ser documentado, por favor.

Me imagino que es porque estás usando contenedores Docker. Esa es la ubicación donde Docker exporta el certificado para importarlo al contenedor.

@anurse , podríamos agregar esto a los documentos, creo. No estoy seguro de las implicaciones que tiene la limpieza de esta carpeta para la gente de la ventana acoplable, pero podemos preguntarles.

Lo que no quiero es agregar esto a la herramienta, ya que es un detalle de implementación de herramientas de la ventana acoplable y no tiene nada que ver con la herramienta.

Dicho esto, no creo que debamos cambiar el tiempo de ejecución aquí siempre que proporcionemos detalles sobre qué hacer si se encuentra con esta situación en los documentos. Presenté https://github.com/aspnet/AspNetCore.Docs/issues/13927 para rastrearlo.

Gracias por elaborar.

Agregar esto a la documentación ayudará a la gente a ahorrar algo de tiempo. ¡Muchas gracias!

¿Fue útil esta página
0 / 5 - 0 calificaciones