Aspnetcore: Host tidak dapat dijangkau di https karena penyandian Http2 yang lemah

Dibuat pada 31 Mar 2019  ·  75Komentar  ·  Sumber: dotnet/aspnetcore

Jelaskan bugnya

Browser tidak senang dengan sandi yang digunakan untuk HTTP2 (sepertinya)
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY dan yang setara di chrome

Solusi Buruk

hanya untuk firefox
saya berhasil masuk about:config dan menonaktifkan cek cypher lemah ini sebenarnya memiliki efek

adakah cara sederhana untuk sepenuhnya menonaktifkan HTTP2 melalui Kestrel IOptions<> ?

Untuk Mereproduksi

Langkah-langkah untuk mereproduksi perilaku:

  1. menghapus SEMUA sdk
  2. folder yang dihapus dari file program / pengguna / appdata / temp
  3. instal sdk 2.2.105 dan 3.0.0-preview3 dari https://dot.net
  4. versi ASP.NET Core: yang dikirimkan dengan preview3
  5. dotnet new webapi -n foo
  6. beri komentar UseHsts
  7. beri komentar UseHttpsRedirection()
  8. dotnet run --project foo.csproj
  9. tekan http endpoint => bekerja
  10. tekan https endpoint => ditolak

Perilaku yang diharapkan

saya mencoba untuk :

  • dotnet dev-certs http --clean
  • dotnet dev-certs http --trust
  • hapus .vs/
  • ubah launchSettings.json ke yang lain
  • menghapus UseHttpsRedirection()
  • menghapus UseHsts()
  • tidak berfungsi untuk IP / dns di browser

cukup yakin yang saya lakukan hanyalah memperbarui Vs2019, itu berfungsi 2 minggu yang lalu pada SDK yang sama (atau win10 insider terbaru - pembaruan cincin cepat)

>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

Komentar yang paling membantu

Ada kesalahan ketik di https://github.com/aspnet/AspNetCore/issues/8952#issuecomment -482499042, tetapi ketika diperbaiki, ini berfungsi:

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

Semua 75 komentar

Di OS apa server itu? Kami telah melihat ini di 2012 / Win8.

Anda dapat memilih keluar dari HTTP / 2 menggunakan opsi berikut:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#listenoptionsprotocols
Misalnya:

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

Lihat persyaratan platform di sini:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#http2 -support

Windows 10 - Orang dalam dering cepat
Pratinjau Vs2019
pratinjau netcoreapp3.0.0
(banyak hal tepi ^^)

bekerja dengan baik minggu lalu. Terpukul oleh benjolan orang dalam + pratinjau terbaru vs2019 sejak itu

juga mencoba menambahkan 2 kunci registri untuk menonaktifkan HTTP2 untuk server Win2016.
itu tidak berpengaruh pada browser manapun

Kunci reg tersebut hanya untuk IIS / Http.Sys. Saya ingin tahu apakah Insiders memiliki regresi. @tokopedia

Apakah ini cara untuk memberi tahu pengembang bahwa mereka berjalan di server yang mungkin berakhir seperti ini?

Misalnya kode sandi dotnet tool yang dapat digunakan pada mesin / server saat ini dengan, misalnya warna untuk menunjukkan potensi sandi lemah dan sebagainya.
Atau boolean untuk membuat server agresif dan cepat gagal jika cipher yang terdaftar terlalu lemah pada saat startup.

Ini akan diperlukan untuk mengetahui daftar yang "dapat diterima" dan saya benar-benar tidak tahu apakah daftar seperti itu ada dan apakah itu mungkin sama sekali

butuh waktu lama bagi saya untuk menyadari dari mana asalnya

Bisakah Anda memberikan nomor build windows tertentu?

Kami hanya akan menambahkan perkakas semacam ini jika kami tidak dapat lagi mengatakan bahwa itu berfungsi pada semua rtm win10 build.

