Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, API çağrılarına yanıt olarak 503 Service Unavailable HTTP durum kodunu ve messaging.adaptors.http.flow.SslHandshakeFailed hata kodunu alır.
Hata mesajı
İstemci uygulaması aşağıdaki yanıt kodunu alır:
HTTP/1.1 503 Service Unavailable
Ayrıca aşağıdaki hata mesajını da görebilirsiniz:
{
"fault":{
"faultstring":"SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target",
"detail":{
"errorcode":"messaging.adaptors.http.flow.SslHandshakeFailed"
}
}
}Olası nedenler
Apigee Edge'in Mesaj İşleyici'si ile arka uç sunucusu arasındaki SSL el sıkışma sürecinde yaşanan bir hata nedeniyle çeşitli nedenlerden dolayı 503 Service Unavailable durum koduyla birlikte messaging.adaptors.http.flow.SslHandshakeFailed hata kodunu alabilirsiniz. Hata mesajı, faultstring genellikle
bu hataya yol açan olası bir üst düzey nedeni gösterir.
faultstring içinde gözlemlenen hata mesajına bağlı olarak, sorunu gidermek için uygun teknikleri kullanmanız gerekir. Bu oyun kitabı, faultstring bölümünde SSL Handshake failed
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target hata mesajını görürseniz bu hatayı nasıl gidereceğinizi açıklar.
Bu hata, Apigee Edge'in mesaj işlemcisi ile arka uç sunucusu arasındaki SSL anlaşması sırasında oluşur:
- Apigee Edge'in Mesaj İşleyicisinin truststore'u:
- Arka uç sunucusunun tam sertifika zinciriyle eşleşmeyen bir sertifika zinciri içeriyorsa VEYA
- Arka uç sunucusunun tam sertifika zincirini içermiyor
- Arka uç sunucusu tarafından sunulan sertifika zinciri:
- Hedef uç noktada belirtilen ana makine adıyla eşleşmeyen Tam Nitelikli Alan Adı (FQDN) içeriyor.
- Yanlış veya eksik sertifika zinciri içeriyor
Bu sorunun olası nedenleri şunlardır:
| Neden | Açıklama | Aşağıdaki ürünler için geçerli sorun giderme talimatları |
|---|---|---|
| İleti işlemcisinin güvenli deposunda yanlış/eksik sertifika veya sertifika zinciri | Apigee Edge'in Mesaj İşleyici'sinin güvenli sertifika deposunda saklanan sertifika ve/veya zinciri, arka uç sunucusunun sertifika zinciriyle eşleşmiyor veya arka uç sunucusunun tam sertifika zincirini içermiyor. | Edge Private ve Public Cloud kullanıcıları |
| Arka uç sunucusunun sertifikasındaki FQDN ile hedef uç noktadaki ana makine adının eşleşmemesi | Arka uç sunucusu tarafından sunulan sertifika, hedef uç noktada belirtilen ana makine adıyla eşleşmeyen bir FQDN içeriyor. | Edge Private ve Public Cloud kullanıcıları |
| Arka uç sunucusu tarafından sunulan sertifika veya sertifika zinciri yanlış/eksik | Arka uç sunucusu tarafından sunulan sertifika zinciri yanlış veya eksik. | Edge Private ve Public Cloud kullanıcıları |
Sık karşılaşılan teşhis adımları
Bu hatayı teşhis etmek için aşağıdaki araçlardan/tekniklerden birini kullanın:
API Monitoring
1. Prosedür: API İzleme'yi kullanma
API İzleme'yi kullanarak hatayı teşhis etmek için:
- Apigee Edge kullanıcı arayüzünde oturum açın. Uygun bir role sahip bir kullanıcı olarak oturum açmanız gerekir.
Sorunu incelemek istediğiniz kuruluşa geçin.
- Analyze > API Monitoring > Investigate (Analiz > API İzleme > İnceleme) sayfasına gidin.
- Hataları gözlemlediğiniz belirli zaman aralığını seçin.
Hata Kodunu Zaman ile karşılaştırın.
Aşağıda gösterildiği gibi, hata kodunu
messaging.adaptors.http.flow.SslHandshakeFailediçeren bir hücre seçin:
Hata kodu
messaging.adaptors.http.flow.SslHandshakeFailedile ilgili bilgiler aşağıda gösterildiği gibi görüntülenir:
Günlükleri görüntüle 'yi tıklayın ve başarısız isteğin satırını genişletin.
- Günlükler penceresinde aşağıdaki ayrıntıları not edin:
- İstek İleti Kimliği
- Durum Kodu:
503 - Hata Kaynağı:
target - Hata Kodu:
messaging.adaptors.http.flow.SslHandshakeFailed
Trace
2. Prosedür: Trace aracını kullanma
İzleme aracını kullanarak hatayı teşhis etmek için:
- İzleme oturumunu etkinleştirin ve şunlardan birini yapın:
503 Service Unavailablehata kodlumessaging.adaptors.http.flow.SslHandshakeFailedhatasının oluşmasını bekleyin veya- Sorunu yeniden oluşturabiliyorsanız sorunu yeniden oluşturmak için API çağrısı yapın.
503 Service Unavailable
Tüm FlowInfo'ları göster'in etkinleştirildiğinden emin olun:

