TLS/SSL El Sıkışma Hataları

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Belirti

TLS/SSL el sıkışma hatası, istemci ve sunucu TLS/SSL protokolü için geçerlidir. Apigee Edge'de bu hata oluştuğunda istemci uygulaması Hizmet Kullanılamıyor mesajıyla birlikte bir HTTP durumu 503 alır. Siz TLS/SSL el sıkışma hatasının meydana geldiği API çağrısından sonra bu hatayı görürsünüz.

Hata mesajları

HTTP/1.1 503 Service Unavailable

Bu hata mesajını, bir TLS/SSL el sıkışması hatası oluştuğunda da görebilirsiniz:

Received fatal alert: handshake_failure

Olası nedenler

TLS (selesi SSL olan Taşıma Katmanı Güvenliği), Bir web sunucusu ile bir web istemcisi (ör. tarayıcı veya uygulama) arasında şifrelenmiş bağlantı oluşturarak. El sıkışma, TLS/SSL istemcisi ve sunucusunun bir gizli anahtar kümesi oluşturmasını sağlayan bir süreçtir büyük önem taşır. Bu işlem sırasında istemci ve sunucu:

  1. Kullanılacak protokolün sürümü üzerinde anlaşmaya varın.
  2. Kullanılacak şifreleme algoritmasını seçin.
  3. Dijital sertifikaları gönderip alarak birbirlerinin kimliklerini doğrulamalıdır.

TLS/SSL el sıkışması başarılı olursa TLS/SSL istemcisi ve sunucusu her bir diğer güvenli aracını da kullanabilirsiniz. Aksi takdirde, bir TLS/SSL el sıkışma hatası oluşursa bağlantı sonlandırılır ve istemci 503 Service Unavailable hata alır.

TLS/SSL el sıkışma hatalarının olası nedenleri şunlardır:

Neden Açıklama Sorun giderme adımlarını kimler gerçekleştirebilir?
Protokol uyuşmazlığı İstemci tarafından kullanılan protokol sunucu tarafından desteklenmiyor. Gizli ve Herkese Açık Bulut kullanıcıları
Cipher Suite uyuşmazlığı İstemci tarafından kullanılan şifre paketi, sunucu tarafından desteklenmiyor. Gizli ve Herkese Açık Bulut kullanıcıları
Yanlış Sertifika İstemci tarafından kullanılan URL'deki ana makine adı, sertifikadaki ana makine adıyla eşleşmiyor depolanan verileri içerebilir. Gizli ve Herkese Açık Bulut kullanıcıları
Eksik veya geçersiz bir sertifika zinciri, istemci ya da sunucu tarafında depolanır. Gizli ve Herkese Açık Bulut kullanıcıları
İstemci tarafından sunucuya veya sunucudan yanlış ya da süresi dolmuş bir sertifika gönderildi teslim etmeye odaklandığı teslimatı öğrendiniz. Gizli ve Herkese Açık Bulut kullanıcıları
SNI Etkin Sunucu Arka uç sunucusunda Sunucu Adı Göstergesi (SNI) etkin olmalıdır, ancak istemci, müşterinin bu hizmetle SNI sunucuları. Yalnızca Private Cloud kullanıcıları

Protokol Uyuşmazlık

İstemci tarafından kullanılan protokol veya giden (güneye giden) bağlantıda çalışır. Şu kaynakları da inceleyin Kuzeye ve güneye giden bağlantıları anlama