Pada pemutakhiran 1803, IIS memungkinkan Anda untuk mengontrol Http.Sys secara per pengikatan. Anda tidak perlu lagi menonaktifkan HTTP / 2 untuk seluruh server.

image

Meskipun demikian, kunci registrasi global tetap berfungsi. Dapatkah Anda membagikan nomor build Windows Anda dan saya akan memeriksanya

@shirhatti mereka menggunakan Kestrel.

Ups 🤦‍♂️. Abaikan komentar saya sebelumnya.

juga saya benar-benar tidak ingin menonaktifkan Http2 jika bisa diperbaiki;)

@Tokopedia
apakah ini membantu?

> 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 Dapatkah Anda memberi kami jejak wireshark sehingga kami dapat melihat dengan tepat apa yang sedang dinegosiasikan? Terima kasih!

cc @anur

Filter apa yang akan saya gunakan untuk mengekstrak apa yang Anda cari, cukup yakin saya bisa membocorkan data yang tidak saya inginkan juga
Juga saya ragu saya benar-benar melihat sesuatu:

  • Dengan chrome saya tidak memiliki log out dari Kestrel
  • Dengan Firefox saya mendapatkan ini:
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)

Saya rasa untuk saat ini saya akan terus menggunakan Firefox untuk melakukan penangkapan tetapi saya memilih opsi yang buruk ketika menginstal wireshark (banyak pertanyaan tentang loopback / wifi / admin dll ...) dan saya mungkin memiliki opt_out dari terlalu banyak opsi

juga saya mencoba menggunakan filter ini: tcp.port == 5043 (yang seharusnya menjadi port Kestrel)
dan saya tidak melihat apa-apa

juga saya tidak ya menonaktifkan H2, soooo apakah itu normal:

(nilai bulat ganda adalah bonus)

image

@tokopedia

benar-benar ingin melakukan penangkapan Wireshark
Saya menggunakan laptop (jadi Wifi) dan menggunakan localhost untuk kestrel
pada laptop yang sekarang memiliki ~ 6-8 Network adapter

apa cara terbaik untuk mendapatkan hasil foto yang bersih dan bagus?

juga filter menangkap apa yang harus saya gunakan untuk memfilter apa yang Anda butuhkan?

Saya dapat mereproduksi ini pada 18356.21 dan # 8409 juga melaporkannya pada 18362.1.

Perhatikan bahwa ini berfungsi di IE dan Edge jadi ini adalah konflik dari cipher yang didukung Windows vs apa yang didukung Chrome.

@Tokopedia
Baik Chrome dan Firefox
itu agak buruk

Sepertinya bukan sertifikat [dev] itu sendiri tidak aman, tetapi hanya kompatibel dengan setelan sandi tertentu. yaitu saya tidak berpikir ini bekerja dengan kode sandi EC. Negosiasi kembali ke cipher yang kompatibel dan tampaknya tidak menemukan satu pun yang memenuhi persyaratan HTTP / 2.

Komentar @Tratcher dari utas lainnya

Apa yang saya bisa bantu ?

@tebeco Saya pikir kita punya cukup untuk melanjutkan sekarang, terima kasih.

Membawa ke pratinjau5.

Solusinya, jika Anda bisa, adalah dengan menggunakan Vs.net dan IIS Express dan debug seperti itu karena sertifikat dev IIS Express bekerja dengan benar bahkan pada rilis orang dalam windows. Memecahkan masalah untuk saat ini bagi mereka yang melakukan ini.

Titik data lain: Kami menguji menggunakan sertifikat IIS Express di Kestrel dan juga berhasil, kami akan melihat apa yang perlu diubah dengan sertifikat pengembang AspNetCore.

@ Pencakar Apakah Anda memiliki langkah untuk melakukannya? Akan menjadi solusi yang manis untuk saat ini. Senang berhasil!

