Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Service Mesh:Enforce TLS versions on an ingress gateway

Son Güncelleme:Oct 07, 2026

TLS 1.0 ve TLS 1.1 gibi eski Transport Layer Security (TLS) sürümleri bilinen güvenlik açıkları içerir; bu durum HTTPS trafiğini man-in-the-middle saldırılarına ve veri ihlallerine karşı savunmasız bırakır. Alibaba Cloud Service Mesh (ASM) giriş ağ geçidinizi yapılandırmak için Gateway kaynağında minProtocolVersion alanını ayarlayın ve TLS 1.2 veya sonraki sürümlerin kullanılmasını zorunlu kılın.

Genel bilgiler

TLS 1.0 dahil olmak üzere erken dönem TLS sürümleri, iletim sırasında veri ihlallerine yol açabilen bilinen güvenlik sorunları barındırır. Web sitesi güvenliğini artırmak için en iyi uygulama, TLS 1.0 ve TLS 1.1'i TLS 1.2 veya daha yeni bir sürümle değiştirmektir. Ayrıca TLS 1.2 içindeki zayıf şifre takımlarını devre dışı bırakmanız gerekir.

Ön koşullar

Başlamadan önce aşağıdaki ön koşulları karşıladığınızdan emin olun:

Adım 1: TLS sertifikası ve özel anahtar hazırlama

Giriş ağ geçidi için bir TLS sertifikası ve özel anahtar oluşturun, ardından bunları bir Kubernetes secret'ında veya ASM sertifikasında saklayın. Aşağıdaki örnek aliyun.com alan adını kullanır. Bu alan adı için zaten bir sertifikanız ve özel anahtarınız varsa dosyaları aliyun.com.crt ve aliyun.com.key olarak yeniden adlandırın ve doğrudan 3. alt adıma geçin.

  1. Kök sertifikayı ve özel anahtarı oluşturun:

       openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 \
         -subj '/O=myexample Inc./CN=aliyun.com' \
         -keyout aliyun.root.key -out aliyun.root.crt
  2. aliyun.com için sunucu sertifikasını ve özel anahtarı oluşturun:

       openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes \
         -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization"
    
       openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key \
         -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt
  3. Sertifikayı ve özel anahtarı depolayın. Yöntem, kullandığınız ASM sürümüne bağlıdır:

    v1.17 öncesi ASM sürümleri

    Giriş ağ geçidi pod'unu barındıran kümeye kubectl kullanarak bağlanın ve istio-system ad alanında bir TLS secret'ı oluşturun:

    kubectl create -n istio-system secret tls myexample-credential \
      --key=aliyun.com.key --cert=aliyun.com.crt
    Önemli

    Secret adı istio veya prometheus ile başlamamalı ve token alanı içermemelidir.

    ASM v1.17 veya üzeri

    1. ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde Service Mesh > Mesh Management seçeneğini belirleyin.

    2. Mesh Management sayfasında ASM örneğinizin adına tıklayın. Sol gezinme bölmesinde ASM Gateways > Certificate Management seçeneğini belirleyin.

    3. Certificate Management sayfasında Create seçeneğine tıklayın. Certificate Information panelinde aşağıdaki parametreleri yapılandırın ve OK seçeneğine tıklayın.

      Parameter Value
      Name myexample-credential
      Public Key Certificate 2. alt adımda oluşturulan aliyun.com.crt dosyasının içeriğini yapıştırın
      Private Key 2. alt adımda oluşturulan aliyun.com.key dosyasının içeriğini yapıştırın

Adım 2: TLS sürümü zorlaması içeren bir Istio ağ geçidi oluşturma

  1. ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde Service Mesh > Mesh Management seçeneğini belirleyin.

  2. Mesh Management sayfasında ASM örneğinizin adına tıklayın. Sol gezinme bölmesinde ASM Gateways > Gateway seçeneğini belirleyin. Create from YAML seçeneğine tıklayın.

  3. Bir ad alanı seçin ve aşağıdaki YAML kodunu yapıştırın. minProtocolVersion: TLSV1_2 ayarı, TLS 1.0 veya TLS 1.1 kullanan tüm bağlantıları reddeder:

       apiVersion: networking.istio.io/v1beta1
       kind: Gateway
       metadata:
         name: mysdsgateway
       spec:
         selector:
           istio: ingressgateway
         servers:
           - hosts:
               - '*'
             port:
               name: https
               number: 443
               protocol: HTTPS
             tls:
               credentialName: myexample-credential
               minProtocolVersion: TLSV1_2
               mode: SIMPLE