Teşhis

  1. Hatanın kuzey sınırında mı yoksa Güneye giden bağlantı. Bu konuda daha fazla yardım almak için belirlemek için Sorunun kaynağını belirlemek.
  2. tcpdump yardımcı programını sunar:
    • Private Cloud kullanıcısıysanız tcpdump verilerini toplayabilirsiniz. sunucudaki tüm verileri toplamanızı sağlar. İstemci, istemci uygulaması olabilir (gelen, veya kuzeye giden bağlantılar) ya da İşlemci (giden veya güneye giden bağlantılar için). Sunucu, uç yönlendirici olabilir ( gelen veya kuzeye giden bağlantılar) ya da arka uç sunucusuna (giden veya güneye giden bağlantılar için) otomatik olarak yeniden adlandırılacak.
    • Herkese açık Cloud kullanıcısıysanız tcpdump verilerini toplayabilirsiniz. yalnızca istemci uygulamasında (gelen veya kuzeye giden bağlantılar için) ya da arka uç sunucusunda veriler (giden veya güneye giden bağlantılar için), veya İleti İşlemcisi'ne erişimi yoktur.
    tcpdump -i any -s 0 host IP address -w File name
    
    Bkz. tcpdump kullanımı hakkında daha fazla bilgi için tcpdump verilerini inceleyin. komutuna ekleyin.
  3. Wireshark aracını kullanarak tcpdump verilerini analiz edin kullanabilirsiniz.
  4. Elektronik tablo kullanarak yapılmış tcpdump komutunu kullanın.
    • Bu örnekte, İleti İşleyen ile arasında gerçekleştirilen TLS/SSL el sıkışma hatası arka uç sunucusuna (giden veya güneye giden bağlantı) ekleyebilirsiniz.
    • Aşağıdaki tcpdump çıkışında bulunan 4. ileti, İleti İşleyen (Kaynak) tarafından "Müşteri Merhaba" mesajı arka uç sunucusuna (Hedef) iletir.

    • Client Hello mesajını seçerseniz İletiyi İşleyen Aşağıda gösterildiği gibi TLSv1.2 protokolü:

    • 5. mesaj, arka uç sunucusunun "Client Hello"yu onayladığını gösterir adlı kullanıcıdan mesaj Mesaj İşleyen.
    • Arka uç sunucusu hemen Kritik Uyarı : Kapat Bilgilendirme'yi İleti İşleyici (mesaj 6). Bu, TLS/SSL El Sıkışmasının başarısız olduğu ve bağlantının emin olun.
    • 6. mesaj daha ayrıntılı olarak incelendiğinde TLS/SSL el sıkışması hatasının nedeni, TLS/SSL el sıkışma hatasının arka uç sunucusu, aşağıda gösterildiği gibi yalnızca TLSv1.0 protokolünü destekler:

    • Çünkü Mesaj İşleyen tarafından kullanılan protokol ile arka uç sunucusu şu mesajı gönderdi: Önemli Uyarı Mesajı: Kapat Bildir'i tıklayın.

Çözünürlük

İleti İşleyici, Java 8'de çalışır ve varsayılan olarak TLSv1.2 protokolünü kullanır. Arka uç sunucu TLSv1.2 protokolünü desteklemiyorsa, sorunu çözmek için aşağıdaki adımlardan birini uygulayabilirsiniz şu sorun:

  1. Arka uç sunucunuzu TLSv1.2 protokolünü destekleyecek şekilde yükseltin. Bu çözümün TLSv1.2 protokolü daha güvenlidir.
  2. Herhangi bir nedenden dolayı arka uç sunucunuzu hemen yükseltemezseniz İleti İşleyen’i, ile iletişim kurmak için TLSv1.0 protokolünü kullanmaya arka uç sunucusuna aktarmak için aşağıdaki adımları uygulayın:
    1. Proxy'nin TargetEndpoint tanımında bir hedef sunucu belirtmediyseniz, Protocol öğesini TLSv1.0 için gösterildiği gibi aşağıda bulabilirsiniz:
      <TargetEndpoint name="default">
       …
       <HTTPTargetConnection>
         <SSLInfo>
             <Enabled>true</Enabled>
             <Protocols>
                 <Protocol>TLSv1.0</Protocol>
             </Protocols>
         </SSLInfo>
         <URL>https://myservice.com</URL>
       </HTTPTargetConnection>
       …
      </TargetEndpoint>
      
    2. Şunu yapılandırdıysanız: hedef sunucunuzu seçin, ardından yönetim API'sini kullanarak protokolü TLSv1.0 olarak hedef sunucu yapılandırması.

Cipher Uyuşmazlığı

İstemci tarafından kullanılan şifre paketi algoritması değilse TLS/SSL el sıkışma hatası görebilirsiniz Apigee Edge'de gelen (kuzeyye) veya giden (güneye) bağlantıda sunucu tarafından desteklenir. Şu kaynakları da inceleyin: Kuzeye ve güneye giden bağlantıları anlama