@anurse dapatkah Anda menempelkan dalam contoh kode Anda?

Ya. Kami bermaksud untuk memperbaiki sertifikat dev kami untuk 3.0, tetapi sebagai solusi sementara Anda dapat menggunakan sertifikat pengembangan IIS Express langsung dari Kestrel.

Ini hanya berfungsi di Windows (tetapi sejauh ini masalahnya hanya dilaporkan di sana), dan mengharuskan Anda menginstal dan mengonfigurasi IIS Express (menginstal VS cukup untuk ini). Anda sebenarnya tidak harus menggunakan IIS Express untuk menghosting situs Anda , kami hanya meminjam sertifikat pengembangannya :).

Pertama, Anda perlu menemukan sertifikat IIS Express Anda di penyimpanan sertifikat pengguna dan mendapatkan cap jempol. Skrip PowerShell followng akan melakukan trik:

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

Setelah Anda mendapatkan cap jempol, Anda dapat menulis sedikit kode di Program.cs untuk mengambil sertifikat itu dari toko dan menggunakannya untuk 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 Luar

Kami perlu memperbarui sertifikat dev kami. @javiercn adalah sesuatu yang dapat Anda lihat? IIS Express Dev Cert di Win 10 18356 berfungsi dengan baik, tetapi milik kami tidak. Yang perlu kita lakukan adalah memastikan bahwa kita memenuhi persyaratan yang sama.

Ini adalah prioritas tinggi untuk pratinjau 5 karena sertifikat dev benar-benar rusak di Windows 10 19H1.

cc @ mr

@anurse Setelah membaca masalah ini, tetapi harus bisa dilakukan. Harus memberi tahu

Itulah pemahaman saya. Seperti yang saya katakan, kami tahu sertifikat IIS Express melakukannya dengan benar , kami hanya perlu mencari tahu apa yang berbeda dan menerapkan perubahan itu ke sertifikat kami juga :).

@shirhatti Apakah Anda kenal seseorang yang mengetahui secara spesifik perubahan apa yang dibuat dalam sertifikat IIS? Mungkin membantu menyimpan beberapa menyelam ke detail sertifikat jika kami hanya tahu perubahan yang dibuat :)

Saya telah melihat ini dengan membuat mesin windows 10, memperbaruinya ke insider build terbaru dan menginstal vs (sehingga IIS menginstal sertifikat).

Saya belum bisa melihat apa pun di sertifikat. Adakah yang bisa mengekspor "sertifikat yang berfungsi" dan membaginya dengan saya sehingga saya dapat melihatnya? Saya hanya butuh bagian publik.

Certs.zip

Ini keduanya agar Anda bisa membandingkan. Perhatikan juga bahwa sertifikat Inti ASP.NET ada di penyimpanan pribadi pengguna saat ini dan sertifikat IIS Express ada di penyimpanan Pribadi mesin lokal jika itu penting.

@anurse Saya sudah melihat ini. Sertifikat pada dasarnya identik (berdasarkan sertifikat yang disediakan oleh @ JohnGalt1717) tetapi untuk beberapa hal:

  • Batasan dasar: Kami memasukkannya, IIS tidak. Mereka seharusnya tidak peduli.
  • Penggunaan kunci: Kami hanya menambahkan penyandian kunci sementara IIS menambahkan Tanda Tangan Digital dan penyandian Data.

Teori kerja saya adalah bahwa rangkaian TLS yang sedang diselesaikan berbeda di antara keduanya. @ Pencakar, bisakah Anda mendapatkan suite yang dinegosiasikan untuk kedua sertifikat? Untuk beberapa alasan, dengan sertifikat kami, kemungkinan TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 tidak dipilih. (Itu bertuliskan Eliptic Curve Diffie-Helman Ephemeral untuk pertukaran kunci, RSA untuk otentikasi, AES128 Galois Counter Mode untuk enkripsi).

