Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, "SSL sertifika hatası" mesajıyla HTTP 400 - Bad request yanıtı alıyor. Bu hata genellikle, Apigee Edge'e gelen bağlantı için etkinleştirilen iki yönlü TLS kurulumunda Edge yönlendiricisi tarafından gönderilir.
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ı gösterilir:
<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 şunlardır:
| Neden | Açıklama | Aşağıdaki Durumlarda Geçerli Sorun Giderme Talimatları |
| Süresi dolmuş istemci sertifikası | İstemci tarafından gönderilen sertifikanın süresi doldu. | Edge Private ve Public Cloud kullanıcıları |
| İstemci tarafından yanlış sertifika gönderildi | Bu hata, istemci uygulaması tarafından gönderilen sertifika, Edge'in yönlendiricisinin güvenilir sertifika deposunda depolanan sertifikayla eşleşmediğinde verilir. | Edge Private ve Public Cloud kullanıcıları |
| Güvenli depoda eksik istemci kök sertifikası | Bu hata, istemcinin CA tarafından imzalanmış kök sertifikası Edge'in yönlendiricisinin güven deposunda eksikse oluşur. | Edge Private ve Public Cloud kullanıcıları |
| İstemci sertifikaları, Edge yönlendiriciye yüklenmiyor | Bu hata, güven deposuna yüklenen istemci sertifikaları yönlendiriciye yüklenmediğinde oluşur. | Edge Private Cloud kullanıcıları |
Neden: İstemci sertifikasının süresi dolmuş
Bu sorun genellikle 2 yönlü TLS için istemci tarafından gönderilen sertifikanın süresi dolduğunda ortaya çıkar. İki yönlü TLS'de hem istemci hem de sunucu, el sıkışmayı gerçekleştirmek için ortak sertifikalarını değiştirir. İ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ı anahtar deposuna, istemci sertifikası ise güvenilir sertifika depolarına eklenir.
TLS el sıkışması sırasında istemci sertifikasının süresinin dolduğu tespit edilirse sunucu, "SSL sertifikası hatası" mesajıyla birlikte 400 - Bad request (400 - Hatalı istek) hatasını gönderir.
Teşhis
Edge kullanıcı arayüzünde oturum açın ve API isteğinin yapıldığı belirli sanal ana makine yapılandırmasını (Yönetici > Sanal Ana Makineler) görüntüleyin veya belirli sanal ana makinenin tanımını almak için Sanal ana makine API'sini alma yönetim API'sini kullanın.
Genellikle iki yönlü TLS iletişimi için sanal ana makine 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 güvenilen depolar referansını belirleyin. Yukarıdaki örnekte, Truststore referans adı myTruststoreRef'tir.
- Güven deposu referansının işaret ettiği güven deposunu belirleyin.
- Edge kullanıcı arayüzünde Admin > Environments > References'a (Yönetici > Ortamlar > Referanslar) gidin ve Truststore referans adını arayın.
Belirli Truststore referansı için Referans sütunundaki adı not edin. Bu, güven deposu adınız olacaktır.
Şekil 1 Yukarıdaki örnekte, myTruststoreRef'in myTruststore referansına sahip olduğunu unutmayın. Bu nedenle, Truststore adı myTruststore'dır.
- Edge kullanıcı arayüzünde Yönetici > Ortamlar > TLS Anahtar Depoları'nda TLS Anahtar Depoları'na gidin ve 3. adımda bulunan güven deposunu bulun.
Aşağıda gösterildiği gibi, belirli Truststore'daki (yukarıdaki 3. adımda belirlenir) sertifikayı seçin:
Şekil 2 Yukarıdaki örnekte
client-cert-markwdiğer adıyla sertifikanın süresinin dolduğu gösteriliyor.- Güvenli depolama alanınızın sertifika takma adı için sertifikanın süresinin dolup dolmadığını kontrol edin.
- Sertifikanın süresi dolmamışsa Diğer Nedenlerle İlgili Genel Teşhis Adımları'na geçin.
Çözünürlük
Yeni bir sertifika edinin ve sertifikayı yükleyin:
- Yeni bir güven deposu oluşturun (örneğin, myNewTruststore).
- Yeni sertifikayı yeni oluşturulan güvenli depoya yükleyin.
Referansı değiştirme bölümünde verilen adımları kullanarak belirli sanal ana makinede kullanılan güvenli depo referansını yeni güvenli depoya yönlendirecek şekilde değiştirin.
Yukarıda açıklanan örnekte, myTruststoreRef referansını myNewTruststore olarak ayarlayın.
Diğer Nedenler İçin Yaygın Teşhis Adımları
- Bu sorunu araştırmak için tcpdump aracını kullanarak TCP/IP paketlerini yakalamanız gerekir.
- Özel Cloud kullanıcısıysanız TCP/IP paketlerini istemci uygulamasında veya yönlendiricide yakalayabilirsiniz.
- Herkese Açık Bulut kullanıcısıysanız TCP/IP paketlerini istemci uygulamasında yakalayın.
TCP/IP paketlerini nerede yakalamak istediğinize karar verdikten sonra, TCP/IP paketlerini yakalamak için aşağıdaki tcpdump komutunu kullanın:
tcpdump -i any -s 0 host <IP address> -w <File name>
Not: TCP/IP paketlerini yönlendiricide alıyorsanız
tcpdumpkomutunda istemci uygulamasının genel IP adresini kullanın.TCP/IP paketlerini istemci uygulamasında alıyorsanız
tcpdumpkomutunda sanal ana makinede kullanılan ana makine adının genel IP adresini kullanın.Bu araç ve bu komutun diğer varyantları hakkında daha fazla bilgi için tcpdump başlıklı makaleyi inceleyin.
- Wireshark aracı veya benzeri bir araçla toplanan TCP/IP paketlerini analiz edin.
Wireshark aracı kullanılarak örnek TCP/IP paketleri verilerinin analizi aşağıda verilmiştir:
- tcpdump'taki (aşağıdaki resim) 30 numaralı paket, İstemci Uygulamasının (kaynak) Yönlendiriciye (hedef) "Client Hello" mesajı gönderdiğini gösteriyor.
- 34 numaralı paket, yönlendiricinin istemci uygulamasından gelen Client Hello mesajını onayladığını gösterir.
- Yönlendirici, 35 numaralı pakette "Server Hello"yu gönderir, ardından sertifikasını gönderir ve 38 numaralı pakette istemci uygulamasından sertifikasını göndermesini ister.
- Yönlendiricinin "Sertifika İsteği" paketini gönderdiği 38 numaralı pakette, istemci sertifikası, zinciri ve yönlendirici (sunucu) tarafından kabul edilen sertifika yetkilileri hakkında ayrıntılar sağlayan "Ayırt Edici Adlar" bölümünü kontrol edin.
İstemci uygulaması, sertifikasını 41 numaralı pakette gönderir. 41 numaralı paketteki Certificate Verify bölümünü kontrol edin ve istemci uygulaması tarafından gönderilen sertifikayı belirleyin.
Şekil 4 - İstemci uygulaması tarafından gönderilen sertifikanın ve zincirinin konusu ile vereninin (paket #41), yönlendiriciden gelen kabul edilen sertifika ve zinciriyle (paket #38) eşleşip eşleşmediğini doğrulayın. Uyuşmazlık varsa bu hatanın nedeni budur. Bu nedenle, yönlendirici (sunucu) şifrelenmiş uyarıyı (57 numaralı paket) ve ardından FIN, ACK'yi (58 numaralı paket) istemci uygulamasına gönderir ve bağlantı sonlandırılır.
- Sertifika ile zincirinin eşleşmemesi, aşağıdaki bölümlerde açıklanan senaryolardan kaynaklanabilir.
Neden: İstemci tarafından yanlış sertifika gönderildi
Bu durum genellikle istemci uygulaması tarafından gönderilen sertifikanın ve/veya zincirinin konusu/vereni, yönlendiricinin (sunucu) güvenilen sertifika deposunda depolanan sertifika ve/veya zinciriyle eşleşmediğinde ortaya çıkar.
Teşhis
Edge kullanıcı arayüzünde oturum açın ve API isteğinin yapıldığı belirli sanal ana makine yapılandırmasını (Yönetici > Sanal Ana Makineler) görüntüleyin veya belirli sanal ana makinenin tanımını almak için Sanal ana makine API'sini alma yönetim API'sini kullanın.
Genellikle iki yönlü TLS iletişimi için sanal ana makine 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üvenilen depolar referansını belirleyin.
Yukarıdaki örnekte, Truststore referans adı myCompanyTruststoreRef'tir.
- Güven deposu referansının işaret ettiği güven deposunu belirleyin.
- Edge kullanıcı arayüzünde Yönetici > Ortam Referansları'na gidin ve Truststore referans adını arayın.
Belirli Truststore referansı için Referans sütunundaki adı not edin. Bu, güven deposu adınız olacaktır.
Şekil 5 Yukarıdaki örnekte, myCompanyTruststoreRef'in myCompanyTruststore'a referansı olduğuna dikkat edin. Bu nedenle, güvenli depo adı myCompanyTruststore olur.
- Aşağıdaki API'leri kullanarak güvenli depolama alanında (önceki adımda belirlenmiştir) depolanan sertifikaları alın:
Bir anahtar deposu veya güven deposu API'si için sertifikaları listeleme.
Bu API, belirli bir güvenli depodaki tüm sertifikaları listeler.
Anahtar deposu veya güven deposu API'sinden sertifika ayrıntılarını alın.
Bu API, belirli bir güvenli depoda belirli bir sertifika hakkındaki bilgileri döndürür.
- myCompanyTruststore'da depolanan her sertifikanın ve zincirinin veren ile konu alanının, yukarıdaki TCP/IP paketlerinde (38 numaralı pakete bakın) görüldüğü gibi sertifikanın ve zincirinin veren ile konu alanıyla eşleşip eşleşmediğini kontrol edin. Bir uyuşmazlık varsa bu durum, güvenilir sertifika deposuna yüklenen sertifikaların Edge yönlendiricide yüklenmediğini gösterir. Neden: İstemci sertifikaları Edge yönlendiriciye yüklenmedi bölümüne gidin.
- 5. adımda eşleşmeme bulunmadıysa istemci uygulamasının doğru sertifikayı ve zincirini göndermediği anlaşılır.
Çözünürlük
Doğru sertifikanın ve zincirinin istemci uygulaması tarafından Edge'e gönderildiğinden emin olun.
Neden: Truststore'da istemci kök sertifikası eksik
Bu hata, istemcinin CA tarafından imzalanmış kök sertifikası Edge'in yönlendiricisinin güven deposunda eksikse oluşur.
Teşhis
Edge kullanıcı arayüzünde oturum açın ve API isteğinin yapıldığı sanal ana makine yapılandırmasını görüntüleyin (Yönetici > Sanal Ana Makineler > virtual_host) veya belirli sanal ana makinenin tanımını almak için Sanal ana makine API'sini al kullanın.
Genellikle iki yönlü TLS iletişimi için sanal ana makine 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üvenli depo referansını belirleyin. Önceki örnekte, güvenli depo referans adı myCompanyTruststoreRef'tir.
- Güven deposu referansı tarafından kullanılan gerçek güven deposunu belirleyin.
- Edge kullanıcı arayüzünde Admin > Environments > References'a (Yönetici > Ortamlar > Referanslar) gidin ve güvenli depolama referans adını arayın.
Belirli güvenilirlik deposu referansının güvenilirlik deposu adı, Referans sütunundadır.
Şekil 6 Bu örnekte, myCompanyTruststoreRef'in Referans sütununda myCompanyTruststore olduğunu unutmayın. Bu nedenle, güvenli depo adı myCompanyTruststore'dur.
- Aşağıdaki API'leri kullanarak güvenli depolama alanında (önceki adımda belirlenmiştir) depolanan sertifikaları alın:
- Bir anahtar deposu veya güven deposu API'si için sertifikaları listeleme. Bu API, güvenli depodaki tüm sertifikaları listeler.
- Anahtar deposu veya güven deposu API'sinden sertifika ayrıntılarını alma. Bu API, güvenli depodaki belirli bir sertifika hakkında bilgi döndürür.
Sertifikanın, TCP/IP paketlerinde (Şekil 4'e bakın) görüldüğü gibi belirli bir istemci tarafından gönderilen kök sertifika da dahil olmak üzere eksiksiz bir zincir içerip içermediğini kontrol edin. Güven deposu, kök sertifikanın yanı sıra istemcinin yaprak sertifikasını veya yaprak ve ara sertifikayı içermelidir. İstemcinin geçerli kök sertifikası güvenli sertifika deposunda eksikse hatanın nedeni budur.
Ancak istemcinin kök sertifika da dahil olmak üzere eksiksiz sertifika zinciri güven deposunda bulunuyorsa bu durum, güven deposuna yüklenen sertifikaların Edge yönlendiriciye yüklenmemiş olabileceğini gösterir. Bu durumda, Neden: İstemci sertifikaları Edge yönlendiriciye yüklenmedi başlıklı makaleyi inceleyin.
Çözünürlük
Kök sertifika da dahil olmak üzere doğru istemci sertifikasının Apigee Edge yönlendiricisinin güvenli deposunda bulunduğundan emin olun.
Neden: İstemci sertifikaları Edge yönlendiriciye yüklenmedi
- Public Cloud kullanıcısıysanız Apigee Edge Destek Ekibi ile iletişime geçin.
- Özel Bulut kullanıcısıysanız her yönlendiricide aşağıdaki talimatları uygulayın:
- Dosyanın
/opt/nginx/conf.d/OrgName_envName_vhostName-client.pembelirli sanal ana makine için mevcut olup olmadığını kontrol edin. Dosya yoksa aşağıdaki Çözüm bölümüne gidin. - Dosya varsa Edge yönlendiricide bulunan sertifikaların ayrıntılarını almak için aşağıdaki
opensslkomutunu kullanın:openssl -in <OrgName_envName_vhostName-client.pem> -text -noout
- Sertifikanın verenini, konusunu ve son kullanma tarihini kontrol edin. Bunlardan herhangi biri Edge kullanıcı arayüzündeki veya yönetim API'leri kullanılarak Truststore'da gözlemlenenlerle eşleşmiyorsa bu durum hatanın nedenidir.
- Yönlendirici, yüklenen sertifikaları yeniden yüklememiş olabilir.
- Dosyanın
Çözünürlük
Aşağıdaki adımı uygulayarak 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ın ve sonuçları kontrol edin. Sorun devam ederse Teşhis Bilgilerini Toplama bölümüne gidin.
Teşhis bilgilerini toplama
Yukarıdaki talimatları uyguladıktan sonra 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çerek paylaşın:
- Herkese açık bulut kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Kuruluş Adı
- Ortam adı
- API Proxy'sinin Adı
- Sanal Ana Makine Adı
- Ana Makine Takma Adı
- Hatayı yeniden oluşturmak için kullanılan curl komutunun tamamı
- İstemci uygulamasında yakalanan TCP/IP paketleri
- Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Get virtual host API kullanılarak sanal ana makine adı ve tanımı
- Ana Makine Takma Adı
- Gözlemlenen hata mesajının tamamı
- İstemci uygulamasında veya yönlendiricide yakalanan TCP/IP paketleri.
- List the certificates from the keystore API API'nin çıkışı ve Get cert details API kullanılarak alınan her sertifikanın ayrıntıları.
- Bu Playbook'taki hangi bölümleri denediğiniz ve bu sorunun çözümünü hızlandırmamıza yardımcı olacak diğer analizler hakkında ayrıntılar.