Teşhis

  1. Hatanın şu zamanda oluşup oluşmadığını kuzeyden veya güne doğru bağlantı. Bu kararı vermekle ilgili daha fazla yardım için bkz. Hedef kitlesi sorunun kaynağını öğrenin.
  2. tcpdump yardımcı programını sunar:
    • Private Cloud kullanıcısıysanız tcpdump verilerini toplayabilirsiniz. sunucudaki tüm verileri toplamanızı sağlar. İstemci, istemci uygulaması olabilir (gelen, veya kuzeye giden bağlantılar) ya da İşlemci (giden veya güneye giden bağlantılar için). Sunucu, uç yönlendirici olabilir ( gelen veya kuzeye giden bağlantılar) ya da arka uç sunucusuna (giden veya güneye giden bağlantılar için) otomatik olarak yeniden adlandırılacak.
    • Herkese açık Cloud kullanıcısıysanız tcpdump verilerini toplayabilirsiniz. yalnızca istemci uygulamasında (gelen veya kuzeye giden bağlantılar için) ya da arka uç sunucusunda veriler (giden veya güneye giden bağlantılar için), veya İleti İşlemcisi'ne erişimi yoktur.
    tcpdump -i any -s 0 host IP address -w File name
    
    Bkz. tcpdump verileri için tcpdump komutunu kullanma hakkında daha fazla bilgi edinin.
  3. Wireshark aracını kullanarak tcpdump verilerini analiz edin bildiğiniz başka bir aracı kullanabilirsiniz.
  4. Wireshark kullanılarak tcpdump çıkışının örnek analizi aşağıda verilmiştir:
    • Bu örnekte, TLS/SSL El Sıkışma hatası, İstemci uygulaması ile Uç yönlendirici (kuzey bağlantısı). tcpdump çıkışı Edge'de toplandı yönlendirici.
    • Aşağıdaki tcpdump çıkışında bulunan 4. mesaj, istemci uygulamasının (kaynak) bir "Müşteri Merhaba" mesajı görebilirsiniz.

    • İstemci Hello mesajı seçildiğinde, istemci uygulamanın TLSv1.2 protokolü.

    • 5. mesaj, Uç Yönlendiricinin "İstemci Hello"yu onayladığını gösterir adlı kullanıcıdan mesaj kullanır.
    • Edge yönlendiricisi, istemci uygulamasına (ileti 6). Bu, TLS/SSL el sıkışmasının başarısız olduğu ve bağlantının kapanacak.
    • 6 numaralı mesaj ayrıntılı olarak incelendiğinde aşağıdaki bilgiler gösterilmektedir:
      • Uç Yönlendirici, TLSv1.2 protokolünü destekler. Bu, protokolün istemci uygulaması ile Uç Yönlendirici arasında bağlantı kurulur.
      • Bununla birlikte, Edge yönlendiricisi Kritik Uyarı: El Sıkışma" göndermeye devam eder. Aşağıdaki ekran görüntüsünde gösterildiği gibi istemci uygulamasında hata:

    • Hata, aşağıdaki sorunlardan birinin sonucu olabilir:
      • İstemci uygulaması, Uç Yönlendirici.
      • Uç Yönlendirici'de SNI etkin ancak istemci uygulaması sunucu adı.
    • tcpdump çıktısındaki 4. mesaj, istemci tarafından desteklenen şifre paketi algoritmalarını listeliyor aşağıdaki gibi kullanın:

    • Uç Yönlendirici tarafından desteklenen şifre paketi algoritmaları listesi /opt/nginx/conf.d/0-default.conf dosyası yükleyin. Bu örnekte, Uç Yönlendirici yalnızca Yüksek Şifreleme şifre paketi algoritmalarını destekler.
    • İstemci uygulaması Yüksek Şifreleme şifre paketi algoritmalarından hiçbirini kullanmıyor. Bu uyumsuzluk, TLS/SSL el sıkışma hatası.
    • Uç Yönlendiricide SNI etkin olduğu için tcpdump çıkışında 4. mesaja gidip aşağı kaydırın aşağıdaki örnekte gösterildiği gibi, istemci uygulamasının, sunucu adını doğru bir şekilde gönderdiğinden emin olun: aşağıdaki resme bakın:


    • Bu ad geçerliyse TLS/SSL el sıkışma hatasının istemci uygulama tarafından kullanılan şifre paketi algoritmalarının uç yönlendirici.

Çözünürlük

İstemcinin kullandığınız şifre paketi algoritmalarını kullandığından emin olun. tarafından desteklenir. Önceki bölümde açıklanan sorunu çözmek Teşhis bölümü, Java Cryptography Extension (JCE) paketini açıp Java'ya ekleyin şifre paketi algoritmalarını desteklemek için yüklenmelidir.

Yanlış Sertifika

Anahtar deposunda/güven deposunda yanlış sertifikalarınız varsa TLS/SSL el sıkışma hatası oluşur. veya giden (güneye giden) bağlantıda çalışır. Şu kaynakları da inceleyin Kuzeye ve güneye giden bağlantıları anlama