Adım 3: VirtualService oluşturma

  1. ASM örneği ayrıntıları sayfasında sol gezinme bölmesinden Traffic Management Center > VirtualService seçeneğini belirleyin. Create from YAML seçeneğine tıklayın.

  2. Bir ad alanı seçin ve aşağıdaki YAML kodunu yapıştırın:

       apiVersion: networking.istio.io/v1beta1
       kind: VirtualService
       metadata:
         name: bookinfo-tlsversion-sample
       spec:
         gateways:
           - mysdsgateway-tlsversion-sample
         hosts:
           - '*'
         http:
           - match:
               - uri:
                   exact: /productpage
               - uri:
                   prefix: /static
               - uri:
                   exact: /login
               - uri:
                   exact: /logout
               - uri:
                   prefix: /api/v1/products
             route:
               - destination:
                   host: productpage
                   port:
                     number: 9080

Adım 4: TLS yapılandırmasını doğrulama

Giriş ağ geçidinin hangi TLS sürümlerini kabul ettiğini doğrulamak için testssl.sh aracını kullanın. testssl.sh, herhangi bir sunucu uç noktasındaki TLS/SSL protokol desteğini, şifre takımlarını ve bilinen güvenlik açıklarını kontrol eden açık kaynaklı bir komut satırı aracıdır.

testssl.sh aracını giriş ağ geçidine karşı çalıştırın:

docker run --rm -ti registry.cn-hangzhou.aliyuncs.com/acs/testssl.sh https://<ingress-gateway-ip>/productpage
Not

<ingress-gateway-ip> ifadesini giriş ağ geçidinizin IP adresiyle değiştirin.

TLS 1.2 ve sonraki sürümleri doğrulama (önerilen)

minProtocolVersion değeri 2. Adımda yapılandırıldığı gibi TLSV1_2 olarak ayarlandığında beklenen çıktı aşağıdaki gibidir:

Protocol Status
SSLv2 Not offered
SSLv3 Not offered
TLS 1.0 Not offered
TLS 1.1 Not offered
TLS 1.2 Offered
TLS 1.3 Offered

Yalnızca TLS 1.2 veya TLS 1.3 destekleyen istemciler bağlanabilir. Eski istemciler (IE 8, Java 7 gibi) reddedilir.

Full testssl.sh output

Testing protocols via sockets except NPN+ALPN

SSLv2      not offered (OK)
SSLv3      not offered (OK)
TLS 1      not offered
TLS 1.1    not offered
TLS 1.2    offered (OK)
TLS 1.3    offered (OK): final

......
Running client simulations (HTTP) via sockets

Browser                      Protocol  Cipher Suite Name (OpenSSL)       Forward Secrecy
------------------------------------------------------------------------------------------------
Android 6.0                  TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       256 bit ECDH (P-256)
Android 7.0 (native)         TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       256 bit ECDH (P-256)
Android 8.1 (native)         TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
Android 9.0 (native)         TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
Android 10.0 (native)        TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
Android 11 (native)          TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
Android 12 (native)          TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
Chrome 79 (Win 10)           TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
Chrome 101 (Win 10)          TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
Firefox 66 (Win 8.1/10)      TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
Firefox 100 (Win 10)         TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
IE 6 XP                      No connection
IE 8 Win 7                   No connection
IE 8 XP                      No connection
IE 11 Win 7                  No connection
IE 11 Win 8.1                No connection
IE 11 Win Phone 8.1          No connection
IE 11 Win 10                 TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       256 bit ECDH (P-256)
Edge 15 Win 10               TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
Edge 101 Win 10 21H2         TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
Safari 12.1 (iOS 12.2)       TLSv1.3   TLS_CHACHA20_POLY1305_SHA256      253 bit ECDH (X25519)
Safari 13.0 (macOS 10.14.6)  TLSv1.3   TLS_CHACHA20_POLY1305_SHA256      253 bit ECDH (X25519)
Safari 15.4 (macOS 12.3.1)   TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
Java 7u25                    No connection
Java 8u161                   TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       256 bit ECDH (P-256)
Java 11.0.2 (OpenJDK)        TLSv1.3   TLS_AES_128_GCM_SHA256            256 bit ECDH (P-256)
Java 17.0.3 (OpenJDK)        TLSv1.3   TLS_AES_256_GCM_SHA384            253 bit ECDH (X25519)
go 1.17.8                    TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
LibreSSL 2.8.3 (Apple)       TLSv1.2   ECDHE-RSA-CHACHA20-POLY1305       253 bit ECDH (X25519)
OpenSSL 1.0.2e               TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       256 bit ECDH (P-256)
OpenSSL 1.1.0l (Debian)      TLSv1.2   ECDHE-RSA-CHACHA20-POLY1305       253 bit ECDH (X25519)
OpenSSL 1.1.1d (Debian)      TLSv1.3   TLS_AES_256_GCM_SHA384            253 bit ECDH (X25519)
OpenSSL 3.0.3 (git)          TLSv1.3   TLS_AES_256_GCM_SHA384            253 bit ECDH (X25519)
Apple Mail (16.0)            TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       256 bit ECDH (P-256)
Thunderbird (91.9)           TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)

