개요
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY
HTTPS를 통해 로컬 웹 서버에 연결하려고 할 때 Chrome에서보고 합니다. 이 문제가 최근 Windows 10 업그레이드와 관련이 있다고 확신하지만 문제를 해결하는 방법을 모르겠습니다.
효과가있는 것
시작에 Windows 8.1 Pro가 설치되어있는 이벤트 체인은 다음과 같습니다.
- 다음 명령을 사용하여 신뢰할 수있는 루트 CA로 사용하기위한 자체 서명 인증서를 생성했습니다.
makecert.exe -pe -ss Root -sr LocalMachine -n "CN=local, OU=development" -r -a sha512 -e 01/01/2020
- 신뢰할 수있는 루트 CA에서 응용 프로그램 별 인증서를 생성했습니다.
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
- 해당 지점에
HOSTS
대한 파일 항목을 추가했습니다.myapp.local
127.0.0.1
myapp.local
도메인에 바인딩되고 HTTPS 요청 만 수신 하는 IIS 8.5 응용 프로그램을 만들었습니다.myapp.local
웹 사이트에 인증서 할당
이 설정을 사용하면 인증서 또는 보안 경고없이 Chrome에서 로컬 웹 사이트에 액세스하는 데 어려움이 없었습니다. 브라우저가 예상대로 녹색 자물쇠를 표시했습니다.
작동하지 않는 것
최근에 Windows 10으로 업그레이드했습니다. Windows 10에 HTTP / 2를 지원하는 IIS 10이 제공 될 당시에는 몰랐습니다. 이제 Chrome으로 로컬 웹 사이트에 액세스하려고하면 ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY
오류가 발생합니다. Edge에서 보낸 동일한 요청으로 오류가 발생하지 않으며 연결에 HTTP / 2를 사용합니다. 엉뚱한 Google 검색은 HTTP / 2 또는 Chrome이 SSL 인증서에서 허용하는 암호에 대해 엄격하다는 문제를 암시하는 것을 제외하고는 유망한 것을 찾지 못했습니다.
Windows에서 사용 가능한 암호 제품군에 문제가있을 수 있다고 생각하지만 전문가는 아닙니다 .IIS Crypto 최신 버전을 다운로드했습니다 . 모범 사례 버튼을 클릭하고 적용을 클릭 한 다음 컴퓨터를 다시 시작했습니다.
IIS Crypto는 이러한 설정을 "모범 사례"로보고합니다.
- 사용 가능한 프로토콜 : TLS 1.0, TLS 1.1, TLS 1.2
- 사용 가능한 암호 : Triple DES 168, AES 128/128, AES 256/256
- 사용 가능한 해시 : MD5, SHA, SHA 256, SHA 384, SHA 512
- 사용 가능한 키 교환 : Diffie-Hellman, PKCS, ECDH
SSL 암호 제품군 순서 :
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
또한 개발중인 브라우저 응용 프로그램 을 Windows XP에서 사용할 필요 가 없다고 덧붙입니다. 최신 프로토콜을 지원하지 않는 Windows XP에 대한 몇 가지 문제가 있음을 알고 있습니다.
HTTPS 협상에 대한 자세한 정보
Fiddler를 사용하여 HTTPS 협상을 가로 채기로 결정했습니다. Fiddler가 요청에 대해보고 한 내용은 다음과 같습니다.
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
그리고 응답 :
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
작동하는 것
는 Håkan 고 Lindqvist의 답변에 따라, 그리고 매우 상세하고 분명-철저하게 연구 된 대답 여기에 , 나는 크롬 오류를 제거 다음과 같은 설정으로 IIS 암호화를 재구성 :
- 사용 가능한 프로토콜 : TLS 1.0, TLS 2.0, TLS 3.0
- 사용 가능한 암호 : AES 128/128, AES 256/256
- 사용 가능한 해시 : SHA, SHA 256, SHA 384, SHA 512
- 사용 가능한 키 교환 : Diffie-Hellman, PKCS, ECDH
SSL 암호 제품군 순서 :
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_SHAES
TLS_RSA_WITH_AES_256_CBC_SHATH
TLS_RSA_WITH_AES_128_GCM_SHA256
makecert.exe
더 이상 사용되지 않는다는 것을 알고 있습니다. [이용 했습니까?] 가장 쉬운 옵션이므로 이와 같은 개발 시나리오에만 사용합니다.