Sorun kuzey yönlü ise farklı hata mesajları görebilirsiniz farklı nedenleri olabilir.

Aşağıdaki bölümlerde örnek hata mesajları ve bu sorunu teşhis edip çözme adımlarına yer verilmiştir .

Hata mesajları

TLS/SSL el sıkışma hatasının nedenine bağlı olarak farklı hata mesajları görebilirsiniz. Aşağıda, bir API proxy'sini çağırdığınızda karşılaşabileceğiniz örnek bir hata mesajı verilmiştir:

* SSL certificate problem: Invalid certificate chain
* Closing connection 0
curl: (60) SSL certificate problem: Invalid certificate chain
More details here: http://curl.haxx.se/docs/sslcerts.html

Olası nedenler

Bu sorunun tipik nedenleri şunlardır:

Neden Açıklama Sorun giderme adımlarını kimler gerçekleştirebilir?
Ana Makine Adı Uyuşmazlığı URL'de kullanılan ana makine adı ve yönlendiricinin anahtar deposundaki sertifika, eşleşmesini sağlar. Örneğin, URL'de kullanılan ana makine adı myorg.domain.com ise sertifikanın CN'sinde CN=something.domain.com. ana makinesinin adı vardır

Edge Özel ve Herkese Açık Bulut kullanıcıları
Eksik veya Yanlış sertifika zincir Sertifika zinciri eksik veya doğru değil. Yalnızca Edge Özel ve Herkese Açık Bulut kullanıcıları
tarafından gönderilen, süresi dolmuş veya bilinmeyen sunucu veya istemci Süresi dolmuş veya bilinmeyen bir sertifika, sunucu ya da istemci tarafından kuzeye doğru veya güneye doğru bağlantıyı sağlar. Edge Private Cloud ve Edge Herkese Açık Bulut kullanıcıları

Ana makine adı Uyuşmazlık

