Aspnetcore: Host inacessível em https devido a cifra Http2 fraca

Criado em 31 mar. 2019  ·  75Comentários  ·  Fonte: dotnet/aspnetcore

Descreva o bug

O navegador não está satisfeito com a cifra usada para HTTP2 (eu acho)
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY e equivalente em cromo

Solução alternativa ruim

apenas para firefox
consegui entrar em about:config e desabilitar a verificação de cifragem fraca;

existe uma maneira simples de desativar completamente o HTTP2 por meio de um Kestrel IOptions<> ?

Reproduzir

Passos para reproduzir o comportamento:

  1. desinstalou TODOS os SDKs
  2. pasta removida de arquivos de programa / user / appdata / temp
  3. instale o SDK 2.2.105 e 3.0.0-preview3 de https://dot.net
  4. versão do ASP.NET Core: aquela fornecida com preview3
  5. dotnet new webapi -n foo
  6. comentar UseHsts
  7. comentar UseHttpsRedirection()
  8. dotnet run --project foo.csproj
  9. atingiu o http endpoint => funciona
  10. atingiu o https endpoint => rejeitado

Comportamento esperado

Eu tentei :

  • dotnet dev-certs http --clean
  • dotnet dev-certs http --trust
  • excluir .vs/
  • altere launchSettings.json para qualquer outra coisa
  • removido UseHttpsRedirection()
  • removido UseHsts()
  • não funciona para IP / dns no navegador

tenho certeza de que tudo que fiz foi atualizar o Vs2019, foi workign há 2 semanas no mesmo SDK (ou o insider win10 mais recente - atualização de anel 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

Comentários muito úteis

Há um erro de digitação em https://github.com/aspnet/AspNetCore/issues/8952#issuecomment -482499042, mas quando corrigido, funcionou:

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

Todos 75 comentários

Em qual sistema operacional está o servidor? Vimos isso em 2012 / Win8.

Você pode cancelar o HTTP / 2 usando estas opções:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#listenoptionsprotocols
Por exemplo:

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

Veja os requisitos de plataforma aqui:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#http2 -support

Windows 10 - Fast ring insider
Antevisão Vs2019
visualização do netcoreapp3.0.0
(monte de coisas de ponta ^^)

estava funcionando bem na semana passada. Foi atingido por um choque interno + visualização mais recente do vs2019 desde

também tentou adicionar 2 chaves de registro para desativar HTTP2 para o servidor Win2016.
não teve efeito em nenhum navegador

Essas chaves de registro são apenas para IIS / Http.Sys. Eu me pergunto se o Insiders tem uma regressão. @shirhatti

É uma maneira de permitir que o desenvolvedor saiba que está sendo executado em um servidor que pode ficar assim?

Por exemplo, uma cifra de listagem dotnet tool que pode ser usada na máquina / servidor atual com, por exemplo, cores para indicar cifra fraca em potencial e assim por diante.
Ou um booleano para tornar o servidor agressivo e failfast se a cifra listada for muito fraca no momento da inicialização.

Isso exigiria saber a lista de "aceitáveis" e eu realmente não tenho ideia se essa lista existe e se é possível

Levei muito tempo para perceber de onde estava vindo

Você pode fornecer o número específico de compilação do Windows?

Só adicionaríamos esse tipo de ferramenta se não pudéssemos mais dizer que funcionava em todas as compilações rtm win10.

A partir da atualização de 1803, o IIS permite que você controle o Http.Sys por ligação. Você não precisa mais desativar o HTTP / 2 para todo o servidor.

image

Dito isso, a chave de registro global ainda deve funcionar. Você pode compartilhar o seu número de compilação do Windows e eu vou olhar para ele

@shirhatti eles estão usando o Kestrel.

Opa 🤦‍♂️. Ignore meu comentário anterior.

Além disso, eu realmente não quero desativar o Http2 se ele puder ser corrigido;)

@Tratcher
isso ajuda?

> 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 Você pode nos fornecer um rastreamento do WireChark para que possamos ver exatamente o que está sendo negociado? Obrigado!

cc @anurse

