İstemciniz HTTPS üzerinden HTTP/2 kullanırken sorun yaşıyorsa ve istemci yapılandırmasını kolayca değiştiremiyorsanız Alibaba Cloud Service Mesh (ASM) ağ geçidindeki HTTP/2 protokolünü devre dışı bırakın. Bu konu, bir ingress gateway'de HTTPS için HTTP/2'nin nasıl devre dışı bırakılacağını açıklar.
Önkoşullar
Adım 1: Varsayılan yapılandırmayı doğrulama
Uygulama Katmanı Protokol Anlaşması (ALPN) varsayılan olarak HTTP/2'ye ayarlandığını doğrulamak için aşağıdaki komutu çalıştırarak ASM ağ geçidine erişin. <INGRESS_GATEWAY_IP> değerini ingress gateway'inizin IP adresiyle değiştirin.
curl -k -H Host:b.aliyun.com --resolve b.aliyun.com:443:<INGRESS_GATEWAY_IP> https://b.aliyun.com/status/418 -v
Beklenen çıktı:
* Added b.aliyun.com:443:8.217.xxx xxx to DNS cache
* Hostname b.aliyun.com was found in DNS cache
* Trying 8.217.xxx xxx:443...
* Connected to b.aliyun.com (8.217.xxx xxx) port 443 (#0)
* ALPN: offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
* (304) (IN), TLS handshake, Server hello (2):
* (304) (IN), TLS handshake, Unknown (8):
* (304) (IN), TLS handshake, Certificate (11):
* (304) (IN), TLS handshake, CERT verify (15):
* (304) (IN), TLS handshake, Finished (20):
* (304) (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256
* ALPN: server accepted h2
* Server certificate:
* subject: CN=aliyun.com; O=myexample organization
* start date: Apr 10 08:23:54 2023 GMT
* expire date: Apr 9 08:23:54 2024 GMT
* issuer: O=myexample Inc.; CN=aliyun.com
* SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
* using HTTP/2
* h2 [:method: HEAD]
* h2 [:scheme: https]
* h2 [:authority: b.aliyun.com]
* h2 [:path: /status/418]
* h2 [user-agent: curl/8.1.2]
* h2 [accept: */*]
* Using Stream ID: 1 (easy handle 0x12e80d600)
> HEAD /status/418 HTTP/2
> Host:b.aliyun.com
> User-Agent: curl/8.1.2
> Accept: */*
>
< HTTP/2 418
HTTP/2 418
< server: istio-envoy
server: istio-envoy
< date: Thu, 14 Sep 2023 08:23:25 GMT
date: Thu, 14 Sep 2023 08:23:25 GMT
< access-control-allow-origin: *
access-control-allow-origin: *
< x-more-info: http://tools.ietf.org/html/rfc2324
x-more-info: http://tools.ietf.org/html/rfc2324
< access-control-allow-credentials: true
access-control-allow-credentials: true
< content-length: 135
content-length: 135
< x-envoy-upstream-service-time: 5
x-envoy-upstream-service-time: 5
Çıktı, istemcinin ALPN listesinde hem HTTP/2 hem de HTTP/1.1 sunduğunu gösterir. Varsayılan olarak ağ geçidi HTTP/2'yi tercih eder.
Adım 2: HTTPS için HTTP/2'yi devre dışı bırakma
ASM konsolu na giriş yapın. Sol gezinme bölmesinde seçeneklerini seçin.
Mesh Management sayfasında ASM örneğinin adını tıklayın. Sol gezinme bölmesinde seçeneklerini seçin.
-
Ingress Gateway sayfasında, yapılandırmak istediğiniz ağ geçidini bulun ve İşlemler sütununda View YAML seçeneğini tıklayın. Edit iletişim kutusunda,
specalanının altınapodAnnotationsyapılandırmasını ekleyin ve ardından OK seçeneğini tıklayın.podAnnotations: proxy.istio.io/config: | httpsHttp2Disabled: trueNotBu yapılandırma ağ geçidinin yeniden başlatılmasına neden olur.
Adım 3: HTTPS için HTTP/2'nin devre dışı bırakıldığını doğrulama
ASM ağ geçidine erişmek için aşağıdaki komutu tekrar çalıştırın. <INGRESS_GATEWAY_IP> değerini ingress gateway'inizin IP adresiyle değiştirin.
curl -k -H Host:b.aliyun.com --resolve b.aliyun.com:443:<INGRESS_GATEWAY_IP> https://b.aliyun.com/status/418 -v
Beklenen çıktı:
* Added b.aliyun.com:443:8.217.xxx.xxx to DNS cache
* Hostname b.aliyun.com was found in DNS cache
* Trying 8.217.xxx.xxx:443...
* Connected to b.aliyun.com (8.217.xxx.xxx) port 443 (#0)
* ALPN: offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
* (304) (IN), TLS handshake, Server hello (2):
* (304) (IN), TLS handshake, Unknown (8):
* (304) (IN), TLS handshake, Certificate (11):
* (304) (IN), TLS handshake, CERT verify (15):
* (304) (IN), TLS handshake, Finished (20):
* (304) (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256
* ALPN: server accepted http/1.1
* Server certificate:
* subject: CN=aliyun.com; O=myexample organization
* start date: Apr 10 08:23:54 2023 GMT
* expire date: Apr 9 08:23:54 2024 GMT
* issuer: O=myexample Inc.; CN=aliyun.com
* SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
* using HTTP/1.1
> HEAD /status/418 HTTP/1.1
> Host:b.aliyun.com
> User-Agent: curl/8.1.2
> Accept: */*
>
< HTTP/1.1 418 Unknown
HTTP/1.1 418 Unknown
< server: istio-envoy
server: istio-envoy
< date: Thu, 14 Sep 2023 08:20:13 GMT
date: Thu, 14 Sep 2023 08:20:13 GMT
< access-control-allow-origin: *
access-control-allow-origin: *
< x-more-info: http://tools.ietf.org/html/rfc2324
x-more-info: http://tools.ietf.org/html/rfc2324
< access-control-allow-credentials: true
access-control-allow-credentials: true
< content-length: 135
content-length: 135
< x-envoy-upstream-service-time: 1
x-envoy-upstream-service-time: 1
Çıktı, sunucu tarafından kabul edilen ALPN protokolünün HTTP/1.1 olduğunu gösterir. Bu durum, HTTP/2'nin devre dışı bırakıldığını doğrular.