Berdasarkan ini, solusi yang mungkin dilakukan adalah dengan menambahkan Tanda Tangan Digital ke penggunaan kunci. Yang mengatakan, saya pikir itu perlu melihat set default cipher suite yang digunakan oleh Kestrel dan IIS dan membandingkannya, karena tebakan saya adalah bahwa Kestrel menurunkan versi ke sesuatu yang tidak dapat diterima, jadi mengubah sertifikat kami hanya akan memberikan bantuan pita pada masalah tersebut dan tidak memperbaikinya dengan benar.

@anurse Cuplikan PowerShell di bawah ini akan membuat sertifikat https yang "kompatibel dengan aspnetcore" dengan tambahan Tanda Tangan Digital. Saya telah mencoba untuk merepro ini pada Win 10 insider build dan saya belum bisa melakukannya. Bisakah Anda meminta seseorang di tim untuk mencobanya?

Lebih penting lagi saya pikir kita harus meninjau cipher suite yang ditawarkan oleh IIS dan 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>
}

Jika Anda menggunakan insider build dari kemarin yaitu 20H1 bukan 19H1. Anda harus melakukan cincin pratinjau rilis atau dering lambat untuk mendapatkan versi dengan masalah tersebut. (Mungkin ini masalah dengan 19H1 yang sekarang terakhir?)

Saya setuju dengan menambahkan EKU itu.

Saya melaporkan masalah barusan, lalu menginstal sertifikat @javiercn yang diperbarui dan beralih ke masalah itu dan masalah tidak lagi repro dengan sertifikat yang diperbarui.

PR digabungkan. Tutup jika Anda merasa tidak ada lagi yang perlu ditangani di sini

saya baru saja memperbarui ke 20H1 kemarin
Saya tidak yakin pratinjau 3.0.0-previewX akan berisi gabungan
dapatkah Anda mencerahkan saya tentang itu? preview4 atau 5?
(Saya bisa mengujinya setiap malam tapi tidak mau menggunakannya setelah tes cepat)

Ini akan menjadi bagian dari pratinjau5.

Jika Anda lari

dotnet dev-certs http --clean

Skrip PowerShell di atas dan kemudian

dotnet dev-certs http --trust

Ini harus membebaskan Anda.

Terimakasih semuanya. Ini sekarang telah diperbaiki dan saya akan menindaklanjuti terkait memasukkan ini ke dalam Known issues untuk rilis Preview5.

Ada kesalahan ketik di https://github.com/aspnet/AspNetCore/issues/8952#issuecomment -482499042, tetapi ketika diperbaiki, ini berfungsi:

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

Baru saja menginstal pratinjau 6 dan ini masih terjadi.
Chrome melaporkan ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY .

Saya belum menginstal pratinjau apa pun sebelumnya, hanya SDK 2.0 dan yang lebih baru.

Versi SDK / Runtime: 3.0.100-preview6-012264 .

dotnet - keluaran info
.NET Core SDK (mencerminkan global.json apa pun):
Versi: 3.0.100-preview6-012264
Komit: be3f0c1a03

Lingkungan Runtime:
Nama OS: Windows
Versi OS: 10.0.18362
Platform OS: Windows
RID: win10-x64
Jalur Dasar: C: \ Program Files \ dotnet \ sdk3.0.100-preview6-012264 \

Tuan rumah (berguna untuk dukungan):
Versi: 3.0.0-preview6-27804-01
Komit: fdf81c6faf

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

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

Mungkin terkait dengan https://github.com/aspnet/AspNetCore/issues/11283 untuk saya.

@tokopedia

Apakah Anda mencoba menjalankan perintah berikut dengan pratinjau6 lingkungan dotnet?

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

Kemungkinan Anda memiliki sertifikat lama. Kami menambahkan logika untuk meningkatkan sertifikat, tetapi saya tidak yakin apakah itu berhasil menjadi pratinjau6 atau akan tersedia di pratinjau7.