Qual filtro eu usaria para extrair o que você está procurando, tenho certeza de que posso vazar dados que não quero também
Também tenho a dúvida de que realmente vejo algo:

  • Com o Chrome, não tenho logs de Kestrel
  • Com o Firefox, eu tenho isso:
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)

Eu acho que por agora vou continuar usando o Firefox para fazer uma captura, mas eu escolho opções ruins ao instalar Wirehark (muitas perguntas sobre loopback / wi-fi / admin etc ...) e posso ter opt_out de muitas opções

também tentei usar este filtro: tcp.port == 5043 (que supostamente é a porta Kestrel)
e eu não vejo nada

também eu não desativei o H2, tããão isso é normal:

(o valor arredondado duplo é um bônus)

image

@shirhatti

realmente gostaria de fazer uma captura do Wireshark
Estou usando um laptop (então Wifi) e usando localhost para kestrel
em um laptop que tem agora ~ 6-8 adaptador de rede

qual é a melhor maneira de ter uma captura limpa e bonita?

também qual filtro de captura devo usar para filtrar o que você precisa?

Posso reproduzir isso em 18356,21 e # 8409 também relata em 18362,1.

Observe que funciona no IE e no Edge, portanto, é um conflito entre as cifras que o Windows suporta e o que o Chrome suporta.

@Tratcher
Bem Chrome e Firefox
isso é um pouco desagradável

Provavelmente não é que o certificado [dev] em si seja inseguro, mas é compatível apenas com certos naipes de criptografia. ou seja, não acho que funcione com cifras EC. A negociação volta para cifras compatíveis com certificado e aparentemente não encontra uma que atenda aos requisitos HTTP / 2.

Comentário de @Tratcher no outro tópico

O que posso fazer para ajudar?

@tebeco Acho que temos o suficiente para continuar agora, obrigado.

Trazendo para preview5.

A solução, se possível, é usar o Vs.net e o IIS Express e depurar dessa forma, porque o certificado de desenvolvimento do IIS Express funciona corretamente mesmo em versões internas do Windows. Resolve o problema por enquanto para aqueles que acertam isso.

Outro ponto de dados: Testamos usando o cert do IIS Express no Kestrel e também funcionou, veremos o que precisa ser alterado com o cert do dev AspNetCore.

@Tratcher Você tem etapas para fazer isso? Seria uma ótima solução por enquanto. Ainda bem que funcionou!

@anurse você pode colar em sua amostra de código?

Sim. Pretendemos corrigir nosso dev cert para 3.0, mas como uma solução temporária, você pode usar o certificado de desenvolvimento IIS Express diretamente do Kestrel.

Isso só funciona no Windows (mas até agora o problema só foi relatado lá) e requer que você tenha o IIS Express instalado e configurado (instalar o VS é suficiente para isso). Na verdade, você não precisa usar o IIS Express para hospedar seu site , estamos apenas pegando emprestado seu certificado de desenvolvimento :).

Primeiro você precisa encontrar seu certificado IIS Express no armazenamento de certificados de usuário e obter a impressão digital. O seguinte script PowerShell fará o truque:

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

Depois de obter a impressão digital, você pode escrever um pequeno código em Program.cs para pegar esse certificado da loja e usá-lo para o 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 Awesome! Obrigado!

Precisamos atualizar nosso dev cert. @javiercn isso é algo que você pode olhar? O IIS Express Dev Cert no Win 10 18356 funciona bem, mas o nosso não. Tudo o que precisamos fazer é garantir que atendemos aos mesmos requisitos.

Isso é de alta prioridade para a visualização 5, pois o certificado dev está completamente corrompido no Windows 10 19H1.

cc @mkArtakMSFT

@anurse Tendo lido o problema, mas deve ser factível. Terei que avisar @blowdart, mas se estivermos apenas fazendo a chave para uma chave mais moderna, tudo bem. (Novamente, não li a edição, mas imagino que seja isso).

Esse é o meu entendimento. Como eu disse, sabemos que o certificado IIS Express está funcionando bem , só precisamos descobrir o que é diferente e aplicar essa alteração ao nosso certificado também :).

