आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
समस्या का ब्यौरा
क्लाइंट ऐप्लिकेशन को503 Service Unavailable
एपीआई के रिस्पॉन्स के तौर पर गड़बड़ी का कोड messaging.adaptors.http.flow.SslHandshakeFailed
कॉल.
गड़बड़ी का मैसेज
क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:
HTTP/1.1 503 Service Unavailable
इसके अलावा, आपको गड़बड़ी का यह मैसेज भी दिख सकता है:
{ "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" } } }
संभावित कारण
आपको गड़बड़ी कोड के साथ स्टेटस कोड 503 Service Unavailable
मिल सकता है
एसएसएल के दौरान गड़बड़ी की वजह से messaging.adaptors.http.flow.SslHandshakeFailed
Apigee Edge के मैसेज प्रोसेसर और बैकएंड सर्वर के बीच हैंडशेक की प्रोसेस
की वजह. faultstring
में गड़बड़ी का मैसेज आम तौर पर यह दिखाता है
यह गड़बड़ी की वजह भी हो सकती है.
faultstring
में मिले गड़बड़ी के मैसेज के आधार पर, आपको यह इस्तेमाल करना होगा
का इस्तेमाल करना चाहिए. इस प्लेबुक में समस्या हल करने का तरीका बताया गया है
अगर आपको 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
दिखता है, तो यह गड़बड़ी दिखेगी.
यह गड़बड़ी, Apigee Edge के मैसेज प्रोसेसर और बैकएंड सर्वर:
- अगर Apigee Edge के मैसेज प्रोसेसर का truststore:
- इसमें एक सर्टिफ़िकेट चेन शामिल है, जो बैकएंड सर्वर की पूरी वैल्यू से मेल नहीं खाती सर्टिफ़िकेट चेन, या
- इसमें बैकएंड सर्वर की पूरी सर्टिफ़िकेट चेन शामिल नहीं है
- अगर बैकएंड सर्वर से मिली सर्टिफ़िकेट चेन:
- इसमें शामिल है पूरी तरह क्वालिफ़ाइड डोमेन नेम (एफ़क्यूडीएन), जो इसमें बताए गए होस्ट नाम से मेल नहीं खाता टारगेट एंडपॉइंट
- इसमें गलत या अधूरी सर्टिफ़िकेट चेन है
इस समस्या की ये वजहें हो सकती हैं:
वजह | ब्यौरा | इसके लिए लागू होने वाले, समस्या हल करने के निर्देश |
---|---|---|
मैसेज प्रोसेसर के ट्रस्टस्टोर में गलत या अधूरे सर्टिफ़िकेट या सर्टिफ़िकेट की चेन | सर्टिफ़िकेट और/या उसकी चेन, जो Apigee Edge के मैसेज प्रोसेसर के ट्रस्टस्टोर में सेव है, वह बैकएंड सर्वर के सर्टिफ़िकेट की चेन से मेल नहीं खाती या फिर इसमें बैकएंड सर्वर की पूरी सर्टिफ़िकेट चेन शामिल नहीं है. | Edge के निजी और सार्वजनिक क्लाउड के उपयोगकर्ता |
बैकएंड सर्वर के सर्टिफ़िकेट में एफ़क्यूडीएन और टारगेट एंडपॉइंट में मौजूद होस्ट नाम का मैच न होना | बैकएंड सर्वर से मिले सर्टिफ़िकेट में एक एफ़क्यूडीएन है, जो टारगेट एंडपॉइंट में बताए गए होस्ट के नाम से मेल नहीं खाता. | Edge के निजी और सार्वजनिक क्लाउड के उपयोगकर्ता |
बैकएंड सर्वर से मिला सर्टिफ़िकेट या सर्टिफ़िकेट की चेन गलत या अधूरी है | बैकएंड सर्वर की ओर से दिखाई गई सर्टिफ़िकेट चेन गलत है या अधूरी है. | Edge के निजी और सार्वजनिक क्लाउड के उपयोगकर्ता |
गड़बड़ी की जांच करने के सामान्य तरीके
इस गड़बड़ी का पता लगाने के लिए, इनमें से किसी एक टूल/तकनीक का इस्तेमाल करें:
एपीआई मॉनिटरिंग
प्रोसेस #1: एपीआई मॉनिटरिंग का इस्तेमाल करना
एपीआई मॉनिटरिंग का इस्तेमाल करके, गड़बड़ी का पता लगाने के लिए:
- वाले उपयोगकर्ता के तौर पर, Apigee Edge के यूज़र इंटरफ़ेस (यूआई) में साइन इन करें भूमिका होनी चाहिए.
उस संगठन पर जाएं जिसमें आपको समस्या की जांच करनी है.
- विश्लेषण करें > एपीआई मॉनिटरिंग > पेज की जांच करें.
- वह समयावधि चुनें जिसमें आपको गड़बड़ियां दिखी थीं.
समय के हिसाब से गड़बड़ी कोड दिखाएं.
वह सेल चुनें जिसमें गड़बड़ी का कोड है
messaging.adaptors.http.flow.SslHandshakeFailed
जैसा दिखाया गया नीचे दिया गया है:गड़बड़ी के कोड के बारे में जानकारी
messaging.adaptors.http.flow.SslHandshakeFailed
को इस तौर पर दिखाया गया है नीचे दी गई जानकारी देखें:लॉग देखें पर क्लिक करें और फ़ेल हो चुके अनुरोध की पंक्ति को बड़ा करें.
- लॉग विंडो में जाकर, यह जानकारी देखें:
- मैसेज आईडी का अनुरोध करें
- स्टेटस कोड:
503
- गलत सोर्स:
target
- गलत कोड:
messaging.adaptors.http.flow.SslHandshakeFailed
ट्रेस
प्रोसेस #2: ट्रेस टूल का इस्तेमाल करना
ट्रेस टूल का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:
- ट्रेस सेशन को चालू करें और
- गड़बड़ी के कोड वाली
503 Service Unavailable
गड़बड़ी का इंतज़ार करेंmessaging.adaptors.http.flow.SslHandshakeFailed
या - अगर आपको समस्या के बारे में अच्छे से पता है, तो समस्या के बारे में बताने के लिए एपीआई कॉल करें
503 Service Unavailable
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
- गड़बड़ी के कोड वाली
पक्का करें कि सभी FlowInfos दिखाएं चालू है:
- पूरे न हो पाने वाले अनुरोधों में से किसी एक को चुनें और ट्रेस की जांच करें.
- ट्रेस के अलग-अलग फ़ेज़ पर जाएं और देखें कि गड़बड़ी कहां हुई.
आपको गड़बड़ी आम तौर पर टारगेट अनुरोध फ़्लो शुरू होने के चरण के बाद मिलेगी जैसा कि नीचे दिखाया गया है:
- ट्रेस में दी गई इन वैल्यू को नोट करें:
- गड़बड़ी:
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
की वैल्यू बताती है कि एसएसएल हैंडशेक नहीं हो सका, क्योंकि Apigee Edge का मैसेज प्रोसेसर, बैकएंड सर्वर के प्रमाणपत्र.
- गड़बड़ी:
- ट्रेस में AX (Analytics डेटा रिकॉर्ड किया गया) चरण पर जाएं और उस पर क्लिक करें.
नीचे चरण की जानकारी के गड़बड़ी वाले हेडर सेक्शन तक स्क्रोल करें और तय करें कि X-Apigee-fault-code और X-Apigee-fault-source की वैल्यू, और X-Apigee-Message-ID, जैसा कि नीचे दिखाया गया है:
- X-Apigee-fault-code, X-Apigee-fault-source की वैल्यू नोट करें, और X-Apigee-Message-ID:
गड़बड़ी के हेडर | मान |
---|---|
X-Apigee-fault-code | messaging.adaptors.http.flow.SslHandshakeFailed |
X-Apigee-fault-source | target |
X-Apigee-Message-ID | MESSAGE_ID |
NGINX
प्रक्रिया #3: NGINX ऐक्सेस लॉग का इस्तेमाल करना
NGINX ऐक्सेस लॉग का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:
- अगर आप निजी Cloud उपयोगकर्ता हैं, तो यह पता करने के लिए कि NGINX ऐक्सेस लॉग का इस्तेमाल किया जा सकता है या नहीं
एचटीटीपी
503 Service Unavailable
के बारे में अहम जानकारी. NGINX ऐक्सेस लॉग देखें:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- यह देखने के लिए खोजें कि क्या गड़बड़ी कोड में कोई
503
गड़बड़ी है किसी खास अवधि के दौरानmessaging.adaptors.http.flow.SslHandshakeFailed
(अगर समस्या पुराना) या अगर कोई अनुरोध अब भी503
के साथ पूरा नहीं हो पा रहा है. अगर आपको मेल खाने वाले X-Apigee-fault-code के साथ कोई
503
गड़बड़ी मिलती है मानmessaging.adaptors.http.flow.SslHandshakeFailed
, फिर X-Apigee-fault-source. की वैल्यू तय करें.NGINX ऐक्सेस लॉग में 503 गड़बड़ी का नमूना:
NGINX ऐक्सेस लॉग की ऊपर दी गई सैंपल एंट्री में, X-Apigee-fault-code और X-Apigee-fault-source:
हेडर मान X-Apigee-fault-code messaging.adaptors.http.flow.SslHandshakeFailed
X-Apigee-fault-source target
मैसेज प्रोसेसर के लॉग
प्रक्रिया #4: मैसेज प्रोसेसर लॉग का इस्तेमाल करना
- एपीआई मॉनिटरिंग, ट्रेस टूल, और काम न करने वाले अनुरोधों में से किसी एक का मैसेज आईडी पता करें या NGINX ऐक्सेस लॉग का डेटा इकट्ठा करना होगा. इसके बारे में गड़बड़ी की जानकारी के सामान्य तरीके में बताया गया है.
मैसेज प्रोसेसर लॉग में, अनुरोध वाला मैसेज आईडी खोजें (
/opt/apigee/var/log/edge-message-processor/logs/system.log
). आपको यह साफ़ तौर पर पता चल सकता है यह गड़बड़ी दिख रही है: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 problemऊपर दी गई गड़बड़ी बताती है कि मैसेज प्रोसेसर के बीच एसएसएल हैंडशेक विफल रहा और बैकएंड सर्वर पर भी काम करता है.
इसके बाद, ब्यौरे वाला स्टैक ट्रेस अपवाद होगा, जैसा कि नीचे दिखाया गया है:
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>ध्यान दें कि हैंडशेक इन वजहों से नहीं हो पा रहा:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
इससे पता चलता है कि एसएसएल हैंडशेक, Apigee Edge का मैसेज प्रोसेसर था बैकएंड सर्वर के सर्टिफ़िकेट की पुष्टि नहीं की जा सकी.
वजह: मैसेज प्रोसेसर के ट्रस्टस्टोर में गलत/अधूरे सर्टिफ़िकेट या सर्टिफ़िकेट की चेन
संक्रमण की जांच
- एपीआई का इस्तेमाल करके मिली गड़बड़ी के लिए, गलत कोड या गलत सोर्स का पता लगाएं मॉनिटरिंग, ट्रेस करने वाले टूल या NGINX ऐक्सेस लॉग के बारे में जानकारी, जैसा कि सामान्य सेक्शन में बताया गया है गड़बड़ी की पहचान करने के तरीके देखें.
- अगर गलत कोड
messaging.adaptors.http.flow.SslHandshakeFailed
है, तो गड़बड़ी के मैसेज का पता लगाने के लिए नीचे दिए गए तरीकों में से किसी एक का इस्तेमाल करें: - यहां बताए गए तरीके से ट्रेस करने वाले टूल का इस्तेमाल करके, error.cause का पता लगाएं गड़बड़ी की जानकारी पाने का सामान्य तरीका
- जैसा कि यहां बताया गया है, मैसेज प्रोसेसर लॉग का इस्तेमाल करके अपवाद ढूंढें डाइग्नोस्टिक्स का सामान्य तरीका
- अपने एपीआई कॉल के गड़बड़ी के जवाब से
faultstring
को ढूंढें, जैसा कि यहां दिखाया गया है गड़बड़ी का मैसेज - अगर गड़बड़ी का मैसेज
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
है, तो इसका मतलब है कि एसएसएल हैंडशेक नहीं किया जा सका, क्योंकि Apigee Edge का मैसेज प्रोसेसर, बैकएंड सर्वर के प्रमाणपत्र.
इस समस्या को दो चरणों में डीबग किया जा सकता है:
- पहला चरण: बैकएंड सर्वर की सर्टिफ़िकेट चेन तय करना
- दूसरा चरण: मैसेज प्रोसेसर के ट्रस्टस्टोर में सेव किए गए सर्टिफ़िकेट चेन की तुलना करना
पहला चरण
पहला चरण: बैकएंड सर्वर की सर्टिफ़िकेट चेन तय करना
बैकएंड सर्वर की सर्टिफ़िकेट चेन तय करने के लिए, इनमें से किसी एक तरीके का इस्तेमाल करें:
openssl
बैकएंड सर्वर के होस्ट के लिए, openssl
कमांड इस्तेमाल करें
नाम इस प्रकार रखें:
openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT#
ऊपर दिए गए निर्देश के आउटपुट से सर्टिफ़िकेट चेन को नोट करें:
Openएसएसएल कमांड आउटपुट से, बैकएंड सर्वर सर्टिफ़िकेट की चेन का सैंपल:
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
- अगर आप सार्वजनिक क्लाउड उपयोगकर्ता हैं, तो बैकएंड सर्वर.
- अगर आप निजी क्लाउड उपयोगकर्ता हैं, तो आपके पास टीसीपी/आईपी को कैप्चर करने का विकल्प होगा बैकएंड सर्वर या मैसेज प्रोसेसर पर पैकेट. बेहतर होगा, उन्हें कैप्चर करें बैकएंड सर्वर पर, पैकेट के डेटा को बैकएंड सर्वर पर डिक्रिप्ट किया जाता है.
इनका इस्तेमाल करें tcpdump निर्देश: टीसीपी/आईपी पैकेट कैप्चर करने के लिए:
tcpdump -i any -s 0 host IP_ADDRESS -w FILE_NAME
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया हैटीसीपी/आईपी पैकेट का विश्लेषण करने के लिए Wireshark टूल या मिलते-जुलते टूल के बारे में जानते हैं जिनके बारे में आपको पहले से पता है.
टीसीपीडंप का सैंपल विश्लेषण
- पैकेट #43: मैसेज प्रोसेसर (सोर्स) ने
बैकएंड सर्वर (डेस्टिनेशन) के लिए
Client Hello
मैसेज. - पैकेट #44: बैकएंड सर्वर,
मैसेज प्रोसेसर से मिला
Client Hello
मैसेज. - पैकेट #45: बैकएंड सर्वर,
Server Hello
ईमेल के साथ उसका सर्टिफ़िकेट भी दिखेगा. - पैकेट #46: मैसेज प्रोसेसर,
Server Hello
मैसेज और सर्टिफ़िकेट. पैकेट #47: मैसेज प्रोसेसर, मैसेज भेजने के लिए
FIN, ACK
Packet #48 में,RST, ACK
मैसेज आया.इससे पता चलता है कि बैकएंड सर्वर सर्टिफ़िकेट की पुष्टि मैसेज प्रोसेसर की प्रोसेस पूरी नहीं हो सकी. ऐसा इसलिए होता है, क्योंकि मैसेज प्रोसेसर के पास ऐसा कोई भी सर्टिफ़िकेट जो बैकएंड सर्वर के सर्टिफ़िकेट से मेल खाता हो या जिस पर भरोसा न किया जा सके बैकएंड सर्वर का प्रमाणपत्र, जिसमें (मैसेज प्रोसेसर का) Truststore.
आपके पास वापस जाकर पैकेट #45 की समीक्षा करके, सर्टिफ़िकेट की जांच करने का विकल्प है बैकएंड सर्वर से भेजी गई चेन
- इस उदाहरण में देखा जा सकता है कि सर्वर ने लीफ़ सर्टिफ़िकेट भेजा है
common name (CN) = mocktarget.apigee.net
के साथ और इसके बादCN= GTS CA 1D4
और रूट सर्टिफ़िकेट के साथ इंटरमीडिएट सर्टिफ़िकेटCN = GTX Root R1
के साथ.
अगर आपको लगता है कि सर्वर के सर्टिफ़िकेशन की पुष्टि नहीं हो सकी, तो दूसरा चरण: बैकएंड सर्वर के सर्टिफ़िकेट की तुलना करें और सर्टिफ़िकेट.
- पैकेट #43: मैसेज प्रोसेसर (सोर्स) ने
बैकएंड सर्वर (डेस्टिनेशन) के लिए
दूसरा चरण
दूसरा चरण: बैकएंड सर्वर के सर्टिफ़िकेट और मैसेज प्रोसेसर का ट्रस्टस्टोर
- बैकएंड सर्वर की सर्टिफ़िकेट चेन तय करना.
- इसका इस्तेमाल करके, मैसेज प्रोसेसर के ट्रस्टस्टोर में सेव किए गए सर्टिफ़िकेट का पता लगाएं
यहां बताया गया तरीका अपनाएं:
TrustStore
एलिमेंट से ट्रस्टस्टोर रेफ़रंस नाम पाएंTargetEndpoint
केSSLInfo
सेक्शन में.चलिए,
TargetEndpoint
केSSLInfo
सेक्शन का सैंपल देखते हैं कॉन्फ़िगरेशन:<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>
- ऊपर दिए गए उदाहरण में,
TrustStore
पहचान नाम यह हैmyCompanyTruststoreRef
. Edge यूज़र इंटरफ़ेस (यूआई) में, परिवेश > रेफ़रंस. में नाम नोट करें ट्रस्टस्टोर रेफ़रंस के लिए रेफ़रंस कॉलम. यह आपके Truststore का नाम.
ऊपर दिए गए उदाहरण में Truststore का नाम है:
myCompanyTruststoreRef:
myCompanyTruststore
Truststore में स्टोर किए गए सर्टिफ़िकेट पाएं (पिछले चरण में तय किया गया) नीचे दिए गए एपीआई का इस्तेमाल करके:
कीस्टोर या ट्रस्टस्टोर के लिए सभी सर्टिफ़िकेट पाएं. इस एपीआई में सभी सर्टिफ़िकेट.
सार्वजनिक क्लाउड उपयोगकर्ता:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
निजी Cloud उपयोगकर्ता:
curl -v -X GET http://MANAGEMENT_HOST:PORT_#/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
कहां:
- ORGANIZATION_NAME, संगठन का नाम है
- ENVIRONMENT_NAME एनवायरमेंट का नाम है
- KEYSTORE_NAME, कीस्टोर का नाम है
- $TOKEN, आपके OAuth 2.0 ऐक्सेस टोकन पर सेट होता है. इसकी जानकारी यहां दी गई है OAuth 2.0 ऐक्सेस टोकन पाना
- इस उदाहरण में इस्तेमाल किए गए
curl
विकल्प के बारे में यहां बताया गया है कर्ल का इस्तेमाल करना
आउटपुट का नमूना:
उदाहरण ट्रस्टस्टोर
myCompanyTruststore
के सर्टिफ़िकेट:[ "serverCert" ]
-
किसी कीस्टोर या Truststore से सर्टिफ़िकेट की जानकारी पाएं.
यह एपीआई, खास सर्टिफ़िकेट की जानकारी देता है
Truststore.
सार्वजनिक क्लाउड उपयोगकर्ता:
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"
निजी Cloud उपयोगकर्ता
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"
कहां:
- ORGANIZATION_NAME, संगठन का नाम है
- ENVIRONMENT_NAME एनवायरमेंट का नाम है
- KEYSTORE_NAME, कीस्टोर का नाम है
- सर्टिफ़िकेट का नाम CERT_NAME है
- $TOKEN, आपके OAuth 2.0 ऐक्सेस टोकन पर सेट होता है. इसकी जानकारी यहां दी गई है OAuth 2.0 ऐक्सेस टोकन पाना
- इस उदाहरण में इस्तेमाल किए गए
curl
विकल्प के बारे में यहां बताया गया है कर्ल का इस्तेमाल करना
आउटपुट का सैंपल
serverCert
के दस्तावेज़ में, विषय और उसे जारी करने वाले के बारे में यह जानकारी दी गई है:लीफ़/इकाई का सर्टिफ़िकेट:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
इंटरमीडिएट सर्टिफ़िकेट:
"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 में मिला असल सर्वर सर्टिफ़िकेट और सर्टिफ़िकेट को तीसरे चरण में मिलान करने के बाद मिले Truststore में स्टोर किया गया है. अगर वे मेल नहीं खाते हैं, तो यह की वजह डालें.
ऊपर दिखाए गए उदाहरण से, आइए एक बार में एक ही सर्टिफ़िकेट पर नज़र डालते हैं:
- लीफ़ सर्टिफ़िकेट:
बैकएंड सर्वर से:
s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4
मैसेज प्रोसेसर (क्लाइंट) के ट्रस्टस्टोर से:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
Truststore में सेव किया गया लीफ़ सर्टिफ़िकेट, बैकएंड के सर्टिफ़िकेट से मेल खाता है सर्वर.
- इंटरमीडिएट सर्टिफ़िकेट:
बैकएंड सर्वर से:
s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
मैसेज प्रोसेसर (क्लाइंट) के ट्रस्टस्टोर से:
"subject" : "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US", "issuer" : "CN=GTS Root R1, O=Google Trust Services LLC, C=US",
Truststore में सेव किया गया इंटरमीडिएट सर्टिफ़िकेट बैकएंड सर्वर.
- रूट सर्टिफ़िकेट:
बैकएंड सर्वर से:
s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
मैसेज प्रोसेसर में रूट सर्टिफ़िकेट पूरी तरह से मौजूद नहीं है Truststore.
Truststore में रूट सर्टिफ़िकेट मौजूद नहीं है, इसलिए मैसेज प्रोसेसर की ओर से यह अपवाद दिखता है:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
और गड़बड़ी कोड के साथ
503 Service Unavailable
दिखाता है क्लाइंट के लिएmessaging.adaptors.http.flow.SslHandshakeFailed
का इस्तेमाल करें.
- लीफ़ सर्टिफ़िकेट:
रिज़ॉल्यूशन
- पक्का करें कि आपके पास बैकएंड सर्वर की सही और पूरी सर्टिफ़िकेट चेन हो.
- अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं, तो यहां दिए गए निर्देशों का पालन करें Apigee Edge के सर्टिफ़िकेट को अपडेट करने के लिए, Cloud के लिए TLS सर्टिफ़िकेट को अपडेट करें मैसेज प्रोसेसर ट्रस्टस्टोर.
- अगर आप निजी क्लाउड उपयोगकर्ता हैं, तो इसमें दिए गए निर्देशों का पालन करें प्राइवेट क्लाउड के लिए TLS सर्टिफ़िकेट को अपडेट करें, Apigee Edge का मैसेज प्रोसेसर ट्रस्टस्टोर.
वजह: बैकएंड सर्वर के सर्टिफ़िकेट में FQDN और टारगेट एंडपॉइंट में होस्ट का नाम मेल नहीं खाता
अगर बैकएंड सर्वर ऐसी सर्टिफ़िकेट चेन पेश करता है जिसमें FQDN शामिल है, जो
टारगेट एंडपॉइंट में होस्ट का नाम बताया गया है, तो Apigee Edge की मैसेज प्रोसेस, गड़बड़ी का मैसेज दिखाती है
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
.
संक्रमण की जांच
- एपीआई प्रॉक्सी में उस खास टारगेट एंडपॉइंट की जांच करें जिसमें आपको यह देखना है
गड़बड़ी देखें और बैकएंड सर्वर का होस्ट नाम नोट करें:
TargetEndpoint का सैंपल:
<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.company.com/resource</URL> </HTTPTargetConnection> </TargetEndpoint>
ऊपर दिए गए उदाहरण में, बैकएंड सर्वर का होस्ट नाम
backend.company.com
है. openssl
का इस्तेमाल करके, बैकएंड सर्वर के सर्टिफ़िकेट में एफ़क्यूडीएन पता लगाएं निर्देश देखें:openssl s_client -connect BACKEND_SERVER_HOST_NAME>:PORT_#>
उदाहरण के लिए:
openssl s_client -connect backend.company.com:443
सेक्शन
Certificate chain
की जांच करें और इस तरह बताए गए FQDN को नोट करें लीफ़ सर्टिफ़िकेट के सब्जेक्ट में CN का हिस्सा होना चाहिए.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 R1ऊपर दिए गए उदाहरण में, बैकएंड सर्वर का एफ़क्यूडीएन
backend.apigee.net
है.- अगर पहले चरण में बताए गए बैकएंड सर्वर के होस्ट का नाम और FQDN को मिला है चरण 2 मेल नहीं खाता है, तो यह गड़बड़ी की वजह है.
- ऊपर बताए गए उदाहरण में, टारगेट एंडपॉइंट में होस्ट का नाम
backend.company.com
. हालांकि, बैकएंड सर्वर के सर्टिफ़िकेट में एफ़क्यूडीएन का नामbackend.apigee.net
है. वे मैच नहीं करते, इसलिए आपको यह गड़बड़ी मिलती है.
रिज़ॉल्यूशन
यहां दिए गए किसी एक तरीके का इस्तेमाल करके, इस समस्या को ठीक किया जा सकता है:
सही FQDN
बैकएंड सर्वर के कीस्टोर को सही FQDN के साथ अपडेट करें. साथ ही, मान्य और पूरा सर्टिफ़िकेट भी अपडेट करें चेन:
- अगर आपके पास बैकएंड सर्वर का सही एफ़क्यूडीएन वाला सर्टिफ़िकेट नहीं है, तो तो किसी संबंधित सीए (सर्टिफ़िकेट अथॉरिटी) से सही सर्टिफ़िकेट लेना होगा.
पुष्टि करें कि आपके पास मान्य और पूरी बैकएंड सर्वर की सर्टिफ़िकेट चेन.
- जब आपके पास सर्टिफ़िकेट की पूरी चेन हो और उस मान्य एफ़क्यूडीएन का इस्तेमाल लीफ़ या इकाई के सर्टिफ़िकेट में मौजूद बैकएंड सर्वर, जो होस्ट के नाम से मिलता-जुलता है टारगेट एंडपॉइंट में बताए गए, बैकएंड के कीस्टोर को सर्टिफ़िकेट की चेन पूरी करें.
सही बैकएंड सर्वर
टारगेट एंडपॉइंट को सही बैकएंड सर्वर के होस्ट नाम के साथ अपडेट करें:
- अगर टारगेट एंडपॉइंट में होस्ट का नाम गलत तरीके से बताया गया है, तो टारगेट एंडपॉइंट में सही होस्ट नाम हो, जो बैकएंड में एफ़क्यूडीएन से मेल खाता हो सर्वर का सर्टिफ़िकेट.
एपीआई प्रॉक्सी में किए गए बदलावों को सेव करें.
ऊपर बताए गए उदाहरण में, अगर बैकएंड सर्वर का होस्ट नाम गलत था, तो बताया गया है, तो बैकएंड सर्वर के सर्टिफ़िकेट से FQDN का इस्तेमाल करके इसे ठीक किया जा सकता है, इसका नतीजा
backend.apigee.net
है:<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.apigee.net/resource</URL> </HTTPTargetConnection> </TargetEndpoint>
वजह: बैकएंड सर्वर की ओर से पेश किया गया सर्टिफ़िकेट या सर्टिफ़िकेट चेन गलत/अधूरा है
संक्रमण की जांच
openssl
निर्देश चलाकर, बैकएंड सर्वर की सर्टिफ़िकेट चेन पाएं नीचे दिया गया है:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
ऊपर दिए गए निर्देश के आउटपुट से
Certificate chain
को नोट करें.openएसएसएल कमांड आउटपुट से बैकएंड सर्वर सर्टिफ़िकेट चेन का सैंपल:
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- पुष्टि करें कि आपके पास सही और पूरी सर्टिफ़िकेट चेन है, जैसा कि यहां बताया गया है सर्टिफ़िकेट चेन की पुष्टि की जा रही है.
अगर आपके पास बैकएंड सर्वर के लिए मान्य और पूरी सर्टिफ़िकेट चेन नहीं है, तो तो यही वजह है.
ऊपर दिखाई गई नमूना बैकएंड सर्वर की प्रमाणपत्र शृंखला में, रूट प्रमाणपत्र मौजूद नहीं हैं. इसलिए, आपको यह गड़बड़ी दिखती है.
रिज़ॉल्यूशन
बैकएंड सर्वर के कीस्टोर को मान्य और पूरी सर्टिफ़िकेट चेन की मदद से अपडेट करें:
पुष्टि करें कि आपके पास मान्य और पूरी बैकएंड सर्वर की सर्टिफ़िकेट चेन है.
- बैकएंड सर्वर के कीस्टोर में मान्य और पूरी सर्टिफ़िकेट चेन अपडेट करें.
अगर समस्या बनी रहती है, तो पर जाएं ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करना ज़रूरी है.
ऐप्लिकेशन की परफ़ॉर्मेंस से जुड़ी जानकारी इकट्ठा करना ज़रूरी है
अगर ऊपर दिए गए निर्देशों का पालन करने के बाद भी समस्या बनी रहती है, तो यह जानकारी इकट्ठा करें गड़बड़ी की जानकारी पर जाएं और Apigee Edge की सहायता टीम से संपर्क करें:
- अगर आप सार्वजनिक क्लाउड के उपयोगकर्ता हैं, तो यह जानकारी दें:
- संगठन का नाम
- परिवेश का नाम
- एपीआई प्रॉक्सी का नाम
- गड़बड़ी को फिर से देखने के लिए,
curl
निर्देश को पूरा करें - गड़बड़ी दिखाने वाली ट्रेस फ़ाइल
openssl
निर्देश का आउटपुट:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
- बैकएंड सर्वर पर कैप्चर किए गए टीसीपी/आईपी पैकेट
- अगर आप निजी Cloud उपयोगकर्ता हैं, तो यह जानकारी दें:
- गड़बड़ी का पूरा मैसेज दिखा
- एपीआई प्रॉक्सी बंडल
- गड़बड़ी दिखाने वाली ट्रेस फ़ाइल
- मैसेज प्रोसेसर के लॉग
/opt/apigee/var/log/edge-message-processor/logs/system.log
openssl
निर्देश का आउटपुट:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
- बैकएंड सर्वर या मैसेज प्रोसेसर पर कैप्चर किए गए टीसीपी/आईपी पैकेट.
- का आउटपुट कीस्टोर या ट्रस्टस्टोर एपीआई के लिए सभी सर्टिफ़िकेट पाएं. साथ ही, इनकी जानकारी भी पाएं इसके तहत, कीस्टोर या Truststore एपीआई से सर्टिफ़िकेट की जानकारी पाएं.
रेफ़रंस
- भरोसेमंद चेन सर्टिफ़िकेट
- OpenSSL आदेश