Teşhis

  1. Aşağıdaki Edge management API çağrısının döndürdüğü URL'de kullanılan ana makine adını not edin:
    curl -v https://myorg.domain.com/v1/getinfo
    Örnek:
    curl -v https://api.enterprise.apigee.com/v1/getinfo
  2. Belirli bir anahtar deposunda depolanan sertifikada kullanılan CN'yi alın. URL parametrelerinin Google tarafından nasıl ele alınmasını istediğinizi belirtmek için aşağıdaki sırayı takip ederek sertifikanın ayrıntılarını alabilirsiniz:
    1. Anahtar deposundan sertifika adını alın:

      Private Cloud kullanıcısıysanız Management API'yi aşağıdaki şekilde kullanın:
      curl -v https://management-server-ip:port/v1/organizations/org-name/environments/env-name/keystores/keystore-name/certs
      Herkese açık Cloud kullanıcısıysanız Management API'yi aşağıdaki şekilde kullanın:
      curl -v https://api.enterprise.apigee.com/v1/organizations/org-name/environments/env-name/keystores/keystore-name/certs
      
    2. Edge management API'yi kullanarak anahtar deposunda sertifika ayrıntılarını alın.
      .
      . Private Cloud kullanıcısıysanız:
      curl -v https://management-server-ip:port/v1/organizations/org-name/environments/env-name/keystores/keystore-name/certs/cert-name
      
      Herkese açık Cloud kullanıcısıysanız:
      curl -v https://api.enterprise.apigee.com/v1/organizations/org-name/environments/env-name/keystores/keystore-name/certs/cert-name
      

      Örnek sertifika:

      "certInfo": [
          {
            "basicConstraints": "CA:FALSE",
            "expiryDate": 1456258950000,
            "isValid": "No",
            "issuer": "SERIALNUMBER=07969287, CN=Go Daddy Secure Certification Authority, OU=http://certificates.godaddy.com/repository, O=\"GoDaddy.com, Inc.\", L=Scottsdale, ST=Arizona, C=US",
            "publicKey": "RSA Public Key, 2048 bits",
            "serialNumber": "07:bc:a7:39:03:f1:56",
            "sigAlgName": "SHA1withRSA",
            "subject": "CN=something.domain.com, OU=Domain Control Validated, O=something.domain.com",
            "validFrom": 1358287055000,
            "version": 3
          },
      

      Birincil sertifikadaki konu adı CN'yi something.domain.com..

      Çünkü API istek URL'sinde kullanılan ana makine adı (yukarıdaki 1. adıma bakın) ve konusunda sertifikadaki ad eşleşmiyorsa TLS/SSL el sıkışma hatası alırsınız.

Çözünürlük

Bu sorun, aşağıdaki iki yöntemden biriyle çözülebilir:

  • Konu CN'sinde joker karakter bulunan bir sertifika edinin (henüz yoksa) ve ardından yeni tam sertifika zincirini anahtar deposuna yükleyin. Örneğin:
    "subject": "CN=*.domain.com, OU=Domain Control Validated, O=*.domain.com",
  • Mevcut bir konu CN'si olan bir sertifika edinin (henüz yoksa) your-orgyour-domain adlı konuyu, alternatif bir konu adı olarak kullanın ve anahtar deposuna taşımanızı sağlar.

Referanslar

Anahtar depoları ve Truststores

Eksik veya yanlış sertifika zinciri

Teşhis

  1. Belirli bir anahtar deposunda depolanan sertifikada kullanılan CN'yi alın. URL parametrelerinin Google tarafından nasıl ele alınmasını istediğinizi belirtmek için aşağıdaki sırayı takip ederek sertifikanın ayrıntılarını alabilirsiniz:
    1. Anahtar deposundan sertifika adını alın:

      Private Cloud kullanıcısıysanız:
      curl -v https://management-server-ip:port/v1/organizations/org-name/environments/env-name/keystores/keystore-name/certs
      
      Herkese açık Cloud kullanıcısıysanız:
      curl -v https://api.enterprise.apigee.com/v1/organizations/org-name/environments/env-name/keystores/keystore-name/certs
      
    2. Anahtar deposunda sertifika ayrıntılarını alın:

      Private Cloud kullanıcısıysanız:
      curl -v https://management-server-ip:port/v1/organizations/org-name/environments/env-name/keystores/keystore-name/certs/cert-name
      
      Herkese açık Cloud kullanıcısıysanız:
      curl -v https://api.enterprise.apigee.com/v1/organizations/org-name/environments/env-name/keystores/keystore-name/certs/cert-name
      
    3. Sertifikayı ve zincirini doğrulama ve politikaya uygunluğundan emin olma lütfen makalede belirtilen kurallara Sertifika zincirlerinin işleyiş şekli, geçerli ve eksiksiz bir sertifika sağlar sertifika zincirine benzer. Anahtar deposunda saklanan sertifika zincirinin eksik veya geçersiz olursa TLS/SSL el sıkışması başarısız olur.
    4. Aşağıdaki grafikte geçersiz sertifika zincirine sahip örnek bir sertifika gösterilmektedir. Bu durumda, ara ve kök sertifikalar eşleşmez:
    5. Sertifikayı veren ve kök sertifikanın konu eşleşmiyor


Çözünürlük

  1. Henüz yoksa) eksiksiz ve geçerli bir sertifika içeren sertifika zincirine benzer.
  2. Sertifika zincirinin doğru olduğunu onaylamak ve tamamlandı:
    openssl verify -CAfile root-cert -untrusted intermediate-cert main-cert
  3. Doğrulanmış sertifika zincirini anahtar deposuna yükleyin.

Süresi dolmuş veya bilinmiyor sunucu veya istemci tarafından gönderilen sertifika

Sunucu/istemci tarafından kuzeye doğru hatalı/süresi dolmuş bir sertifika gönderilirse güneye giden bağlantıda, diğer uç (sunucu/istemci) sertifikayı reddeder TLS/SSL el sıkışma hatasına neden olur.