- Başarısız olan isteklerden birini seçip izlemeyi inceleyin.
- İzlemenin farklı aşamalarında gezinin ve hatanın nerede oluştuğunu bulun.
Hatayı genellikle aşağıdaki örnekte gösterildiği gibi Target Request Flow Started aşamasından sonra görürsünüz:

- İzleme işleminden aşağıdaki değerleri not edin:
- hata:
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target - error.cause:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target - error.class:
com.apigee.errors.http.server.ServiceUnavailableException SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targethata değeri, Apigee Edge'in mesaj işlemcisi arka uç sunucusunun sertifikasını doğrulayamadığı için SSL el sıkışmasının başarısız olduğunu gösterir.
- hata:
- İzleme işleminde AX (Analytics Verileri Kaydedildi) aşamasına gidin ve bu aşamayı tıklayın.
Aşama Ayrıntıları Hata Başlıkları bölümüne gidin ve aşağıdaki gibi X-Apigee-fault-code, X-Apigee-fault-source ve X-Apigee-Message-ID değerlerini belirleyin:

- X-Apigee-fault-code, X-Apigee-fault-source ve X-Apigee-Message-ID değerlerini not edin:
| Hata üstbilgileri | Değer |
|---|---|
| X-Apigee-fault-code | messaging.adaptors.http.flow.SslHandshakeFailed |
| X-Apigee-fault-source | target |
| X-Apigee-Message-ID | MESSAGE_ID |
NGINX
3. Prosedür: NGINX erişim günlüklerini kullanma
NGINX erişim günlüklerini kullanarak hatayı teşhis etmek için:
- Özel bulut kullanıcısıysanız HTTP
503 Service Unavailableile ilgili temel bilgileri belirlemek için NGINX erişim günlüklerini kullanabilirsiniz. NGINX erişim günlüklerini kontrol edin:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- Belirli bir süre boyunca
503hata koduylamessaging.adaptors.http.flow.SslHandshakeFailedhata olup olmadığını (sorun geçmişte yaşandıysa) veya503ile hâlâ başarısız olan istekler olup olmadığını arayın. X-Apigee-fault-code değerinin
messaging.adaptors.http.flow.SslHandshakeFaileddeğeriyle eşleştiği503hataları bulursanız X-Apigee-fault-source değerini belirleyin.NGINX erişim günlüğünden örnek 503 hatası:
NGINX erişim günlüğündeki yukarıdaki örnek girişte, X-Apigee-fault-code ve X-Apigee-fault-source için aşağıdaki değerler yer almaktadır:
Üst bilgiler Değer X-Apigee-fault-code messaging.adaptors.http.flow.SslHandshakeFailedX-Apigee-fault-source target
Mesaj işleyici günlükleri
4. İşlem: Mesaj İşleyici günlüklerini kullanma
- Genel teşhis adımları bölümünde açıklandığı gibi API İzleme, Trace aracı veya NGINX Erişim Günlükleri'ni kullanarak başarısız olan isteklerden birinin ileti kimliğini belirleyin.
Mesaj İşleyici günlüğünde (
/opt/apigee/var/log/edge-message-processor/logs/system.log) belirli istek ileti kimliğini arayın. Aşağıdaki hatayı görebilirsiniz:org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1NIOThread@1 ERROR HTTP.CLIENT - HTTPClient$Context.handshakeFailed() : SSLClientChannel[Connected: Remote:X.X.X.X:443 Local:192.168.194.140:55102]@64596 useCount=1 bytesRead=0 bytesWritten=0 age=233ms lastIO=233ms isOpen=true handshake failed, message: General SSLEngine problemYukarıdaki hata, ileti işlemcisi ile arka uç sunucusu arasında SSL el sıkışma işleminin başarısız olduğunu gösterir.
Bunu, aşağıda gösterildiği gibi ayrıntılı yığın izleme (stack trace) içeren bir istisna izler:
org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onException() : RequestWriteListener.onException(HTTPRequest@1522922c) javax.net.ssl.SSLHandshakeException: General SSLEngine problem at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1478) at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535) ... <snipped> Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem at sun.security.ssl.Alerts.getSSLException(Alerts.java:203) at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1728) ... <snipped>Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetat sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397) at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302) ... <snipped>El sıkışma hatasının nedenleri:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetBu, Apigee Edge’in Mesaj İşleyici arka uç sunucusunun sertifikasını doğrulayamadığı için SSL el sıkışmasının başarısız olduğunu gösterir.
Neden: Mesaj işlemcisinin güvenli deposunda yanlış/eksik sertifika veya sertifika zinciri
Teşhis
- Sık karşılaşılan teşhis adımları bölümünde açıklandığı gibi API İzleme, İzleme Aracı veya NGINX erişim günlükleri kullanılarak gözlemlenen hatanın Hata Kodunu ve Hata Kaynağını belirleyin.
- Hata Kodu
messaging.adaptors.http.flow.SslHandshakeFailedise aşağıdaki yöntemlerden birini kullanarak hata mesajını belirleyin: - Yaygın teşhis adımları bölümünde açıklandığı gibi İzleme aracını kullanarak error.cause değerini bulun.
- Sık karşılaşılan teşhis adımları bölümünde açıklandığı gibi, Mesaj İşleyici Günlüklerini kullanarak istisnayı bulun.
- Hata mesajı bölümünde gösterildiği gibi, API çağrınıza verilen hata yanıtındaki
faultstringdeğerini bulun. - Hata mesajı
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"ise Apigee Edge'in mesaj işlemcisi arka uç sunucusunun sertifikasını doğrulayamadığı için SSL el sıkışmasının başarısız olduğunu gösterir.
Bu sorunu iki aşamada ayıklayabilirsiniz:
- 1. aşama: Arka uç sunucusunun sertifika zincirini belirleyin
- 2. aşama: İleti işlemcisinin güvenli deposunda saklanan sertifika zincirini karşılaştırın
1. Aşama
1. aşama: Arka uç sunucusunun sertifika zincirini belirleyin
Arka uç sunucusunun sertifika zincirini belirlemek için aşağıdaki yöntemlerden birini kullanın:
openssl
Arka uç sunucusunun ana makine adına karşı openssl komutunu aşağıdaki gibi yürütün:
openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT#
Yukarıdaki komutun çıktısından sertifika zincirini not edin:
openssl komut çıkışından örnek arka uç sunucusu sertifika zinciri:
Certificate chain 0 s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 2 s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
tcpdump
- Herkese açık bulut kullanıcısıysanız TCP/IP paketlerini arka uç sunucusunda yakalayın.
- Özel bulut kullanıcısıysanız TCP/IP paketlerini arka uç sunucusunda veya Mesaj İşleyicisinde yakalayabilirsiniz. Paketlerin arka uç sunucusunda şifresi çözüldüğünden, tercihen arka uç sunucusunda yakalayın.
TCP/IP paketlerini yakalamak için aşağıdaki tcpdump komutunu kullanın:
tcpdump -i any -s 0 host IP_ADDRESS -w FILE_NAME
TCP/IP paketlerini Wireshark aracı veya benzeri bir araçla analiz edin.
Tcpdump'ın örnek analizi
- Paket #43: Mesaj İşleyici (Kaynak), arka uç sunucusuna (Hedef) bir
Client Hellomesajı gönderdi. - Paket #44: Arka uç sunucusu, Mesaj İşleyici'den gelen
Client Hellomesajının alındığını onaylar. - Paket #45: Arka uç sunucusu, sertifikasıyla birlikte
Server Hellomesajını gönderir. - Paket #46: Mesaj İşleyici,
Server Helloiletisinin ve sertifikanın alındığını onaylar. Paket #47: Mesaj İşleyici,
FIN, ACKmesajını gönderir. Ardından Paket #48'deRST, ACKmesajı gönderilir.Bu, Mesaj İşleyici tarafından arka uç sunucu sertifikası doğrulamasının başarısız olduğunu gösterir. Bunun nedeni, Mesaj İşleyici'de arka uç sunucunun sertifikasıyla eşleşen bir sertifika olmaması veya Mesaj İşleyici'nin güven deposunda bulunan sertifikalarla arka uç sunucunun sertifikasına güvenilememesidir.
Geri dönüp Paket #45'i inceleyebilir ve arka uç sunucusu tarafından gönderilen sertifika zincirini belirleyebilirsiniz.
- Bu örnekte, sunucunun
common name (CN) = mocktarget.apigee.netile bir yaprak sertifikası, ardındanCN= GTS CA 1D4ile bir ara sertifika veCN = GTX Root R1ile bir kök sertifika gönderdiği görülmektedir.
Sunucunun sertifika doğrulamasının başarısız olduğunu belirlediyseniz 2. Aşama: Arka uç sunucusunun sertifikası ile Mesaj İşleyici'nin güvenilir sertifika deposunda saklanan sertifikaları karşılaştırın bölümüne gidin.
- Paket #43: Mesaj İşleyici (Kaynak), arka uç sunucusuna (Hedef) bir
2. Aşama
2. aşama: Arka uç sunucusunun sertifikası ile Message Processor'ın güvenilir sertifika deposunda saklanan sertifikaları karşılaştırın
- Arka uç sunucusunun sertifika zincirini belirleyin.
- Aşağıdaki adımları kullanarak ileti işlemcisinin güvenli deposunda depolanan sertifikayı belirleyin:
TrustStoreöğesinden güven deposu referans adını alın.TargetEndpointbölümündekiSSLInfo.SSLInfoyapılandırmasındaki birTargetEndpointbölümüne bakalım:<TargetEndpoint name="default"> ... <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://myKeystoreRef</KeyStore> <KeyAlias>myKey</KeyAlias> <TrustStore> ref://myCompanyTrustStoreRef </TrustStore> </SSLInfo> </HTTPTargetConnection> ... </TargetEndpoint>- Yukarıdaki örnekte,
TrustStorereferans adımyCompanyTruststoreRef'dir. Edge kullanıcı arayüzünde Ortamlar > Referanslar'ı seçin. Belirli güven deposu referansı için Referans sütunundaki adı not edin. Bu, güvenli depo adınız olacaktır.
Yukarıdaki örnekte güvenli depo adı şöyledir:
myCompanyTruststoreRef:
myCompanyTruststore
Aşağıdaki API'leri kullanarak güvenli depoda (önceki adımda belirlenmiştir) depolanan sertifikaları alın:
Bir anahtar deposu veya güven deposu için tüm sertifikaları alın. Bu API, belirli bir güven deposundaki tüm sertifikaları listeler.
Herkese açık bulut kullanıcısı:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
Private Cloud kullanıcısı:
curl -v -X GET http://MANAGEMENT_HOST:PORT_#/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
Nerede:
- ORGANIZATION_NAME, kuruluşun adıdır.
- ENVIRONMENT_NAME, ortamın adıdır.
- KEYSTORE_NAME, anahtar deposunun adıdır.
- $TOKEN, OAuth 2.0 erişim jetonu alma bölümünde açıklandığı gibi OAuth 2.0 erişim jetonunuza ayarlanır.
- Bu örnekte kullanılan
curlseçenekleri, curl kullanma başlıklı makalede açıklanmıştır.
Örnek çıkış:
Örnek güvenilir sertifika deposundaki
myCompanyTruststoresertifikalar şunlardır:[ "serverCert" ]
-
Bir anahtar deposu veya güven deposundan belirli bir sertifikanın sertifika ayrıntılarını alın.
Bu API, belirli bir güven deposundaki belirli bir sertifika hakkındaki bilgileri döndürür.
Herkese açık bulut kullanıcısı:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs/CERT_NAME -H "Authorization: Bearer $TOKEN"
Private Cloud kullanıcısı
curl -v -X GET http://MANAGEMENT_HOST:PORT_#>/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs/CERT_NAME -H "Authorization: Bearer $TOKEN"
Nerede:
- ORGANIZATION_NAME, kuruluşun adıdır.
- ENVIRONMENT_NAME, ortamın adıdır.
- KEYSTORE_NAME, anahtar deposunun adıdır.
- CERT_NAME, sertifikanın adıdır.
- $TOKEN, OAuth 2.0 erişim jetonu alma bölümünde açıklandığı gibi OAuth 2.0 erişim jetonunuza ayarlanır.
- Bu örnekte kullanılan
curlseçenekleri, curl kullanma başlıklı makalede açıklanmıştır.
Örnek Çıkış
serverCertayrıntılarında konu ve veren kuruluş aşağıdaki gibi gösterilir:Leaf/Entity Certificate:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
Ara Sertifika:
"subject" : "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US", "issuer" : "CN=GTS Root R1, O=Google Trust Services LLC, C=US",
1. adımda alınan gerçek sunucu sertifikası ile 3. adımda alınan güvenli depoda saklanan sertifikanın eşleştiğini doğrulayın. Eşleşmiyorlarsa sorunun nedeni budur.
Yukarıdaki örnekte gösterilen sertifikalara tek tek bakalım:
- Varlık sertifikası:
Arka uç sunucusundan:
s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4
İleti İşlemcisi'nin (istemci) güvenli deposundan:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
Güvenilirlik deposunda saklanan yaprak sertifikası, arka uç sunucusunun sertifikasıyla eşleşir.
- Ara sertifika:
Arka uç sunucusundan:
s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
İleti İşlemcisi'nin (istemci) güvenli deposundan:
"subject" : "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US", "issuer" : "CN=GTS Root R1, O=Google Trust Services LLC, C=US",
Güven deposunda saklanan ara sertifika, arka uç sunucusunun sertifikasıyla eşleşiyor.
- Kök sertifika:
Arka uç sunucusundan:
s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
Kök sertifika, Message Processor'ın güvenilir sertifika deposunda tamamen eksik.
Kök sertifika güvenli depoda eksik olduğundan, Mesaj İşleyici aşağıdaki istisnayı oluşturur:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
ve istemci uygulamalarına
messaging.adaptors.http.flow.SslHandshakeFailedhata koduyla503 Service Unavailabledöndürür.
- Varlık sertifikası:
Çözünürlük
- Arka uç sunucusunun uygun ve eksiksiz sertifika zincirine sahip olduğunuzdan emin olun.
- Herkese açık bulut kullanıcısıysanız sertifikayı Apigee Edge'in Mesaj İşleyici güvenilir sertifika deposuna güncellemek için Bulut için TLS sertifikasını güncelleme başlıklı makaledeki talimatları uygulayın.
- Private Cloud kullanıcısıysanız sertifikayı Apigee Edge'in Mesaj İşleyici güvenli anahtar deposuna güncellemek için Private Cloud için TLS sertifikasını güncelleme başlıklı makaledeki talimatları uygulayın.
Nedeni: Arka uç sunucusunun sertifikasındaki FQDN ile hedef uç noktasındaki ana makine adının eşleşmemesi
Arka uç sunucusu, hedef uç noktada belirtilen ana makine adıyla eşleşmeyen FQDN içeren bir sertifika zinciri sunarsa Apigee Edge'in Message Process'i SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target hatasını döndürür.
Teşhis
- Bu hatayı gözlemlediğiniz API proxy'sindeki belirli hedef uç noktayı inceleyin ve arka uç sunucusunun ana makine adını not edin:
Örnek TargetEndpoint:
<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.company.com/resource</URL> </HTTPTargetConnection> </TargetEndpoint>Yukarıdaki örnekte, arka uç sunucusunun ana makine adı
backend.company.com'dır. Arka uç sunucusunun sertifikasındaki FQDN'yi aşağıdaki gibi
opensslkomutunu kullanarak belirleyin:openssl s_client -connect BACKEND_SERVER_HOST_NAME>:PORT_#>
Örneğin:
openssl s_client -connect backend.company.com:443
Certificate chainbölümünü inceleyin ve yaprak sertifikasının konusundaki CN'nin bir parçası olarak belirtilen FQDN'yi not edin.Certificate chain 0 s:/
CN=backend.apigee.neti:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 2 s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1Yukarıdaki örnekte, arka uç sunucusunun FQDN'si
backend.apigee.net'dır.- 1. adımda elde edilen arka uç sunucusunun ana makine adı ile 2. adımda elde edilen FQDN eşleşmiyorsa hatanın nedeni budur.
- Yukarıda bahsedilen örnekte, hedef uç noktasındaki ana makine adı
backend.company.com'dır. Ancak arka uç sunucusunun sertifikasındaki FQDN adıbackend.apigee.net. Eşleşmedikleri için bu hatayı alırsınız.
Çözünürlük
Bu sorunu aşağıdaki yöntemlerden birini kullanarak düzeltebilirsiniz:
Doğru FQDN
Arka uç sunucusunun anahtar deposunu doğru FQDN, geçerli ve eksiksiz sertifika zinciriyle güncelleyin:
- Doğru FQDN'ye sahip bir arka uç sunucusu sertifikanız yoksa uygun bir CA'dan (sertifika yetkilisi) doğru sertifikayı edinin.
Geçerli ve eksiksiz bir arka uç sunucusu sertifika zincirine sahip olduğunuzu doğrulayın.
- Yaprak veya tüzel kişi sertifikasında, hedef uç noktada belirtilen ana makine adıyla aynı olan arka uç sunucusunun doğru FQDN'siyle geçerli ve eksiksiz bir sertifika zincirine sahip olduğunuzda arka ucun anahtar deposunu eksiksiz sertifika zinciriyle güncelleyin.
Doğru arka uç sunucusu
Hedef uç noktayı doğru arka uç sunucusunun ana makine adıyla güncelleyin:
- Ana makine adı hedef uç noktada yanlış belirtilmişse hedef uç noktayı, arka uç sunucusunun sertifikasındaki FQDN ile eşleşen doğru ana makine adını içerecek şekilde güncelleyin.
API proxy'sinde yapılan değişiklikleri kaydedin.
Yukarıda bahsedilen örnekte, arka uç sunucusu ana makine adı yanlış belirtilmişse arka uç sunucusunun sertifikasındaki FQDN'yi kullanarak bu sorunu düzeltebilirsiniz. Bu durumda,
backend.apigee.netşu şekilde olur:<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.apigee.net/resource</URL> </HTTPTargetConnection> </TargetEndpoint>
Neden: Arka uç sunucusu tarafından sunulan sertifika veya sertifika zinciri yanlış/eksik
Teşhis
- Arka uç sunucusunun ana makine adına karşı aşağıdaki gibi
opensslkomutunu çalıştırarak arka uç sunucusunun sertifika zincirini alın:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
Yukarıdaki komutun çıktısındaki
Certificate chainişaretine dikkat edin.openssl komut çıkışından örnek arka uç sunucusu sertifika zinciri:
Certificate chain 0 s:/
CN=mocktarget.apigee.neti:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 - Sertifika zincirini doğrulama bölümünde açıklandığı gibi uygun ve eksiksiz bir sertifika zincirine sahip olduğunuzu doğrulayın.
Arka uç sunucusu için geçerli ve eksiksiz bir sertifika zinciriniz yoksa bu sorunun nedeni budur.
Yukarıda gösterilen örnek arka uç sunucusunun sertifika zincirinde kök sertifika eksik. Bu nedenle bu hatayı alırsınız.
Çözünürlük
Arka uç sunucusunun anahtar deposunu geçerli ve eksiksiz bir sertifika zinciriyle güncelleyin:
Geçerli ve eksiksiz bir arka uç sunucusu sertifika zincirine sahip olduğunuzu doğrulayın.
- Arka uç sunucusunun anahtar deposundaki geçerli ve eksiksiz sertifika zincirini güncelleyin.
Sorun devam ederse Teşhis bilgileri toplanmalıdır bölümüne gidin.
Teşhis bilgilerini toplamalıdır
Yukarıdaki talimatları uyguladıktan sonra sorun devam ederse aşağıdaki teşhis bilgilerini toplayın ve Apigee Edge Destek Ekibi ile iletişime geçin:
- Herkese açık bulut kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Kuruluş adı
- Ortam adı
- API proxy'si adı
- Hatayı yeniden oluşturmak için
curlkomutunu tamamlayın. - Hatayı gösteren izleme dosyası
opensslkomutunun çıkışı:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#- Arka uç sunucusunda yakalanan TCP/IP paketleri
- Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Gözlemlenen hata mesajının tamamı
- API proxy paketi
- Hatayı gösteren izleme dosyası
- Mesaj işleyici günlükleri
/opt/apigee/var/log/edge-message-processor/logs/system.log opensslkomutunun çıkışı:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#- Arka uç sunucusunda veya Mesaj İşleyicisinde yakalanan TCP/IP paketleri.
- Get all certificates for a keystore or truststore API'sinin çıkışı ve Get Cert Details from a Keystore or Truststore API'si kullanılarak elde edilen her sertifikanın ayrıntıları.
Referanslar
- Sertifika güven zinciri
- OpenSSL komutu