@jogja_lowker
Saya mencoba, sebagai solusi, tetapi --clean gagal. Saya telah membuat https://github.com/aspnet/AspNetCore/issues/11283 untuk masalah ini.

@nphmuller OS apa yang Anda gunakan?

Anda dapat membuka manajer sertifikat dan membersihkan sertifikatnya sendiri (menurut saya ini tidak ideal)
Pada windows (Win + R) -> mmc -> enter -> (Ctrl + M (add snap-in) -> Certificates -> My user account -> Certificates -> Personal -> Certificates -> Temukan yang dengan 'localhost '-> Hapus yang memiliki ASP.NET Core HTTPS ... .
Ulangi dengan sertifikat di Trusted Root Certification Authorities
Jalankan kembali dotnet dev-certs https --trust

@jogja_lowker
Pekerjaan itu. Terima kasih!
Saya di Win 10 1903 (18362.175) (Juga dalam output dotnet --info , saya telah menulis di komentar awal saya)

Dugaan saya adalah, seperti yang Anda tulis, bahwa logika pemutakhiran tidak sampai ke pratinjau 6, tetapi akan ada di pratinjau 7.

@javiercn @nphmuller Saya mengalami masalah yang sama, mencoba menghapus sertifikat secara manual dan membuatnya kembali menggunakan dotnet dev-certs https --trust . Berhasil, tetapi sekarang saya mendapatkan kesalahan ERR_CERT_AUTHORITY_INVALID. Sepertinya Kestrel masih menggunakan sertifikat lama. Ada ide?

Apakah Anda menutup dan membuka kembali jendela browser Anda? Peramban menyimpan sertifikat cache dalam memori, jadi Anda perlu menutup dan membuka peramban baru agar perubahan muncul.

Ya, benar. Saya juga merestart komputer saya sekarang. Sepertinya tidak berfungsi (dicoba di Chrome, Firefox, Edge). Apakah ada tempat di mana sertifikat mungkin di-cache? Sepertinya sertifikat tersebut memang yang sebelumnya.

Apakah Anda menggunakan 3.0 SDK untuk menghasilkan sertifikat?

Ya, saya rasa begitu. dotnet --info output terlihat mirip dengan @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

Di jendela juga?

dotnet --info hanya mencantumkan sdks
Anda mungkin telah terpengaruh oleh global.json di folder itu atau folder induk mana pun
yang akan menghasilkan regenerasi sertifikat lama yang sama

coba bersih-bersih
periksa dotnet --version
lalu gunakan perintah --trust

@javiercn Apa maksudmu? Saya menggunakan Windows. 🙂

@tebeco dotnet --version mencetak 3.0.100-preview6-012264 juga.

Masalahnya adalah Anda harus yakin akan hal itu ketika Anda benar-benar menjalankan perintah itu pada saat itu

Saya tidak bisa mengikuti. Apa yang harus aku lakukan? 😕

lakukan pembersihan penuh
tidak tahu apakah perlu reboot
kemudian periksa dotnet version sebelum menjalankan kembali --trust one

Itulah yang sudah saya lakukan (beberapa kali) 🙂 - masih belum berhasil.

Saya memiliki VS2019 Preview 16.2 Preview 2 yang baru saja diinstal dan ini adalah inti ASP.NET pertama dengan proyek Kestrel yang saya jalankan dan saya mengalami masalah yang sama. Saya sudah mencoba perintah clean / trust untuk menyegarkan sertifikat tanpa perubahan.

dotnet --version
3.0.100-preview-010184

Ini adalah proyek kosong dengan .ConfigureKestrel () ditambahkan tanpa perubahan apa pun

@karaziox SDK 3.0.100-preview-010184 berasal dari 3.0.0-preview2, di mana masalah ini tidak diperbaiki hingga preview6. Buka https://dotnet.microsoft.com/download/dotnet-core/3.0 dan instal SDK 3.0.100-preview6-012264.

@javiercn Apa maksudmu? Saya menggunakan Windows. 🙂

@tebeco dotnet --version mencetak 3.0.100-preview6-012264 juga.

@ Coret masalah masih terjadi di pratinjau6.

Saya yakin perbaikannya ada di preview7, bukan preview6. @jkotalik bisakah kamu mengonfirmasi?

Masih menjadi masalah bagi saya dengan dotnet 3.0.100-preview6-012264 dan VS 16.2.0 Preview 3.0

IIS berfungsi dengan baik dengan Aplikasi Inti ASP.Net default, Kestrel gagal dengan ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

@simonmurdock dapatkah Anda mencoba membuat ulang sertifikat secara manual pada baris perintah dengan dotnet dev-certs https --clean dan dotnet dev-certs https --trust . Ada beberapa masalah yang diselesaikan terkait pengalaman pengguna yang akan diperbaiki di pratinjau7, tetapi sertifikat akan berfungsi jika dibuat ulang di pratinjau6.

Hai. Masalah yang sama untuk saya 3.0.100-preview6-012264 (OS Win 8.1), telah menginstal VS2019 16.1.1. Diverifikasi dengan dotnet new blazorhosted . Saya mencoba membersihkan sertifikat (menutup chrome 75.0.3770.100) dengan alat dotnet dan memercayai lagi tetapi tidak ada bantuan.

@vmandic HTTP / 2 tidak didukung di Win8.1, Anda harus mematikannya.
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2#http2 -support

@ Pencakar kita mungkin harus menonaktifkan HTTP2 secara default jika berjalan di Win7 atau Win8

@jkotalik tolong buka edisi baru untuk triase. Secara teori ini dapat bekerja di Win8.1, hanya ada masalah dengan urutan sandi dan mendapatkan sertifikat yang mendukung beberapa sandi alternatif.

Karena masalah masih belum terselesaikan saat saya menginstal Preview8 kemarin, saya mencoba menjalankan dotnet dev-certs https --clean dan dotnet dev-certs https --trust lagi, namun tidak berhasil.

Saya menemukan bahwa Kestrel masih menggunakan sertifikat lama dan kedaluwarsa, tetapi saya tidak dapat menemukan sertifikat tersebut di manajer sertifikat Windows. Ternyata sertifikat di-cache di sini: C:\Users\<user>\AppData\Roaming\ASP.NET\Https . Ada tiga file * .pfx, salah satunya jelas masih digunakan oleh Kestrel.

Aku butuh waktu berjam-jam untuk menemukan ini. Saya sudah mengharapkan bahwa sertifikat di-cache, tetapi saya tidak dapat menemukannya di suatu tempat di dokumentasi. Ini benar-benar perlu didokumentasikan.

Saya membayangkan itu karena Anda menggunakan kontainer buruh pelabuhan. Itu lokasi tempat buruh pelabuhan mengekspor sertifikat untuk mengimpornya ke dalam penampung.

@anurse kita bisa menambahkan ini ke dokumen yang menurut saya. Saya tidak yakin implikasi dari pembersihan folder ini bagi orang-orang buruh pelabuhan, tapi kita bisa menanyakannya.

Yang tidak saya inginkan adalah menambahkan ini ke alat, sebagai detail implementasi perkakas buruh pelabuhan dan tidak ada hubungannya dengan alat tersebut.

Meskipun demikian, menurut saya kami tidak perlu mengubah runtime di sini selama kami memberikan detail tentang apa yang harus dilakukan jika Anda mengalami situasi ini di dokumen. Saya telah mengajukan https://github.com/aspnet/AspNetCore.Docs/issues/13927 untuk melacaknya.

Terima kasih telah menjelaskan.

Menambahkan ini ke dokumentasi akan membantu orang menghemat waktu. Terima kasih banyak!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat