Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, API çağrılarına yanıt olarak messaging.adaptors.http.flow.SslHandshakeFailed
hata koduyla birlikte 503 Service Unavailable
HTTP durum 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 İşleyicisi ile arka uç sunucusu arasındaki SSL el sıkışma sürecinde oluşan bir hatadan dolayı messaging.adaptors.http.flow.SslHandshakeFailed
hata koduyla birlikte 503 Service Unavailable
durum kodunu alabilirsiniz. faultstring
öğesindeki hata mesajı, genellikle bu hataya yol açan olası bir üst düzey nedeni belirtir.
faultstring
içinde gözlemlenen hata mesajına bağlı olarak, sorunu gidermek için uygun teknikleri kullanmanız gerekir. Bu başucu kitabında, faultstring
içindeki hata mesajını 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
görürseniz bu hatayı nasıl gidereceğiniz açıklanmaktadır.
Bu hata, Apigee Edge'in Mesaj İşleyicisi ile arka uç sunucusu arasındaki SSL el sıkışması sürecinde ortaya çıkar:
- Apigee Edge'in Mesaj İşleyicisinin güvenilir mağazası ise:
- 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ç noktasında belirtilen ana makine adıyla eşleşmeyen Tam Alan Adı (FQDN) içeriyor
- Yanlış veya eksik bir sertifika zinciri içeriyor
Bu sorunun olası nedenleri şunlardır:
Neden | Açıklama | Şunun için geçerli sorun giderme talimatları: |
---|---|---|
İleti işleyenin güven deposunda yanlış/eksik sertifika veya sertifika zinciri | Apigee Edge'in Mesaj İşleyicisinin güven deposunda depolanan sertifika ve/veya zinciri, arka uç sunucusunun sertifika zinciriyle eşleşmiyor ya da arka uç sunucusunun sertifika zincirinin tamamını içermiyor. | Edge Özel ve Genel Bulut kullanıcıları |
Arka uç sunucusunun sertifikasındaki FQDN ile hedef uç noktadaki ana makine adı uyuşmazlığı | Arka uç sunucusu tarafından sunulan sertifika, hedef uç noktasında belirtilen ana makine adıyla eşleşmeyen bir FQDN içeriyor. | Edge Özel ve Genel Bulut kullanıcıları |
Arka uç sunucu tarafından gösterilen yanlış/eksik sertifika veya sertifika zinciri | Arka uç sunucusu tarafından sunulan sertifika zinciri yanlış veya eksik. | Edge Özel ve Genel Bulut kullanıcıları |
Yaygın 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 Monitoring'i Kullanma
API Monitoring'i kullanarak hatayı teşhis etmek için:
- Uygun role sahip bir kullanıcı olarak Apigee Edge kullanıcı arayüzünde oturum açın.
Sorunu incelemek istediğiniz kuruluşa geçin.
- Analiz > API İzleme > Araştır sayfasına gidin.
- Hataları gözlemlediğiniz belirli zaman aralığını seçin.
Hata Kodu'nu Zamana göre çizin.
Aşağıda gösterildiği gibi
messaging.adaptors.http.flow.SslHandshakeFailed
hata koduna sahip bir hücre seçin:messaging.adaptors.http.flow.SslHandshakeFailed
hata kodu ile ilgili bilgi 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ı dikkate alın:
- İstek İletisi Kimliği
- Durum Kodu:
503
- Hata Kaynağı:
target
- Hata Kodu:
messaging.adaptors.http.flow.SslHandshakeFailed
Trace
2. Prosedür: İzleme aracını kullanma
Hatayı İzle aracını kullanarak teşhis etmek için:
- İzleme oturumunu ve aşağıdakilerden birini etkinleştirin:
messaging.adaptors.http.flow.SslHandshakeFailed
hata koduna sahip503 Service Unavailable
hatası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 seçeneğinin etkin olduğundan emin olun:
- Başarısız isteklerden birini seçip izi inceleyin.
- İzin farklı aşamaları arasında gezinin ve hatanın nerede gerçekleştiğini bulun.
Hatayı genellikle aşağıda gösterildiği gibi Hedef İstek Akışı Başlatıldı aşamasından sonra görürsünüz:
- İzdeki 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 target
hatasının değeri, Apigee Edge'in Mesaj İşleyicisi arka uç sunucusunun sertifikasını doğrulayamadığından SSL El Sıkışması'nın başarısız olduğunu gösterir.
- hata:
- İzdeki AX (Analytics Data Recorded) Aşamalı Sunumu'na gidin ve bunu tıklayın.
Aşama Ayrıntıları Hata Başlıkları bölümüne ilerleyin ve X-Apigee-fault-code, X-Apigee-fault-source ve X-Apigee-Message-ID değerlerini aşağıda gösterildiği gibi 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:
- Private Cloud kullanıcısıysanız HTTP
503 Service Unavailable
ile ilgili önemli 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
messaging.adaptors.http.flow.SslHandshakeFailed
hata koduna sahip503
hatası (sorun geçmişte gerçekleştiyse) veya503
nedeniyle başarısız olmaya devam eden bir istek olup olmadığını görmek için arama yapın. messaging.adaptors.http.flow.SslHandshakeFailed
değeriyle eşleşen X-Apigee-fault-code ile eşleşen herhangi bir503
hatası bulursanız X-Apigee-fault-source değerinin değerini belirleyin.NGINX erişim günlüğünden örnek 503 hatası:
NGINX erişim günlüğünden yukarıdaki örnek giriş, X-Apigee-fault-code ve X-Apigee-fault-code için aşağıdaki değerlere sahiptir:
Üst bilgiler Değer X-Apigee-fault-code messaging.adaptors.http.flow.SslHandshakeFailed
X-Apigee-fault-source target
Mesaj İşleyici günlükleri
4. Prosedür: İleti İşleyici Günlüklerini Kullanma
- Yaygın teşhis adımları bölümünde açıklandığı şekilde API İzleme, İzleme aracı veya NGINX Erişim Günlüklerini kullanarak başarısız isteklerden birinin mesaj kimliğini belirleyin.
Mesaj İşleyici günlüğünde (
/opt/apigee/var/log/edge-message-processor/logs/system.log
) ilgili istek mesajı kimliğini arayın. Aşağıdaki hatayı görebilirsiniz:org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1
NIOThread@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, Mesaj İşleyici ile arka uç sunucusu arasındaki SSL el sıkışmasının başarısız olduğunu gösterir.
Bunun ardından, aşağıda gösterildiği gibi ayrıntılı yığın izleme (stack trace) ile ilgili bir istisna takip edilir:
org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1
NIOThread@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 target
at 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 şunlardan kaynaklandığını unutmayın:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Bu, Apigee Edge'in Mesaj İşleyicisi arka uç sunucusunun sertifikasını doğrulayamadığı için SSL El Sıkışmanın başarısız olduğunu gösterir.
Neden: İleti İşleyen'in güven deposunda yanlış/eksik sertifika veya sertifika zinciri
Teşhis
- API İzleme, İzleme aracı veya NGINX erişim günlüklerini kullanarak gözlemlenen hatanın Hata Kodunu ve Hata Kaynağı'nı, Yaygın teşhis adımları bölümünde açıklandığı şekilde belirleyin.
- Hata Kodu
messaging.adaptors.http.flow.SslHandshakeFailed
ise aşağıdaki yöntemlerden birini kullanarak hata mesajını belirleyin: - İzleme aracını kullanarak Yaygın teşhis adımları bölümünde açıklandığı şekilde error.cause dosyasını bulun.
- Yaygın 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örüldüğü şekilde, API çağrınıza verilen hata yanıtındaki
faultstring
bilgisini 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 bu, Apigee Edge'in Mesaj İşleyicisi 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 belirleme
- 2. Aşama: İleti İşleyen'in güven deposunda depolanan sertifika zincirini karşılaştırın
1. Aşama
1. Aşama: Arka uç sunucusunun sertifika zincirini belirleme
Arka uç sunucusunun sertifika zincirini belirlemek için aşağıdaki yöntemlerden birini kullanın:
openssl
openssl
komutunu arka uç sunucusunun ana makine adına göre aşağıdaki gibi yürütün:
openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT#
Yukarıdaki komutun çıktısındaki Sertifika zincirini not edin:
Opensl 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 arka uç sunucusundaki TCP/IP paketlerini yakalayın.
- Private Cloud kullanıcısıysanız arka uç sunucudaki veya Mesaj İşleyicideki TCP/IP paketlerini yakalayabilirsiniz. Tercihen bunları, arka uç sunucusunda paketlerin şifresi çözülürken 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 veya aşina olduğunuz benzer bir araç kullanarak analiz edin.
Tcpdump Örnek Analizi
- 43. Paket: Mesaj İşleyici (Kaynak) arka uç sunucusuna (Hedef) bir
Client Hello
mesajı gönderdi. - 44. Paket: Arka uç sunucusu, Mesaj İşleyici'den
Client Hello
mesajının alındığını onaylar. - 45. Paket: Arka uç sunucusu,
Server Hello
mesajını sertifikasıyla birlikte gönderir. - 46. Paket: Mesaj İşleyici,
Server Hello
mesajının ve sertifikanın alındığını onaylar. 47. Paket: Mesaj İşleyici, 48. Paket'te önce bir
FIN, ACK
mesajı, ardındanRST, ACK
mesajı gönderir.Bu, Mesaj İşleyici tarafından yapılan arka uç sunucu sertifikası doğrulamasının başarısız olduğunu gösterir. Bunun nedeni, İleti İşleyici'nin, arka uç sunucusunun sertifikasıyla eşleşen herhangi bir sertifikaya sahip olmaması veya arka uç sunucusunun sertifikasına, İleti İşleyici'nin güven deposundaki mevcut sertifikalara güvenememesidir.
Geri dönüp 45 numaralı paketi inceleyebilir ve arka uç sunucusu tarafından gönderilen sertifika zincirini belirleyebilirsiniz
- Bu örnekte, sunucunun
common name (CN) = mocktarget.apigee.net
ile bir yaprak sertifikası, ardındanCN= GTS CA 1D4
içeren bir ara sertifika veCN = GTX Root R1
ile kök sertifika gönderdiğini görebilirsiniz.
Sunucunun sertifika doğrulamasının başarısız olduğunu doğruladıysanız 2. Aşama: Mesaj İşleyen'in güven deposunda depolanan arka uç sunucusunun sertifikasını ve sertifikalarını karşılaştırın bölümüne gidin.
- 43. Paket: Mesaj İşleyici (Kaynak) arka uç sunucusuna (Hedef) bir
2. Aşama
2. Aşama: Arka uç sunucusunun sertifikası ile Mesaj İşleyen'in güven deposunda saklanan sertifikaları karşılaştırın
- Arka uç sunucunun sertifika zincirini belirleyin.
- Aşağıdaki adımları uygulayarak Mesaj İşleyen'in güven deposunda depolanan sertifikayı belirleyin:
TargetEndpoint
içindekiSSLInfo
bölümündekiTrustStore
öğesinden güven deposu referans adını alın.Bir
TargetEndpoint
yapılandırmasında örnekSSLInfo
bölümünü inceleyelim:<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
TrustStore
referans adımyCompanyTruststoreRef
'dır. Edge kullanıcı arayüzünde Ortamlar > Referanslar'ı seçin. İlgili güven deposu referansı için Referans sütunundaki adı not edin. Bu, güven deposu adınız olacaktır.
Yukarıdaki örnekte güven deposu adı şu şekildedir:
myCompanyTruststoreRef:
myCompanyTruststore
Aşağıdaki API'leri kullanarak güven deposunda depolanan sertifikaları alın (bir önceki adımda belirtilmiştir):
Anahtar deposu veya güven deposu için tüm sertifikaları alma. Bu API, belirli 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"
Yer:
- 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 jetonunuz olarak ayarlandı
- Bu örnekte kullanılan
curl
seçenekleri Curl kullanma bölümünde açıklanmıştır.
Örnek çıkış:
myCompanyTruststore
güven deposundaki sertifikalar şunlardır:[ "serverCert" ]
-
Bir Anahtar Deposu veya Truststore'dan belirli bir sertifikanın Sertifika Ayrıntılarını alma
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"
Yer:
- 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 jetonunuz olarak ayarlandı
- Bu örnekte kullanılan
curl
seçenekleri Curl kullanma bölümünde açıklanmıştır.
Örnek Çıkış
serverCert
ayrıntılarında, konu ve kartı veren kuruluş şu şekilde gösterilir:Yaprak/Varlık Sertifikası:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
Orta Düzey 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ının ve 3. adımda alınan güven deposunda depolanan sertifikanın eşleştiğini doğrulayın. Eşleşmezlerse sorunun nedeni budur.
Yukarıda gösterilen örnekten, aynı anda tek bir sertifikaya göz atalım:
- Yaprak sertifikası:
Arka uç sunucudan:
s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4
İleti İşleyici'nin (istemci) güven deposundan:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
Güven deposunda saklanan yaprak sertifikası, arka uç sunucusunun sertifikasıyla eşleşir.
- Orta düzey sertifika:
Arka uç sunucudan:
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 İşleyici'nin (istemci) güven 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 depolanan ara sertifika, arka uç sunucusunun sertifikasıyla eşleşir.
- Kök sertifika:
Arka uç sunucudan:
s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
Mesaj İşleyici'nin güven deposunda kök sertifika tamamen eksiktir.
Güven deposunda kök sertifika eksik olduğundan Mesaj İşleyici, aşağıdaki istisnayı uygular:
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.SslHandshakeFailed
hata koduyla503 Service Unavailable
değerini döndürür.
- Yaprak 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 İşleyicisi güven deposuna güncellemek üzere Cloud için TLS sertifikası güncelleme başlıklı makaledeki talimatları uygulayın.
- Private Cloud kullanıcısıysanız sertifikayı Apigee Edge'in Mesaj İşleyicisi güven deposuna güncellemek üzere Private Cloud için TLS sertifikası güncelleme başlıklı makaledeki talimatları uygulayın.
Neden: Arka uç sunucusunun sertifikasındaki FQDN ile hedef uç noktadaki ana makine adı eşleşmiyor
Arka uç sunucusu, hedef uç noktasında belirtilen ana makine adıyla eşleşmeyen FQDN içeren bir sertifika zinciri sunarsa Apigee Edge'in Mesaj Süreci 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
şeklindedir. openssl
komutunu kullanarak arka uç sunucusunun sertifikasındaki FQDN'yi aşağıda gösterildiği gibi belirleyin:openssl s_client -connect BACKEND_SERVER_HOST_NAME>:PORT_#>
Örneğin:
openssl s_client -connect backend.company.com:443
Certificate chain
bölümünü inceleyin ve yaprak sertifikasının konusunda CN'nin bir parçası olarak belirtilen FQDN'yi not edin.Certificate chain 0 s:/
CN=backend.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 R1Yukarıdaki örnekte arka uç sunucusunun FQDN değeri
backend.apigee.net
'dir.- 1. adımda alınan arka uç sunucusunun ana makine adı ile 2. adımda alınan FQDN arasındaki ana makine adı eşleşmiyorsa hatanın nedeni budur.
- Yukarıda açıklanan örnekte, hedef uç noktadaki ana makine adı
backend.company.com
şeklindedir. Ancak arka uç sunucusunun sertifikasındaki FQDN adıbackend.apigee.net
şeklindedir. Eşleşmedikleri için bu hatayı alırsınız.
Çözünürlük
Aşağıdaki yöntemlerden birini kullanarak bu sorunu düzeltebilirsiniz:
Doğru FQDN
Arka uç sunucunun anahtar deposunu doğru FQDN, geçerli ve eksiksiz sertifika zinciri ile güncelleyin:
- Doğru FQDN'ye sahip bir arka uç sunucunuzun sertifikası yoksa uygun sertifikayı uygun bir CA'dan (Sertifika Yetkilisi) alın.
Arka uç sunucunuzun sertifika zincirinin geçerli ve eksiksiz olduğunu doğrulayın.
- Hedef uç noktasında belirtilen ana makine adıyla aynı olan özellikte veya varlık sertifikasında arka uç sunucunun doğru FQDN'sine sahip geçerli ve eksiksiz sertifika zincirine sahip olduğunuzda, arka ucun anahtar deposunu tam 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ç noktasında yanlış belirtilmişse hedef uç noktayı, arka uç sunucusunun sertifikasındaki FQDN ile eşleşen doğru ana makine adına sahip olacak şekilde güncelleyin.
API proxy'sinde yapılan değişiklikleri kaydedin.
Yukarıda açıklanan örnekte arka uç sunucusu ana makine adı yanlış belirtilmişse bu sorunu, arka uç sunucusunun sertifikasındaki FQDN'yi (
backend.apigee.net
) kullanarak düzeltebilirsiniz:<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 yanlış/eksik
Teşhis
- Arka uç sunucusunun ana makine adına aşağıdaki şekilde
openssl
komutunu çalıştırarak arka uç sunucusunun sertifika zincirini alın:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
Yukarıdaki komutun çıkışındaki
Certificate chain
değerini not edin.Opensl 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 - 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 zincirine sahip değilseniz sorunun nedeni budur.
Yukarıda gösterilen örnek arka uç sunucusunun sertifika zincirinde kök sertifika eksik. Dolayısıyla bu hatayı alırsınız.
Çözünürlük
Arka uç sunucusunun anahtar deposunu geçerli ve eksiksiz sertifika zinciriyle güncelleyin:
Arka uç sunucunuzun sertifika zincirinin geçerli ve eksiksiz olduğunu doğrulayın.
- Arka uç sunucunun anahtar deposunda geçerli ve eksiksiz sertifika zincirini güncelleyin.
Sorun devam ederse Teşhis bilgileri toplanmalı bölümüne gidin.
Teşhis bilgileri toplanmalıdır
Yukarıdaki talimatları uygulamanıza rağmen 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 adı
- Hatayı yeniden oluşturmak için
curl
komutunu tamamlayın - Hatayı gösteren izleme dosyası
openssl
komutunun çıkışı:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
- Arka uç sunucuda yakalanan TCP/IP paketleri
- Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Tam hata mesajı gözlemlendi
- API proxy paketi
- Hatayı gösteren izleme dosyası
- Mesaj İşleyici günlükleri
/opt/apigee/var/log/edge-message-processor/logs/system.log
openssl
komutunun çıkışı:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
- Arka uç sunucuda veya Mesaj İşleyicide yakalanan TCP/IP paketleri.
- Bir anahtar deposu veya güven deposu için tüm sertifikaları alma API'sinin çıktısı ve ayrıca Bir Anahtar Deposu veya Truststore API'sinden Sertifika Ayrıntıları Alma API'si kullanılarak alınan her sertifikanın ayrıntıları.
Referanslar
- Sertifika Güven zinciri
- OpenSSL komutu