özet
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY
HTTPS üzerinden yerel web sunucuma bağlanmaya çalıştığımda Chrome rapor veriyor. Bu sorunun son Windows 10 yükseltmemle ilgili olması gerektiğinden neredeyse eminim, ancak nasıl düzeltileceğini bilmiyorum.
Ne işe yaradı
İşte Windows 8.1 Pro'nun başında yüklü olduğu olaylar zinciri:
- Aşağıdaki komutu kullanarak güvenilir bir kök CA olarak kullanılmak üzere kendinden imzalı bir sertifika oluşturdu:
makecert.exe -pe -ss Root -sr LocalMachine -n "CN=local, OU=development" -r -a sha512 -e 01/01/2020
- Güvenilen kök CA'dan uygulamaya özgü bir sertifika oluşturuldu:
makecert.exe -pe -ss My -sr LocalMachine -n "CN=myapp.local, OU=Development" -is Root -ir LocalMachine -in local -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -a sha512 -e 01/01/2020 -sky -eku 1.3.6.1.5.5.7.3.1
- Bu nokta için bir
HOSTS
dosya girişi eklendimyapp.local
127.0.0.1
myapp.local
Etki alanına bağlı olan ve yalnızca HTTPS isteklerini dinleyen bir IIS 8.5 uygulaması oluşturuldumyapp.local
Web sitesine sertifika atandı
Bu kurulumla, herhangi bir sertifika veya güvenlik uyarısı olmadan yerel web siteme Chrome'dan erişmekte sorun yaşamadım. Tarayıcı, beklendiği gibi yeşil asma kilit görüntüledi.
Ne işe yaramaz
Son zamanlarda, Windows 10'a geçtim. Windows 10'un HTTP / 2'yi destekleyen IIS 10 ile birlikte geldiğini bilmiyordum. Artık Chrome ile yerel web sitelerime erişmeye çalıştığımda bir ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY
hata alıyorum. Edge'den gönderilen aynı isteğin bir hataya neden olmadığını ve bağlantı için HTTP / 2 kullandığını unutmayın. Bir cursory Google araması, sorunun HTTP / 2 veya Chrome'un SSL sertifikalarında hangi şifreleri kabul edeceği konusunda katı olması olabileceğine dair ipucu dışında umut verici bir şey ortaya koymadı.
Windows'da etkin şifre paketleriyle ilgili bir sorun olabileceğini düşünüyoruz (ancak bu tür konularda uzman olmamakla birlikte), IIS Crypto'nun en son sürümünü indirdim . En İyi Uygulamalar düğmesini tıkladım, Uygula'yı tıkladım ve makinemi yeniden başlattım.
IIS Kripto bu ayarları "en iyi uygulamalar" olarak bildirir:
- Etkin protokoller: TLS 1.0, TLS 1.1, TLS 1.2
- Etkin şifreler: Üçlü DES 168, AES 128/128, AES 256/256
- Etkin karmalar: MD5, SHA, SHA 256, SHA 384, SHA 512
- Etkin anahtar değişimleri: Diffie-Hellman, PKCS, ECDH
SSL şifre paketi siparişi:
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P521
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P284
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P284
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P521
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P284
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
Ben de geliştiriyorum tarayıcı uygulaması olmadığını ekleyeceğiz değil Windows XP'den kullanılabilir olması gerekir. Windows XP'nin daha yeni protokolleri desteklememesi ile ilgili bazı sorunlar olduğunu biliyorum.
HTTPS görüşmesi hakkında ayrıntılı bilgi
HTTPS görüşmesini durdurmak için Fiddler'ı kullanmaya karar verdim. Fiddler, istek hakkında şunları bildirdi:
Version: 3.3 (TLS/1.2)
Random: 6B 47 6D 2B BC AE 00 F1 1D 41 57 7C 46 DB 35 19 D7 EF A9 2B B1 D0 81 1D 35 0D 75 7E 4C 05 14 B0
"Time": 2/1/1993 9:53:15 AM
SessionID: 98 2F 00 00 15 E7 C5 70 12 70 CD A8 D5 C7 D4 4D ED D8 1F 42 F9 A8 2C E6 67 13 AD C0 47 C1 EA 04
Extensions:
server_name myapp.local
extended_master_secret empty
SessionTicket empty
signature_algs sha512_rsa, sha512_ecdsa, sha384_rsa, sha384_ecdsa, sha256_rsa, sha256_ecdsa, sha224_rsa, sha224_ecdsa, sha1_rsa, sha1_ecdsa
status_request OCSP - Implicit Responder
NextProtocolNego empty
SignedCertTimestamp (RFC6962) empty
ALPN http/1.1, spdy/3.1, h2-14, h2
channel_id(GoogleDraft) empty
ec_point_formats uncompressed [0x0]
elliptic_curves secp256r1 [0x17], secp384r1 [0x18]
Ciphers:
[C02B] TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
[C02F] TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
[009E] TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
[CC14] TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
[CC13] TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
[CC15] TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
[C00A] TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
[C014] TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA
[0039] TLS_DHE_RSA_WITH_AES_256_SHA
[C009] TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
[C013] TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA
[0033] TLS_DHE_RSA_WITH_AES_128_SHA
[009C] TLS_RSA_WITH_AES_128_GCM_SHA256
[0035] TLS_RSA_AES_256_SHA
[002F] TLS_RSA_AES_128_SHA
[000A] SSL_RSA_WITH_3DES_EDE_SHA
[00FF] TLS_EMPTY_RENEGOTIATION_INFO_SCSV
Compression:
[00] NO_COMPRESSION
ve yanıt:
Version: 3.3 (TLS/1.2)
SessionID: 98 2F 00 00 15 E7 C5 70 12 70 CD A8 D5 C7 D4 4D ED D8 1F 42 F9 A8 2C E6 67 13 AD C0 47 C1 EA 04
Random: 55 C6 8D BF 78 72 88 41 34 BD B4 B8 DA ED D3 C6 20 5C 46 D6 5A 81 BD 6B FC 36 23 0B 15 21 5C F6
Cipher: TLS_RSA_WITH_AES_128_GCM_SHA256 [0x009C]
CompressionSuite: NO_COMPRESSION [0x00]
Extensions:
ALPN h2
0x0017 empty
renegotiation_info 00
server_name empty
Ne çalışıyor
Håkan Lindqvist cevabı dayanarak ve çok detaylı ve görünüşe-iyice araştırılmış cevap burada , Chrome hatasını ortadan aşağıdaki ayarları ile IIS Kripto yeniden:
- Etkin protokoller: TLS 1.0, TLS 2.0, TLS 3.0
- Etkin şifreler: AES 128/128, AES 256/256
- Etkin karmalar: SHA, SHA 256, SHA 384, SHA 512
- Etkin anahtar değişimleri: Diffie-Hellman, PKCS, ECDH
SSL şifre paketi siparişi:
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P521
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P521
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P521
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P521
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
makecert.exe
kullanımdan kaldırıldığının farkındayım . Sadece böyle geliştirme senaryoları için kullanıyorum, çünkü [eskiden?] Çalışmasının en kolay yolu bu.