Teşhis

  1. Hatanın kuzey sınırında mı yoksa Güneye giden bağlantı. Bu konuda daha fazla yardım almak için belirlemek için Sorunun kaynağını belirlemek.
  2. tcpdump yardımcı programını sunar:
    • Private Cloud kullanıcısıysanız tcpdump verilerini toplayabilirsiniz. sunucudaki tüm verileri toplamanızı sağlar. İstemci, istemci uygulaması olabilir (gelen, veya kuzeye giden bağlantılar) ya da İşlemci (giden veya güneye giden bağlantılar için). Sunucu, uç yönlendirici olabilir ( gelen veya kuzeye giden bağlantılar) ya da arka uç sunucusuna (giden veya güneye giden bağlantılar için) otomatik olarak yeniden adlandırılacak.
    • Herkese açık Cloud kullanıcısıysanız tcpdump verilerini toplayabilirsiniz. yalnızca istemci uygulamasında (gelen veya kuzeye giden bağlantılar için) ya da arka uç sunucusunda veriler (giden veya güneye giden bağlantılar için), veya İleti İşlemcisi'ne erişimi yoktur.
    tcpdump -i any -s 0 host IP address -w File name
    
    Bkz. tcpdump verileri için tcpdump komutunu kullanma hakkında daha fazla bilgi edinin.
  3. tcpdump verilerini Wireshark veya kullanabilirsiniz.
  4. tcpdump çıkışından reddeden ana makineyi (istemci veya sunucu) belirleyin. sertifikasına ihtiyacınız var.
  5. Diğer uçtan gönderilen sertifikayı tcpdump çıkışından alabilirsiniz ( Veriler şifrelenmez. Bu sertifika, güvenilir sertifikanız olduğundan emin olun.
  6. Mesaj İşleyici ile Mesaj İşleyici arasındaki SSL iletişimi için örneği tcpdump inceleyin. arka uç sunucusuna gidin.

    Bilinmeyen Sertifika hatasını gösteren örnek tcpdump


    1. Mesaj İşleyici (istemci), "Client Hello"yu gönderir arka uç sunucusuna (server) ifadesini kullandığınızdan emin olun.
    2. Arka uç sunucusu "Sunucu Hello"yu gönderir İletiyi İşleyen’e iletilecek 61.
    3. Kullanılan protokol ve şifre paketi algoritmalarını karşılıklı olarak doğrularlar.
    4. Arka uç sunucusu, Sertifika ve Sunucu Merhaba Tamamlandı mesajını 68 numaralı mesajdaki Mesaj İşleyici.
    5. İleti İşleyen, Önemli Uyarıyı gönderir. "Açıklama: Sertifika Bilinmiyor" ifadesini içeren bir yanıt gönderin.
    6. 70 numaralı mesaj incelendiğinde, başka herhangi bir ayrıntıya yer verilmemiştir. uyarı mesajından daha fazlasını içerir:


    7. Arka uç tarafından gönderilen sertifikayla ilgili ayrıntıları almak için 68 numaralı mesajı inceleyin sunucuyu tanımlarsınız:

    8. Arka uç sunucusunun sertifikası ve zincirinin tamamı kullanılabilir “Sertifikalar” bölümüne ekleyin.
  7. Yönlendirici (kuzey doğrultusunda) veya yönlendirici tarafından sertifikanın bilinmediği belirlenirse Yukarıda gösterilen örnekte olduğu gibi Mesaj İşleyici (güneye giden) gidin, ardından şu adımları izleyin: için şu adımları izleyin:
    1. Sertifikayı ve ilgili güven deposunda depolanan zincirini alın. (bkz. yönlendiricinin sanal ana makine yapılandırmasına ve (İleti İşleyen). Aşağıdaki API'leri kullanarak sertifika:
      1. Truststore'dan sertifika adını alın:
        curl -v https://management-server-ip:port/v1/organizations/org-name/environments/env-name/keystores/truststore-name/certs
      2. Truststore'da sertifika ayrıntılarını alın:
        curl -v https://management-server-ip:port/v1/organizations/org-name/environments/env-name/keystores/truststore-name/certs/cert-name
    2. Sertifikanın Yönlendiricinin güven deposunda mı (kuzey yönlü) yoksa İleti İşleyen (güneye giden), istemci uygulamasının (kuzeyye doğru) veya hedef sunucunun (güneye giden) anahtar deposunu ya da tcpdump çıkışından elde edilen bir değerdir. Uyuşmazlık varsa bunun nedeni budur TLS/SSL el sıkışma hatası.
  8. Sertifika, istemci uygulaması tarafından (kuzeyden) bilinmiyorsa veya hedef sunucuya (güneye) gidin, ardından şu adımları uygulayın:
    1. Belirli anahtar deposuna gidin. (Yönlendirici ve hedef uç nokta için sanal ana makine yapılandırmasına bakın yapılandırması için de geçerlidir.) Aşağıdaki API'leri kullanarak hakkında daha fazla bilgi edinin:
      1. Anahtar deposundan sertifika adını alın:
        curl -v https://management-server-ip:port/v1/organizations/org-name/environments/env-name/keystores/keystore-name/certs
      2. Anahtar deposunda sertifika ayrıntılarını alın:
        curl -v https://management-server-ip:port/v1/organizations/org-name/environments/env-name/keystores/keystore-name/certs/cert-name
        
    2. Sertifikanın Yönlendiricinin anahtar deposunda (kuzey yönlü) veya İleti İşleyici (güneye giden), veya hedef sunucu (güneye) veya tcpdump çıkışından elde edildi. Uyuşmazlık varsa SSL'nin nedeni budur. el sıkışma hatası.
  9. Sunucu/istemci tarafından gönderilen sertifikanın süresinin dolduğu tespit edilirse, istemci/sunucu sertifikayı reddeder ve tcpdump:

    Uyarı (Seviye: Önemli, Açıklama: Sertifikanın süresi doldu)

  10. Uygun ana makinenin anahtar deposundaki sertifikanın süresinin dolduğunu doğrulayın.

Çözünürlük

Yukarıdaki örnekte tanımlanan sorunu çözmek için geçerli arka uç sunucusunun güvenene bildirmeyi unutmayın.

Aşağıdaki tabloda sorun.

Neden Açıklama Çözüm
Süresi Dolmuş Sertifika NorthBound
  • Yönlendiricinin anahtar deposunda saklanan sertifikanın süresi dolmuş.
  • İstemci uygulamanın anahtar deposunda depolanan sertifikanın süresi dolmuş (2 yönlü SSL) tıklayın.
Yeni bir sertifikayı ve tüm zincirini uygun sertifikadaki anahtar deposuna yükleyin ana bilgisayar.
SouthBound
  • Hedef Sunucu'nun anahtar deposunda depolanan sertifikanın süresi doldu.
  • Mesaj İşleyici'nin anahtar deposunda saklanan sertifikanın süresi dolmuş (2 yönlü SSL) tıklayın.
Yeni bir sertifikayı ve tüm zincirini uygun sertifikadaki anahtar deposuna yükleyin ana bilgisayar.
Bilinmeyen Sertifika NorthBound
  • İstemci uygulamanın güven deposunda depolanan sertifika eşleşmiyor Yönlendiricinin sertifikası.
  • Yönlendiricinin güven deposunda saklanan sertifika istemci ile eşleşmiyor sertifikasına (2 yönlü SSL) karşılık gelmelidir.
Geçerli sertifikayı uygun ana makinedeki güven deposuna yükleyin.
SouthBound
  • Hedef sunucunun güven deposunda saklanan sertifika ile eşleşmiyor İleti İşleyen'in sertifikası.
  • İleti İşleyici'nin güven deposunda depolanan sertifika eşleşmiyor hedef sunucunun sertifikası (2 yönlü SSL) ile uyumludur.
Geçerli sertifikayı uygun ana makinedeki güven deposuna yükleyin.

SNI Etkin Sunucu

İstemci bir Sunucuyla iletişim kurarken TLS/SSL el sıkışma hatası ortaya çıkabilir Ad Göstergesi (SNI) Etkin Sunucu ancak istemcide SNI etkin değil. Bu, kuzey ucunda da olabilir, güneye doğru bağlantımız var.

Öncelikle, kullanılan sunucunun ana makine adını ve bağlantı noktası numarasını tanımlamanız ve bu bilgilerin doğru olup olmadığını kontrol etmeniz gerekir. olup olmadığını kontrol edin.

SNI'nin etkin olduğu sunucunun kimliği

  1. openssl komutunu yürütün ve ilgili sunucu ana makine adına (Edge) bağlanmayı deneyin Yönlendirici veya arka uç sunucusu) sunucu adını iletmeden, aşağıda gösterildiği gibi:
    openssl s_client -connect hostname:port
    
    Sertifikaları alabilirsiniz ve bazen Aşağıdaki gibi opensl komutunu girin:
    CONNECTED(00000003)
    9362:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_clnt.c:593
    
  2. openssl komutunu yürütün ve ilgili sunucu ana makine adına bağlanmayı deneyin (ucuz yönlendirici veya arka uç sunucusu) aşağıdaki gibi sunucu adını ileterek:
    openssl s_client -connect hostname:port -servername hostname
    
  3. 1. adımda bir el sıkışma hatası veya 1. adımda farklı sertifikalar alırsanız 2. adıma ayarlanırsa, belirtilen sunucuda SNI'nin etkin olduğu belirtilir.

Sunucuda SNI'nin etkin olduğunu belirledikten sonra, aşağıdaki adımları uygulayarak TLS/SSL el sıkışma hatasının, istemcinin kontrol eder.

Teşhis

  1. Hatanın kuzey sınırında mı yoksa Güneye giden bağlantı. Bu konuda daha fazla yardım almak için belirlemek için Sorunun kaynağını belirlemek.
  2. tcpdump yardımcı programını sunar:
    • Private Cloud kullanıcısıysanız tcpdump verilerini toplayabilirsiniz. sunucudaki tüm verileri toplamanızı sağlar. İstemci, istemci uygulaması olabilir (gelen, veya kuzeye giden bağlantılar) ya da İşlemci (giden veya güneye giden bağlantılar için). Sunucu, uç yönlendirici olabilir ( gelen veya kuzeye giden bağlantılar) ya da arka uç sunucusuna (giden veya güneye giden bağlantılar için) otomatik olarak yeniden adlandırılacak.
    • Herkese açık Cloud kullanıcısıysanız tcpdump verilerini toplayabilirsiniz. yalnızca istemci uygulamasında (gelen veya kuzeye giden bağlantılar için) ya da arka uç sunucusunda veriler (giden veya güneye giden bağlantılar için), veya İleti İşlemcisi'ne erişimi yoktur.
    tcpdump -i any -s 0 host IP address -w File name
    
    Görüntüleyin tcpdump verileri için tcpdump komutunu kullanma hakkında daha fazla bilgi edinin.
  3. tcpdump çıkışını Wireshark veya kullanabilirsiniz.
  4. Wireshark kullanılarak tcpdump örneğinin analizi aşağıda verilmiştir:
    1. Bu örnekte, Edge İletisi ile arasında gerçekleşen TLS/SSL el sıkışma hatası İşlemci ve arka uç sunucusu (güneye giden bağlantı).
    2. Aşağıdaki tcpdump çıkışında yer alan 4. mesajda, İleti İşleyen (kaynak) "Müşteri Merhaba" arka uç sunucusuna (hedef) mesaj göndermelidir.

    3. "Müşteri Hello"yu seçme Mesaj, Mesajın İşlemci, TLSv1.2 protokolünü kullanıyor.

    4. 4. mesaj, arka uç sunucusunun "Client Hello"yu onayladığını gösterir mesaj seçmeniz gerekir.
    5. Arka uç sunucusu hemen bir Önemli Uyarı : El Sıkışma gönderir İleti İşleyen: hata [mesaj 5]. Bu, TLS/SSL el sıkışması anlamına gelir. başarısız oldu ve bağlantı kapatılacak.
    6. Aşağıdaki bilgileri keşfetmek için 6 numaralı mesajı inceleyin
      • Arka uç sunucusu TLSv1.2 protokolünü destekliyor. Bu, protokolün arka uç sunucusu ile eşleştirilmesi gerekir.
      • Ancak arka uç sunucusu Önemli Uyarı: El Sıkışma'yı göndermeye devam eder. Mesaj İşleyici'nin aşağıdaki şekilde gösterildiği gibi başarısız olması:

    7. Bu hatanın nedeni aşağıdakilerden biri olabilir:
      • İleti İşleyen, arka uç sunucusuna gidin.
      • Arka uç sunucusunda SNI etkin ancak istemci uygulama göndermiyor girin.
    8. tcpdump çıkışındaki 3. mesajı (Müşteri Hello) daha ayrıntılı bir şekilde inceleyin. Lütfen Uzantı: server_name (aşağıda gösterildiği gibi) eksik:

    9. Bu, İletiyi İşleyen’in server_name parametresini SNI özellikli arka uç sunucuya gönderin.
    10. TLS/SSL el sıkışma hatasının ve arka ucun , İletiye Kritik Uyarı: El Sıkışma Hatası'nı gönderir. İşleyen.
  5. içindeki jsse.enableSNIExtension property öğesinin geçerli olduğunu doğrulayın system.properties, İleti İşleyen'de false (yanlış) değerine ayarlanır. İleti İşleyici, SNI özellikli sunucuyla iletişim kurmak için etkinleştirilmedi.

Çözünürlük

şu adımları uygulayın:

  1. /opt/apigee/customer/application/message-processor.properties oluşturun dosyası (mevcut değilse).
  2. Aşağıdaki satırı bu dosyaya ekleyin: conf_system_jsse.enableSNIExtension=true.
  3. Bu dosyanın sahibini apigee:apigee adlı kullanıcıya atayın:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. Mesaj İşleyici'yi yeniden başlatın.
    /opt/apigee/apigee-service/bin/apigee-service message-processor restart
  5. Birden fazla Mesaj İşleyiciniz varsa tüm mesajlarda 1'den 4'e kadar olan adımları Mesaj İşleyiciler.

TLS/SSL El Sıkışma hatasının nedenini belirleyemiyorsanız veya daha fazla yardıma ihtiyacınız olursa Apigee Edge Desteği. Sorunla ilgili tüm ayrıntıları aşağıdaki adresle paylaşın: tcpdump çıkışı.