@shirhatti , você conhece alguém que saiba especificamente qual alteração foi feita no certificado do IIS? Pode ajudar a economizar alguns detalhes de certificação se soubéssemos as mudanças que foram feitas :)

Dei uma olhada nisso criando uma máquina com Windows 10, atualizando-a para a última compilação interna e instalando o vs (para que o IIS instale o certificado).

Não consegui ver nada no certificado. Alguém pode exportar um "certificado de trabalho" e compartilhá-lo comigo para que eu possa dar uma olhada nele? Eu só preciso da parte pública.

Certs.zip

Aqui estão os dois para que você possa comparar. Observe também que o certificado ASP.NET Core está no armazenamento pessoal do usuário atual e o certificado IIS Express está no armazenamento pessoal da máquina local, se for importante.

@anurse, eu dei uma olhada nisso. Os certificados são basicamente idênticos (com base nos certificados fornecidos por @ JohnGalt1717), mas por algumas coisas:

  • Restrições básicas: nós as colocamos, mas o IIS não. Eles não deveriam importar.
  • Uso de chave: nós apenas adicionamos criptografia de chave enquanto o IIS adiciona Assinatura Digital e criptografia de dados.

Minha teoria de trabalho é que o conjunto TLS sendo resolvido é diferente entre os dois. @Tratcher, você pode obter o pacote negociado para ambos os certificados? Por algum motivo, com nosso certificado, é provável que TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 não esteja sendo escolhido. (Que lê Eliptic Curve Diffie-Helman Ephemeral para troca de chaves, RSA para autenticação, AES128 Galois Counter Mode para criptografia).

Com base nisso, a solução provável é simplesmente adicionar a assinatura digital ao uso da chave. Dito isso, acho que vale a pena olhar para o conjunto padrão de suítes de criptografia usados ​​por Kestrel e IIS e compará-los, pois meu palpite é que Kestrel está fazendo o downgrade para algo inaceitável, portanto, alterar nosso certificado apenas colocará um band-aid no problema e não consertar corretamente.

@anurse O snippet do powershell abaixo criará um certificado https "compatível com aspnetcore" com a adição de assinatura digital. Tenho tentado reproduzir isso nas compilações internas do Win 10 e não consegui. Você pode pedir a alguém da equipe para experimentar?

Mais importante, acho que devemos revisar os conjuntos de criptografia oferecidos pelo IIS e 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>
}

Se você usou a compilação interna de ontem, é 20H1 e não 19H1. Você precisará fazer o anel de visualização de lançamento ou anel lento para obter a versão com o problema. (Talvez este seja um problema com o 19H1 agora final?)

Estou bem em adicionar esse EKU.

Eu reproduzi o problema agora mesmo, instalei o certificado atualizado de não será mais reproduzido com o

https://github.com/aspnet/AspNetCore/pull/9293/files PR foi lançado para atualizar o KU.

PR mesclado. Feche-o se achar que não há mais nada a tratar aqui

acabei de atualizar para 20H1 ontem
não tenho certeza de qual visualização 3.0.0-previewX conterá a mesclagem
você pode me esclarecer sobre isso? preview4 ou 5?
(posso testar um noturno, mas não estou disposto a usá-lo após o teste rápido)

Isso fará parte do preview5.

Se você correr

dotnet dev-certs http --clean

O script PowerShell acima e então

dotnet dev-certs http --trust

Deve desbloquear você.

Obrigado a todos. Isso agora foi corrigido e irei continuar a incluí-lo na versão Known issues do Preview5.

Há um erro de digitação em https://github.com/aspnet/AspNetCore/issues/8952#issuecomment -482499042, mas quando corrigido, funcionou:

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

Acabei de instalar o preview 6 e isso ainda aconteceu.
Relatórios do Chrome ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY .

Não instalei nenhuma visualização antes, apenas SDK 2.0 e superior.

Versão do SDK / Runtime: 3.0.100-preview6-012264 .

saída dotnet --info
SDK do .NET Core (refletindo qualquer global.json):
Versão: 3.0.100-preview6-012264
Commit: be3f0c1a03

Ambiente de execução:
Nome do SO: Windows
Versão do sistema operacional: 10.0.18362
Plataforma do sistema operacional: Windows
RID: win10-x64
Caminho de base: C: \ Arquivos de programas \ dotnet \ sdk3.0.100-preview6-012264 \

Host (útil para suporte):
Versão: 3.0.0-preview6-27804-01
Commit: fdf81c6faf

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

Tempos de execução do .NET Core instalados:
Microsoft.AspNetCore.All 2.1.4 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.5 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.6 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.7 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.8 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.9 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.11 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.0 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.1 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.2 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.3 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.5 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.4 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.5 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.6 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.7 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.8 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.9 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.11 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.0 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.1 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.2 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.3 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.5 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.0-preview6.19307.2 [C: \ Arquivos de programas \ dotnet \ sharedMicrosoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.4 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.5 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.6 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.7 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.8 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.9 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.11 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.0 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.1 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.2 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.3 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.5 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.0-preview6-27804-01 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.0.0-preview6-27804-01 [C: \ Arquivos de programas \ dotnet \ shared \ Microsoft.WindowsDesktop.App]

Pode estar relacionado a https://github.com/aspnet/AspNetCore/issues/11283 para mim.

@nphmuller

Você tentou executar os comandos a seguir com um ambiente de dotnet preview6?

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

É provável que você tenha um certificado antigo. Adicionamos lógica para atualizar o certificado, mas não tenho certeza se ele chegou ao preview6 ou estará disponível no preview7.

@javiercn
Eu tentei, como uma solução alternativa, mas --clean falhou. Criei https://github.com/aspnet/AspNetCore/issues/11283 para esse problema.

@nphmuller Qual sistema operacional você está usando?

Você pode abrir o gerenciador de certificados e limpá-los você mesmo (entendo que não é o ideal)
No Windows (Win + R) -> mmc -> digite -> (Ctrl + M (adicionar snap-in) -> Certificados -> Minha conta de usuário -> Certificados -> Pessoal -> Certificados -> Encontre aqueles com 'localhost '-> Remova aqueles que têm ASP.NET Core HTTPS ... .
Repita com os certificados em Autoridades de certificação raiz confiáveis
Execute novamente dotnet dev-certs https --trust

@javiercn
Aquele trabalho. Obrigado!
Estou no Win 10 1903 (18362,175) (também na saída dotnet --info , escrevi em meu comentário inicial)

Meu palpite seria, como você escreveu, que a lógica de atualização não chegou à visualização 6, mas estará na visualização 7.

@javiercn @nphmuller Eu tive o mesmo problema, tentei remover os certificados manualmente e recriá-los usando dotnet dev-certs https --trust . Funcionou, mas agora recebo um erro ERR_CERT_AUTHORITY_INVALID. Parece que o Kestrel ainda está usando o certificado antigo. Alguma ideia?

Você fechou e reabriu as janelas do navegador? Os navegadores armazenam certificados na memória, então você precisa fechar e abrir um novo navegador para que as alterações apareçam.

Sim, eu fiz. Eu também reiniciei meu computador agora. Não parece funcionar (tentei no Chrome, Firefox, Edge). Existe algum lugar onde o certificado pode ser armazenado em cache? Parece que o certificado é realmente o anterior.

Você usou o 3.0 SDK para gerar o certificado?

Acho que sim. dotnet --info saída 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

No windows também?

dotnet --info apenas liste os SDKs
você poderia ter sido afetado por um global.json nessa pasta ou em qualquer pasta pai
isso resultaria na regeneração do mesmo certificado antigo

tente limpar
verifique dotnet --version
então use o comando --trust

@javiercn O que você quer dizer? Estou no Windows. 🙂

@tebeco dotnet --version imprime 3.0.100-preview6-012264 também.

o problema é que você precisa ter certeza disso quando realmente executou aquele comando naquele momento

Eu realmente não posso acompanhar. O que eu deveria fazer? 😕

faça uma limpeza completa
não tenho ideia se é necessário reiniciar
em seguida, verifique o dotnet version antes de executar novamente o --trust one

Já fiz isso (algumas vezes) 🙂 - ainda sem sucesso.

Eu tenho um VS2019 Preview 16.2 Preview 2 recém-instalado e este é o primeiro núcleo ASP.NET com projeto Kestrel que executo e estou tendo o mesmo problema. Tentei os comandos clean / trust para atualizar o certificado sem nenhuma alteração.

dotnet --version
3.0.100-preview-010184

Este é um projeto vazio com .ConfigureKestrel () adicionado sem quaisquer alterações

@karaziox o 3.0.100-preview-010184 SDK é do 3.0.0-preview2, onde esse problema não foi corrigido até o preview6. Acesse https://dotnet.microsoft.com/download/dotnet-core/3.0 e instale o SDK 3.0.100-preview6-012264.

@javiercn O que você quer dizer? Estou no Windows. 🙂

@tebeco dotnet --version imprime 3.0.100-preview6-012264 também.

@Tratcher o problema ainda ocorre no preview6.

Acredito que a correção está no preview7, não no preview6. @jkotalik você pode confirmar?

Ainda é um problema para mim com dotnet 3.0.100-preview6-012264 e VS 16.2.0 Preview 3.0

IIS funciona bem com o aplicativo ASP.Net Core padrão, Kestrel falha com ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

@simonmurdock pode tentar regenerar manualmente o certificado na linha de comando com dotnet dev-certs https --clean e dotnet dev-certs https --trust . Alguns problemas foram resolvidos em relação à experiência do usuário que serão corrigidos na visualização7, mas o certificado deve funcionar se gerado novamente na visualização6.

Oi. O mesmo problema para mim 3.0.100-preview6-012264 (OS Win 8.1), instalei o VS2019 16.1.1. Verificado com dotnet new blazorhosted . Tentei limpar o certs (fechando o chrome 75.0.3770.100) com a ferramenta dotnet e confiando novamente, mas sem ajuda.

@vmandic HTTP / 2 não é compatível com Win8.1, você precisará desligá-lo.
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#http2 -support

@Tratcher provavelmente deveríamos desabilitar HTTP2 por padrão se rodando em Win7 ou Win8

@jkotalik abra um novo problema para triagem, por favor. Em teoria, ele pode funcionar no Win8.1, há apenas um problema com a ordem das cifras e a obtenção de um certificado que suporta algumas das cifras alternativas.

Como o problema ainda não foi resolvido quando instalei o Preview8 ontem, tentei executar dotnet dev-certs https --clean e dotnet dev-certs https --trust novamente, sem sucesso.

Descobri que o Kestrel ainda estava usando um certificado antigo e desatualizado, mas não consegui localizar o referido certificado no gerenciador de certificados do Windows. Acontece que os certificados estão armazenados em cache aqui: C:\Users\<user>\AppData\Roaming\ASP.NET\Https . Havia três arquivos * .pfx, um dos quais obviamente ainda era usado por Kestrel.

Levei literalmente horas para encontrar isso. Eu já esperava que os certificados fossem armazenados em cache, mas não consegui encontrar em algum lugar da documentação. Isso realmente precisa ser documentado, por favor.

Imagino que seja porque você está usando contêineres docker. Esse é o local onde docker exporta o certificado para importá-lo para o contêiner.

@anurse , poderíamos adicionar isso aos documentos, eu acho. Não tenho certeza das implicações da limpeza desta pasta para o pessoal do docker, mas podemos perguntar a eles.

O que eu não quero é adicionar isso à ferramenta, pois é um detalhe de implementação de ferramenta de encaixe e não tem nada a ver com a ferramenta.

Dito isso, não acho que precisamos alterar o tempo de execução aqui, desde que forneçamos detalhes sobre o que fazer se você se deparar com essa situação nos documentos. Eu preenchi https://github.com/aspnet/AspNetCore.Docs/issues/13927 para rastreá-lo.

Obrigado por elaborar.

Adicionar isso à documentação ajudará as pessoas a economizar tempo. Muito obrigado!

Esta página foi útil?
0 / 5 - 0 avaliações