(İsteğe bağlı) Yalnızca TLS 1.2 ile sınırlama

Yalnızca TLS 1.2 bağlantılarına izin vermek ve TLS 1.3'ü reddetmek için minProtocolVersion ve maxProtocolVersion değerlerini TLSV1_2 olarak ayarlayın:

apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  name: mysdsgateway
  namespace: default
spec:
  selector:
    istio: ingressgateway
  servers:
    - hosts:
        - '*'
      port:
        name: https
        number: 443
        protocol: HTTPS
      tls:
        credentialName: myexample-credential
        maxProtocolVersion: TLSV1_2
        minProtocolVersion: TLSV1_2
        mode: SIMPLE

Doğrulamak için testssl.sh aracını tekrar çalıştırın. Beklenen sonuçlar aşağıdaki gibidir:

Protocol Status
SSLv2 Not offered
SSLv3 Not offered
TLS 1.0 Not offered
TLS 1.1 Not offered
TLS 1.2 Offered
TLS 1.3 Not offered (downgraded to a weaker protocol)

Yalnızca TLS 1.2 destekleyen istemciler bağlanabilir. Yalnızca TLS 1.3 destekleyen tüm istemciler TLS 1.2'ye geri döner.

Full testssl.sh output

Testing protocols via sockets except NPN+ALPN

 SSLv2      not offered (OK)
 SSLv3      not offered (OK)
 TLS 1      not offered
 TLS 1.1    not offered
 TLS 1.2    offered (OK)
 TLS 1.3    not offered and downgraded to a weaker protocol

......
 Running client simulations (HTTP) via sockets

 Browser                      Protocol  Cipher Suite Name (OpenSSL)       Forward Secrecy
------------------------------------------------------------------------------------------------
 Android 6.0                  TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       256 bit ECDH (P-256)
 Android 7.0 (native)         TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       256 bit ECDH (P-256)
 Android 8.1 (native)         TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 Android 9.0 (native)         TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 Android 10.0 (native)        TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 Android 11 (native)          TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 Android 12 (native)          TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 Chrome 79 (Win 10)           TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 Chrome 101 (Win 10)          TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 Firefox 66 (Win 8.1/10)      TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 Firefox 100 (Win 10)         TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 IE 6 XP                      No connection
 IE 8 Win 7                   No connection
 IE 8 XP                      No connection
 IE 11 Win 7                  No connection
 IE 11 Win 8.1                No connection
 IE 11 Win Phone 8.1          No connection
 IE 11 Win 10                 TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       256 bit ECDH (P-256)
 Edge 15 Win 10               TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 Edge 101 Win 10 21H2         TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 Safari 12.1 (iOS 12.2)       TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 Safari 13.0 (macOS 10.14.6)  TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 Safari 15.4 (macOS 12.3.1)   TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 Java 7u25                    No connection
 Java 8u161                   TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       256 bit ECDH (P-256)
 Java 11.0.2 (OpenJDK)        TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       256 bit ECDH (P-256)
 Java 17.0.3 (OpenJDK)        TLSv1.2   ECDHE-RSA-CHACHA20-POLY1305       253 bit ECDH (X25519)
 go 1.17.8                    TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)
 LibreSSL 2.8.3 (Apple)       TLSv1.2   ECDHE-RSA-CHACHA20-POLY1305       253 bit ECDH (X25519)
 OpenSSL 1.0.2e               TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       256 bit ECDH (P-256)
 OpenSSL 1.1.0l (Debian)      TLSv1.2   ECDHE-RSA-CHACHA20-POLY1305       253 bit ECDH (X25519)
 OpenSSL 1.1.1d (Debian)      TLSv1.2   ECDHE-RSA-CHACHA20-POLY1305       253 bit ECDH (X25519)
 OpenSSL 3.0.3 (git)          TLSv1.2   ECDHE-RSA-CHACHA20-POLY1305       253 bit ECDH (X25519)
 Apple Mail (16.0)            TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       256 bit ECDH (P-256)
 Thunderbird (91.9)           TLSv1.2   ECDHE-RSA-AES128-GCM-SHA256       253 bit ECDH (X25519)

