Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Belirti
İstemci uygulaması HTTP 400 - Hatalı istek yanıtını "SSL sertifika hatası" mesajı gösterilir. Bu hata genellikle Uç Yönlendirici tarafından gönderilir Apigee Edge'e gelen bağlantı için etkinleştirilen iki yönlü TLS kurulumu.
Hata Mesajı
İstemci uygulaması aşağıdaki yanıt kodunu alır:
HTTP/1.1 400 Bad Request
Ardından aşağıdaki HTML hata sayfası:
<html> <head> <title>400 The SSL certificate error</title> </head> <body bgcolor="white"> <center> <h1>400 Bad Request</h1> </center> <center>The SSL certificate error</center> <hr> <center>nginx</center> </body> </html>
Olası Nedenler
Bu sorunun olası nedenleri aşağıda açıklanmıştır:
Neden | Açıklama | Aşağıdakiler İçin Geçerli Sorun Giderme Talimatları |
Süresi dolmuş istemci sertifikası | İstemci tarafından gönderilen sertifikanın süresi dolmuş. | Edge Özel ve Herkese Açık Bulut kullanıcıları |
İstemci tarafından yanlış sertifika gönderildi | İstemci uygulama tarafından gönderilen sertifika eşleşmezse bu hata verilir Edge'in Yönlendiricisinin güven deposunda depolanan sertifika ile karşılaştırabilirsiniz. | Edge Özel ve Herkese Açık Bulut kullanıcıları |
Truststore'da İstemci Kök Sertifikası Eksik | İstemcinin CA imzalı kök sertifikası güven deposunu oluşturur. | Edge Özel ve Herkese Açık Bulut kullanıcıları |
İstemci Sertifikaları Uç Yönlendirici'ye yüklenmedi | Truststore'a yüklenen istemci sertifikaları yüklenmezse bu hata verilir üzerinde değişiklik yapabilirsiniz. | Edge Private Cloud kullanıcıları |
Neden: Süresi Dolmuş İstemci Sertifikası
Bu sorun genellikle 2 Yönlü TLS'de istemci tarafından gönderilen sertifikanın süresi dolduğunda. 2 yönlü TLS'de hem istemci hem sunucu değişimi el sıkışmalarını gerçekleştirebilmelerini sağlar. İstemci, sunucu sertifikasını doğrular ve sunucu, istemci sertifikasını doğrular.
Edge'de 2 yönlü TLS, sanal ana makinede uygulanır. Burada, sunucu sertifikasının Anahtar Deposu'na, istemci sertifikasının da güven depolarına eklendiği yer alır.
TLS el sıkışması sırasında istemci sertifikasının süresinin dolduğu tespit edilirse sunucu, 400 - Hatalı istek öğesini "SSL sertifikası hatası" mesajıyla gönderir.
Teşhis
Edge kullanıcı arayüzüne giriş yapın ve ilgili Sanal Ana Makine yapılandırmasını görüntüleyin (Yönetici > Sanal Ana Makineler) Sanal ana makine API'si al'ı kullanın veya kullanın management API'yi kullanabilirsiniz.
İki yönlü TLS iletişimi için sanal ana makine genellikle aşağıdaki gibi görünür:
<VirtualHost name="myTLSVHost"> <HostAliases> <HostAlias>api.myCompany.com</HostAlias> </HostAliases> <Port>443</Port> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://myKeystoreRef</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> <TrustStore>ref://myTruststoreRef</TrustStore> </SSLInfo> </VirtualHost>
Sanal ana makinede kullanılan Truststore referansını belirleyin. Yukarıdaki örnekte, Truststore referans adı myTruststoreRef'dir.
- Truststore referansının gösterdiği Truststore'u belirleyin
- Edge kullanıcı arayüzünde Yönetici > Ortamlar > Referanslar Truststore referans adını arayın.
Belirli Truststore referansı için Referans sütunundaki adı not edin. Bu, Truststore adınız olacaktır.
Yukarıdaki örnekte, myTruststoreRef öğesinin, alıcı: myTruststore. Bu nedenle, Truststore adı myTruststore şeklindedir.
- Yönetici > Ortamlar > Edge kullanıcı arayüzünde TLS Anahtar Depoları, TLS'ye gidin Anahtar depolarına bakın ve 3. adımda bulunan Truststore'u arayın.
Aşağıda gösterildiği gibi, ilgili Truststore'un altındaki (yukarıdaki 3. adımda belirtilmiştir) sertifikayı seçin:
Yukarıdaki örnekte
client-cert-markw
takma adına sahip sertifika, süresi doldu.- Truststore sertifika takma adınız için sertifikanın süresinin dolup dolmadığını kontrol edin.
- Sertifikanın süresi dolmamışsa Diğer Nedenler için Ortak Teşhis Adımları'na geçin.
Çözünürlük
Yeni bir sertifika temin edin ve sertifikayı yükleyin:
- Örneğin myNewTruststore gibi yeni bir güven deposu oluşturun.
- Yeni sertifikayı yeni oluşturulan güven deposuna yükleyin.
Belirli Sanal Ana Makinede kullanılan güvenen referansını yeni ana makineye işaret edecek şekilde değiştirin güven deposunu oluşturmak için Referansı değiştirme
Yukarıda açıklanan örnekte, myTruststoreRef to myNewTruststore referansını gösterin.
Diğer Nedenler İçin Yaygın Teşhis Adımları
- Bu sorunu araştırmak için
tcpdump aracını kullanın.
- Private Cloud kullanıcısıysanız TCP/IP paketlerini veya Yönlendirici.
- Herkese açık Bulut kullanıcısıysanız istemci uygulamasında TCP/IP paketlerini yakalayın.
TCP/IP paketlerini nerede yakalamak istediğinize karar verdikten sonra, aşağıdaki kodu kullanın: tcpdump komutunu kullanın:
tcpdump -i any -s 0 host <IP address> -w <File name>
Not: Yönlendirici üzerinden TCP/IP paketlerini alıyorsanız
tcpdump
komutunda istemci uygulamasının herkese açık IP adresini girin.İstemci uygulamasında TCP/IP paketlerini alıyorsanız herkese açık IP'yi kullanın
tcpdump
komutunda Sanal Ana Makine'de kullanılan ana makine adının adresini girin.tcpdump sayfasına bakın bu araç ve bu komutun diğer varyantları hakkında daha fazla bilgi edinin.
- Toplanan TCP/IP paketlerini analiz etmek için Wireshark aracı veya alışkın olduğunuz benzer bir araç.
Wireshark aracı kullanılarak örnek TCP/IP paketi verilerinin analizi aşağıda verilmiştir:
- tcpdump'taki 30 numaralı paket (aşağıdaki resim aşağıda verilmiştir) istemci uygulamasının (kaynak) bir "Müşteri Hello" gönderdi mesajı gösterir.
- 34 numaralı paket, Yönlendiricinin, istemci uygulamasından gelen İstemci Hello mesajını onayladığını gösterir.
- Yönlendirici, "Sunucu Hello"yu gönderir ve ardından sertifikasını gönderir ve ayrıca, istemci uygulamasından, sertifikasını 38 numaralı pakette göndermesini ister.
- Yönlendirici'nin "Sertifika İsteği" paketini gönderdiği 38 numaralı pakette, "Ayırt Edici Adlar" Bu bölümde, istemci sertifikası ve zinciri hakkında ayrıntılı bilgiler yer alır. Yönlendirici (sunucu) tarafından kabul edilen sertifika yetkilileri ve sertifika yetkilileri hakkında daha fazla bilgi edinebilirsiniz.
İstemci uygulama, sertifikasını 41 numaralı pakette gönderir. Sertifika Doğrulama bölümünü inceleyin ve istemci uygulaması tarafından gönderilen sertifikayı belirleyin.
- Konunun, sertifikayı verenin ve sertifika zincirinin istemci tarafından gönderilip gönderilmediğini doğrulayın uygulaması (paket #41), kabul edilen sertifikayla ve Yönlendirici'den alınan zinciriyle eşleşiyor (paket #38). Uyuşmazlık varsa bu hatanın nedeni budur. Dolayısıyla Yönlendirici (Sunucu), Şifrelenmiş Uyarı'yı (paket no. 57) ve ardından FIN, ACK'yı (paket 58) gönderir. İstemci Uygulaması ve sonunda bağlantı sonlandırılır.
- Sertifika ile zincirinin uyuşmazlığı, aşağıdaki senaryoda açıklanan senaryolardan kaynaklanabilir: bu bölümde bulabilirsiniz.
Neden: İstemci tarafından yanlış sertifika gönderildi
Bu durum, genellikle sertifikanın ve/veya zincirinin ilgili kişi/yayıncı tarafından gönderilen sertifikayla ve/veya Yönlendiricinin (Sunucu) güven deposunda saklanan sertifika zinciriyle eşleşmemektedir.
Teşhis
Edge kullanıcı arayüzünde oturum açın ve ilgili sanal ana makine yapılandırmasını görüntüleyin (Yönetici > Sanal Ana Makineler) Sanal ana makine API'si al kullanın veya bu API'yi kullanın management API'yi kullanabilirsiniz.
İki yönlü TLS iletişimi için sanal ana makine genellikle aşağıdaki gibi görünür:
<VirtualHost name="myTLSVHost"> <HostAliases> <HostAlias>api.myCompany.com</HostAlias> </HostAliases> <Port>443</Port> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://myKeystoreRef</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> <TrustStore>ref://myCompanyTruststoreRef</TrustStore> </SSLInfo> </VirtualHost>
- Sanal ana makinede kullanılan Truststore referansını belirleyin.
Yukarıdaki örnekte, Truststore referans adı myCompanyTruststoreRef
- Truststore referansının gösterdiği Truststore'u belirleyin
- Edge kullanıcı arayüzünde Yönetici > Ortam Referansları Truststore referans adını arayın.
Belirli Truststore referansı için Referans sütunundaki adı not edin. Bu, Truststore adınız olacaktır.
Yukarıdaki örnekte, myCompanyTruststoreRef öğesinin myCompanyTruststore referansı. Bu nedenle, Truststore adı, myCompanyTruststore'dur.
- Aşağıdaki API'leri kullanarak Truststore'da depolanan sertifikaları (önceki adımda belirlenmiş) alın:
Anahtar deposu veya güven deposu API'si için sertifikaları listeleyin.
Bu API, belirli bir Truststore'daki tüm sertifikaları listeler.
Bir anahtar deposundan veya güven deposu API'sından sertifika ayrıntılarını alın.
Bu API, belirli bir Truststore'daki belirli bir sertifikayla ilgili bilgileri döndürür.
- Her sertifikanın ve sertifika zincirinin düzenleyeninin ve konusunun myCompanyTruststore, sertifikanın ve zincirinin (bkz. 38 numaralı pakete bakın). Bir uyuşmazlık varsa güven deposuna yüklenen sertifikaların Uç Yönlendirici'ye yüklenmediğinden emin olun. Neden: İstemci Sertifikaları Uç Yönlendirici'ye yüklenmedi adımına geçin.
- 5. Adım'da bir uyuşmazlık bulunmazsa, bu, istemci uygulamasının doğru Sertifikayı ve zincirini göndermemelidir.
Çözünürlük
İstemci uygulaması tarafından Edge'e doğru sertifikanın ve zincirinin gönderildiğinden emin olun.
Neden: Truststore'da İstemci Kök Sertifikası eksik
İstemcinin CA imzalı kök sertifikası güven deposunu oluşturur.
Teşhis
Edge kullanıcı arayüzünde oturum açın ve API'nin gösterildiği sanal ana makine yapılandırmasını görüntüleyin isteği yapılıyor (Yönetici > Sanal Ana Makineler > virtual_host), veya Belirli bir sanal ana makinenin tanımını öğrenmek için sanal ana makine API'sini alın.
İki yönlü TLS iletişimi için sanal ana makine genellikle aşağıdaki gibi görünür:
<VirtualHost name="myTLSVHost"> <HostAliases> <HostAlias>api.myCompany.com</HostAlias> </HostAliases> <Port>443</Port> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://myKeystoreRef</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> <TrustStore>ref://myCompanyTruststoreRef</TrustStore> </SSLInfo> </VirtualHost>
- Sanal ana makinede kullanılan güven deposu referansını belirleyin. Önceki örnekte, güven deposu referans adı myCompanyTruststoreRef şeklindedir.
- Truststore referansı tarafından kullanılan gerçek güven deposunu belirleyin.
- Edge kullanıcı arayüzünde Yönetici > Ortamlar > Referanslar ve arama güven deposu referans adı için kullanılır.
Belirli Trustedstore referansının güven deposu adı şuradadır: Referans sütunu.
Bu örnekte, myCompanyTruststoreRef satırının Referans sütununda myCompanyTruststore değerini girin. Bu nedenle, güven deposu myCompanyTruststore adı.
- Bir önceki adımda belirlenen) güven deposunda depolanan sertifikaları almak için
aşağıdaki API'leri kullanabilirsiniz:
- Bir anahtar deposu veya güven deposu API'si için sertifikaları listeleyin. Bu API, işletmenizin emin olun.
- Bir anahtar deposundan veya Trustedstore API'den sertifika ayrıntılarını alın. Bu API, güven deposundaki belirli bir sertifika.
Sertifikanın, kök sertifika da dahil olmak üzere tam bir zincir içerip içermediğini kontrol edin. TCP/IP Paketlerinde görüldüğü şekilde belirli bir istemci tarafından gönderilir (bkz. Şekil 4). Truststore kök sertifikanın yanı sıra istemcinin yaprak sertifikasını veya yaprağı içermelidir ara sertifikadır. İstemcinin geçerli kök sertifikası güven deposunda yoksa hatanın nedeni budur.
Ancak kök sertifika da dahil olmak üzere istemcinin tam sertifika zinciri varsa güven deposunda bulunuyorsa bu, güvenilir sertifikaya yüklenen sertifikaların güven deposu, uç Yönlendirici'ye yüklenmeyebilir. Bu durumda, Neden: İstemci Sertifikaları Uç Yönlendirici'ye yüklenmedi.
Çözünürlük
Kök sertifika da dahil olmak üzere doğru istemci sertifikasının kullanılabilir olduğundan emin olun inceleyebilirsiniz.
Neden: İstemci Sertifikaları Uç Yönlendirici'ye yüklenmedi
- Herkese Açık Bulut kullanıcısıysanız Apigee Edge Destek Ekibi ile iletişime geçin.
- Private Cloud kullanıcısıysanız her bir Yönlendiricide aşağıdaki talimatları uygulayın:
/opt/nginx/conf.d/OrgName_envName_vhostName-client.pem
dosyasının mevcut olup olmadığını kontrol edin anlamına gelir. Dosya mevcut değilse şuraya taşıyın: Aşağıdaki Çözüm bölümünü inceleyin.- Dosya mevcutsa aşağıdaki
openssl
komutunu kullanarak var olan tüm sertifikaları kontrol edin:openssl -in <OrgName_envName_vhostName-client.pem> -text -noout
- Sertifikayı vereni, konusunu ve geçerlilik bitiş tarihini kontrol edin. Bunlardan herhangi biri eşleşmezse Edge kullanıcı arayüzündeki Truststore'da veya yönetim API'lerini kullanarak gözlemlenen bilgilerle yardımcı olur.
- Yönlendirici, yüklenen sertifikaları yeniden yüklememiş olabilir.
Çözünürlük
Aşağıdaki adımdan yararlanarak en son Sertifikaların yüklendiğinden emin olmak için Yönlendiriciyi yeniden başlatın:
apigee-service edge-router restart
API'leri yeniden çalıştırıp sonuçları kontrol edin. Sorun devam ederse şu adrese gidin: Teşhis Bilgilerini Toplama.
Teşhis Bilgilerini Toplama
Yukarıdaki talimatları uygulamanıza rağmen sorun devam ederse lütfen aşağıdaki teşhis bilgilerini toplayın. Topladığınız bilgileri Apigee Edge Destek Ekibi ile iletişime geçip paylaşın:
- Herkese Açık Bulut kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Kuruluş Adı
- Ortam Adı
- API Proxy Adı
- Sanal Ana Makine Adı
- Ana Makine Takma Adı Adı
- Hatayı yeniden oluşturmak için curl komutunu tamamlayın
- İstemci uygulamasında yakalanan TCP/IP paketleri
- Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Sanal ana makine API'sini al'ı kullanarak Sanal Ana Makine Adı ve tanımı
- Ana Makine Takma Adı Adı
- Tam Hata Mesajı gözlemlendi
- İstemci Uygulaması veya Yönlendiricisinde yakalanan TCP/IP paketleri.
- Listeleri anahtar deposu API'sinden listele çıktısı API ve Get Cert details API (Sertifika ayrıntıları API'sini alın) kullanılarak alınan her Sertifikanın ayrıntıları.
- Bu başucu kitabının hangi bölümlerini denediğiniz ve bunu yapmak için bu sorunun çözümünü bir an önce düşürmemize yardımcı olur.