(İsteğe bağlı) Yalnızca TLS 1.3 ile sınırlama

Yalnızca TLS 1.3'ü zorunlu kılmak için minProtocolVersion ve maxProtocolVersion değerlerini TLSV1_3 olarak ayarlayın:

apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  name: mysdsgateway
  namespace: default
spec:
  selector:
    istio: ingressgateway
  servers:
    - hosts:
        - '*'
      port:
        name: https
        number: 443
        protocol: HTTPS
      tls:
        credentialName: myexample-credential
        maxProtocolVersion: TLSV1_3
        minProtocolVersion: TLSV1_3
        mode: SIMPLE
Önemli

Yalnızca TLS 1.3 modu istemci uyumluluğunu önemli ölçüde azaltır. Birçok eski tarayıcı, Java 8, OpenSSL 1.0.x ve LibreSSL 2.x bağlanamaz. Üretim ortamında TLS 1.3'ü zorunlu kılmadan önce istemci uyumluluğunu test edin.

Doğrulamak için testssl.sh aracını tekrar çalıştırın. Beklenen sonuçlar aşağıdaki gibidir:

Protocol Status
SSLv2 Not offered
SSLv3 Not offered
TLS 1.0 Not offered
TLS 1.1 Not offered
TLS 1.2 Not offered
TLS 1.3 Offered

Yalnızca TLS 1.3 destekleyen istemciler bağlanabilir. Yalnızca TLS 1.2 destekleyen tüm istemciler reddedilir.

Full testssl.sh output

Testing protocols via sockets except NPN+ALPN

SSLv2      not offered (OK)
SSLv3      not offered (OK)
TLS 1      not offered
TLS 1.1    not offered
TLS 1.2    not offered
TLS 1.3    offered (OK): final

......
Running client simulations (HTTP) via sockets

 Browser                      Protocol  Cipher Suite Name (OpenSSL)       Forward Secrecy
------------------------------------------------------------------------------------------------
 Android 6.0                  No connection
 Android 7.0 (native)         No connection
 Android 8.1 (native)         No connection
 Android 9.0 (native)         TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
 Android 10.0 (native)        TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
 Android 11 (native)          TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
 Android 12 (native)          TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
 Chrome 79 (Win 10)           TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
 Chrome 101 (Win 10)          TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
 Firefox 66 (Win 8.1/10)      TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
 Firefox 100 (Win 10)         TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
 IE 6 XP                      No connection
 IE 8 Win 7                   No connection
 IE 8 XP                      No connection
 IE 11 Win 7                  No connection
 IE 11 Win 8.1                No connection
 IE 11 Win Phone 8.1          No connection
 IE 11 Win 10                 No connection
 Edge 15 Win 10               No connection
 Edge 101 Win 10 21H2         TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
 Safari 12.1 (iOS 12.2)       TLSv1.3   TLS_CHACHA20_POLY1305_SHA256      253 bit ECDH (X25519)
 Safari 13.0 (macOS 10.14.6)  TLSv1.3   TLS_CHACHA20_POLY1305_SHA256      253 bit ECDH (X25519)
 Safari 15.4 (macOS 12.3.1)   TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
 Java 7u25                    No connection
 Java 8u161                   No connection
 Java 11.0.2 (OpenJDK)        TLSv1.3   TLS_AES_128_GCM_SHA256            256 bit ECDH (P-256)
 Java 17.0.3 (OpenJDK)        TLSv1.3   TLS_AES_256_GCM_SHA384            253 bit ECDH (X25519)
 go 1.17.8                    TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)
 LibreSSL 2.8.3 (Apple)       No connection
 OpenSSL 1.0.2e               No connection
 OpenSSL 1.1.0l (Debian)      No connection
 OpenSSL 1.1.1d (Debian)      TLSv1.3   TLS_AES_256_GCM_SHA384            253 bit ECDH (X25519)
 OpenSSL 3.0.3 (git)          TLSv1.3   TLS_AES_256_GCM_SHA384            253 bit ECDH (X25519)
 Apple Mail (16.0)            No connection
 Thunderbird (91.9)           TLSv1.3   TLS_AES_128_GCM_SHA256            253 bit ECDH (X25519)

İlgili konular