আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
উপসর্গ
ক্লায়েন্ট অ্যাপ্লিকেশনটি API কলের প্রতিক্রিয়া হিসাবে 503 Service Unavailable
ত্রুটি কোড messaging.adaptors.http.flow.SslHandshakeFailed
http.flow.SslHandshakeFailed-এর একটি HTTP স্থিতি কোড পায়৷
ত্রুটি বার্তা
ক্লায়েন্ট অ্যাপ্লিকেশন নিম্নলিখিত প্রতিক্রিয়া কোড পায়:
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" } } }
সম্ভাব্য কারণ
Apigee Edge-এর মেসেজ প্রসেসর এবং ব্যাকএন্ড সার্ভারের মধ্যে SSL হ্যান্ডশেক প্রক্রিয়া চলাকালীন একটি ব্যর্থতার কারণে ত্রুটি কোড messaging.adaptors.http.flow.SslHandshakeFailed
সহ স্ট্যাটাস কোড 503 Service Unavailable
হতে পারে। 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
faultstring
Apigee Edge এর মেসেজ প্রসেসর এবং ব্যাকএন্ড সার্ভারের মধ্যে SSL হ্যান্ডশেক প্রক্রিয়া চলাকালীন এই ত্রুটিটি ঘটে:
- Apigee Edge এর মেসেজ প্রসেসরের ট্রাস্টস্টোর হলে:
- একটি শংসাপত্র চেইন রয়েছে যা ব্যাকএন্ড সার্ভারের সম্পূর্ণ শংসাপত্র চেইনের সাথে মেলে না, OR৷
- ব্যাকএন্ড সার্ভারের সম্পূর্ণ শংসাপত্র চেইন ধারণ করে না
- যদি ব্যাকএন্ড সার্ভার দ্বারা উপস্থাপিত শংসাপত্র চেইন:
- সম্পূর্ণ যোগ্য ডোমেন নাম (FQDN) রয়েছে যা লক্ষ্য শেষ পয়েন্টে নির্দিষ্ট করা হোস্ট নামের সাথে মেলে না
- একটি ভুল বা অসম্পূর্ণ সার্টিফিকেট চেইন রয়েছে
এই সমস্যার সম্ভাব্য কারণগুলি নিম্নরূপ:
কারণ | বর্ণনা | সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য |
---|---|---|
বার্তা প্রসেসরের ট্রাস্টস্টোরে ভুল/অসম্পূর্ণ শংসাপত্র বা শংসাপত্রের চেইন | Apigee Edge এর বার্তা প্রসেসরের ট্রাস্টস্টোরে সংরক্ষিত শংসাপত্র এবং/অথবা এর চেইন ব্যাকএন্ড সার্ভারের সার্টিফিকেট চেইনের সাথে মেলে না বা ব্যাকএন্ড সার্ভারের সম্পূর্ণ শংসাপত্রের চেইন ধারণ করে না। | এজ প্রাইভেট এবং পাবলিক ক্লাউড ব্যবহারকারীরা |
ব্যাকএন্ড সার্ভারের শংসাপত্রে FQDN এর অমিল এবং লক্ষ্য এন্ডপয়েন্টে হোস্টের নাম | ব্যাকএন্ড সার্ভারের দ্বারা উপস্থাপিত শংসাপত্রটিতে একটি FQDN রয়েছে যা লক্ষ্য এন্ডপয়েন্টে নির্দিষ্ট হোস্ট নামের সাথে মেলে না। | এজ প্রাইভেট এবং পাবলিক ক্লাউড ব্যবহারকারীরা |
ব্যাকএন্ড সার্ভার দ্বারা উপস্থাপিত ভুল/অসম্পূর্ণ শংসাপত্র বা শংসাপত্রের চেইন | ব্যাকএন্ড সার্ভার দ্বারা উপস্থাপিত শংসাপত্র চেইন হয় ভুল বা অসম্পূর্ণ। | এজ প্রাইভেট এবং পাবলিক ক্লাউড ব্যবহারকারীরা |
সাধারণ রোগ নির্ণয়ের পদক্ষেপ
এই ত্রুটি নির্ণয় করতে নিম্নলিখিত সরঞ্জাম/কৌশলগুলির মধ্যে একটি ব্যবহার করুন:
API মনিটরিং
পদ্ধতি #1: API মনিটরিং ব্যবহার করা
API মনিটরিং ব্যবহার করে ত্রুটি নির্ণয় করতে:
- Apigee Edge UI এ একটি উপযুক্ত ভূমিকা সহ ব্যবহারকারী হিসাবে সাইন ইন করুন৷
আপনি যে সংস্থায় সমস্যাটি তদন্ত করতে চান সেখানে যান।
- এনালাইজ > API মনিটরিং > ইনভেস্টিগেট পেজে নেভিগেট করুন।
- নির্দিষ্ট সময়সীমা নির্বাচন করুন যেখানে আপনি ত্রুটিগুলি পর্যবেক্ষণ করেছেন।
সময়ের বিরুদ্ধে প্লট ফল্ট কোড ।
একটি সেল নির্বাচন করুন যার ফল্ট কোড আছে
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
ঘটতে ব্যর্থ হয়েছে, অথবা - আপনি যদি সমস্যাটি পুনরুত্পাদন করতে পারেন, তাহলে সমস্যাটি পুনরুত্পাদন করতে API কল করুন
503 Service Unavailable
-
সমস্ত ফ্লোইনফোস সক্ষম করা আছে তা নিশ্চিত করুন:
- ব্যর্থ অনুরোধগুলির একটি নির্বাচন করুন এবং ট্রেস পরীক্ষা করুন।
- ট্রেসের বিভিন্ন পর্যায়ে নেভিগেট করুন এবং কোথায় ব্যর্থতা ঘটেছে তা সনাক্ত করুন।
আপনি ত্রুটিটি দেখতে পাবেন সাধারণত ফেজ টার্গেট রিকোয়েস্ট ফ্লো শুরু হওয়ার পর নিচে দেখানো হয়েছে:
( বড় ছবি দেখুন )
- ট্রেস থেকে নিম্নলিখিত মান নোট করুন:
- ত্রুটি:
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
- ভুল
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
ইঙ্গিত দেয় যে SSL হ্যান্ডশেক এ ব্যর্থ হয়েছে, বার্তা প্রসেসর ব্যাকএন্ড সার্ভারের শংসাপত্র যাচাই করতে অক্ষম ছিল৷
- ত্রুটি:
- ট্রেসে AX (Analytics Data Recorded) ফেজে নেভিগেট করুন এবং এটিতে ক্লিক করুন।
ফেজ বিশদ ত্রুটি শিরোনাম বিভাগে নিচে স্ক্রোল করুন এবং নীচে দেখানো হিসাবে X-Apigee-fault-code এবং X-Apigee-fault-source , এবং X-Apigee-বার্তা-আইডির মান নির্ধারণ করুন:
( বড় ছবি দেখুন )
- X-Apigee-fault-code , X-Apigee-fault-source , এবং X-Apigee-Message-ID এর মানগুলি নোট করুন:
ত্রুটি শিরোনাম | মান |
---|---|
এক্স-অ্যাপিজি-ফল্ট-কোড | messaging.adaptors.http.flow.SslHandshakeFailed |
এক্স-অ্যাপিজি-ফল্ট-উৎস | target |
এক্স-অ্যাপিজি-মেসেজ-আইডি | MESSAGE_ID |
এনজিআইএনএক্স
পদ্ধতি #3: NGINX অ্যাক্সেস লগ ব্যবহার করে
NGINX অ্যাক্সেস লগ ব্যবহার করে ত্রুটি নির্ণয় করতে:
- আপনি যদি একজন ব্যক্তিগত ক্লাউড ব্যবহারকারী হন, তাহলে আপনি HTTP
503 Service Unavailable
সম্পর্কে মূল তথ্য নির্ধারণ করতে NGINX অ্যাক্সেস লগ ব্যবহার করতে পারেন। NGINX অ্যাক্সেস লগগুলি পরীক্ষা করুন:
/opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_log
- ত্রুটি কোড
messaging.adaptors.http.flow.SslHandshakeFailed
একটি নির্দিষ্ট সময়কালে (যদি সমস্যাটি অতীতে ঘটে থাকে) বা503
503
সাথে কোনো অনুরোধ এখনও ব্যর্থ হয়েছে কিনা তা দেখতে অনুসন্ধান করুন। আপনি যদি X-Apigee-fault-code-এর সাথে
messaging.adaptors.http.flow.SslHandshakeFailed
মানের সাথে503
টি ত্রুটি খুঁজে পান, তাহলে X-Apigee-fault-source এর মান নির্ধারণ করুন।NGINX অ্যাক্সেস লগ থেকে নমুনা 503 ত্রুটি:
( বড় ছবি দেখুন )
NGINX অ্যাক্সেস লগ থেকে উপরের নমুনা এন্ট্রিতে X-Apigee-fault-code এবং X-Apigee-fault-source এর জন্য নিম্নলিখিত মান রয়েছে:
হেডার মান এক্স-অ্যাপিজি-ফল্ট-কোড messaging.adaptors.http.flow.SslHandshakeFailed
এক্স-অ্যাপিজি-ফল্ট-উৎস 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উপরের ত্রুটিটি নির্দেশ করে যে মেসেজ প্রসেসর এবং ব্যাকএন্ড সার্ভারের মধ্যে SSL হ্যান্ডশেক ব্যর্থ হয়েছে৷
এটি নীচে দেখানো হিসাবে বিস্তারিত স্ট্যাক ট্রেস সহ একটি ব্যতিক্রম দ্বারা অনুসরণ করা হবে:
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
এটি নির্দেশ করে যে SSL হ্যান্ডশেক ব্যর্থ হয়েছে কারণ Apigee Edge-এর মেসেজ প্রসেসর ব্যাকএন্ড সার্ভারের শংসাপত্র যাচাই করতে অক্ষম ছিল৷
কারণ: বার্তা প্রসেসরের ট্রাস্টস্টোরে ভুল/অসম্পূর্ণ শংসাপত্র বা শংসাপত্রের চেইন
রোগ নির্ণয়
- এপিআই মনিটরিং, ট্রেস টুল বা এনজিআইএনএক্স অ্যাক্সেস লগ ব্যবহার করে দেখা ত্রুটির জন্য ফল্ট কোড , ফল্ট সোর্স নির্ণয় করুন যা সাধারণ নির্ণয়ের ধাপে ব্যাখ্যা করা হয়েছে।
- যদি ফল্ট কোডটি
messaging.adaptors.http.flow.SslHandshakeFailed
হয়, তাহলে নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে ত্রুটি বার্তাটি নির্ধারণ করুন: - সাধারণ নির্ণয়ের ধাপে ব্যাখ্যা করা ট্রেস টুল ব্যবহার করে error.cause খুঁজুন
- সাধারণ নির্ণয়ের ধাপে ব্যাখ্যা করা বার্তা প্রসেসর লগ ব্যবহার করে ব্যতিক্রম খুঁজুন
- আপনার API কলের ত্রুটির প্রতিক্রিয়া থেকে ত্রুটির বার্তায় দেখা যায় এমন
faultstring
খুঁজুন - যদি ত্রুটি বার্তাটি হয়
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
, তাহলে এটি নির্দেশ করে যে SSL হ্যান্ডশেক ব্যর্থ হয়েছে, একটি হিসাবে এজ এর মেসেজ প্রসেসর ব্যাকএন্ড সার্ভারের সার্টিফিকেট যাচাই করতে অক্ষম ছিল।
আপনি দুটি পর্যায়ে এই সমস্যাটি ডিবাগ করতে পারেন:
- পর্যায় 1: ব্যাকএন্ড সার্ভারের সার্টিফিকেট চেইন নির্ধারণ করুন
- পর্যায় 2: মেসেজ প্রসেসরের ট্রাস্টস্টোরে সংরক্ষিত শংসাপত্রের চেইন তুলনা করুন
পর্যায় 1
পর্যায় 1: ব্যাকএন্ড সার্ভারের সার্টিফিকেট চেইন নির্ধারণ করুন
ব্যাকএন্ড সার্ভারের সার্টিফিকেট চেইন নির্ধারণ করতে নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করুন:
openssl
ব্যাকএন্ড সার্ভারের হোস্ট নামের বিরুদ্ধে openssl
কমান্ডটি নিম্নরূপ চালান:
openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT#
উপরের কমান্ডের আউটপুট থেকে সার্টিফিকেট চেইনটি নোট করুন:
openssl কমান্ড আউটপুট থেকে নমুনা ব্যাকএন্ড সার্ভার সার্টিফিকেট চেইন:
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
- আপনি যদি একজন পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে ব্যাকএন্ড সার্ভারে TCP/IP প্যাকেটগুলি ক্যাপচার করুন৷
- আপনি যদি একজন ব্যক্তিগত ক্লাউড ব্যবহারকারী হন, তাহলে আপনি ব্যাকএন্ড সার্ভার বা বার্তা প্রসেসরে TCP/IP প্যাকেটগুলি ক্যাপচার করতে পারেন। প্যাকেটগুলি ব্যাকএন্ড সার্ভারে ডিক্রিপ্ট করা হয় বলে বিশেষভাবে, ব্যাকএন্ড সার্ভারে সেগুলি ক্যাপচার করুন।
TCP/IP প্যাকেট ক্যাপচার করতে নিম্নলিখিত tcpdump কমান্ড ব্যবহার করুন:
tcpdump -i any -s 0 host IP_ADDRESS -w FILE_NAME
Wireshark টুল বা অনুরূপ টুল ব্যবহার করে TCP/IP প্যাকেট বিশ্লেষণ করুন যার সাথে আপনি পরিচিত।
Tcpdump এর নমুনা বিশ্লেষণ
( বড় ছবি দেখুন )
- প্যাকেট #43: মেসেজ প্রসেসর (উৎস) ব্যাকএন্ড সার্ভারে (গন্তব্য) একটি
Client Hello
বার্তা পাঠিয়েছে। - প্যাকেট #44: ব্যাকএন্ড সার্ভার মেসেজ প্রসেসর থেকে
Client Hello
বার্তার প্রাপ্তি স্বীকার করে। - প্যাকেট #45: ব্যাকএন্ড সার্ভার তার সার্টিফিকেট সহ
Server Hello
বার্তা পাঠায়। - প্যাকেট #46: বার্তা প্রসেসর
Server Hello
বার্তা এবং শংসাপত্রের প্রাপ্তি স্বীকার করে। প্যাকেট #47: বার্তা প্রসেসর প্যাকেট #48 -এ
RST, ACK
অনুসরণ করে একটিFIN, ACK
বার্তা পাঠায়।এটি নির্দেশ করে যে বার্তা প্রসেসর দ্বারা ব্যাকএন্ড সার্ভার শংসাপত্রের বৈধতা ব্যর্থ হয়েছে৷ কারণ মেসেজ প্রসেসরের ব্যাকএন্ড সার্ভারের শংসাপত্রের সাথে মেলে এমন কোনো শংসাপত্র নেই বা এর (মেসেজ প্রসেসরের) ট্রাস্টস্টোরে উপলব্ধ শংসাপত্রগুলির সাথে ব্যাকএন্ড সার্ভারের শংসাপত্রকে বিশ্বাস করতে পারে না।
আপনি ফিরে যেতে পারেন এবং প্যাকেট #45 পর্যালোচনা করতে পারেন এবং ব্যাকএন্ড সার্ভার দ্বারা প্রেরিত শংসাপত্রের চেইন নির্ধারণ করতে পারেন
( বড় ছবি দেখুন )
- এই উদাহরণে, আপনি দেখতে পাচ্ছেন যে সার্ভার
common name (CN) = mocktarget.apigee.net
সহ একটি লিফ সার্টিফিকেট পাঠিয়েছে, তারপরেCN= GTS CA 1D4
সহ একটি মধ্যবর্তী শংসাপত্র এবংCN = GTX Root R1
সহ রুট শংসাপত্র পাঠিয়েছে।
আপনি যদি নিশ্চিত হয়ে থাকেন যে সার্ভারের সার্টিফিকেশন বৈধতা ব্যর্থ হয়েছে, তাহলে ফেজ 2-এ যান: ব্যাকএন্ড সার্ভারের সার্টিফিকেট এবং মেসেজ প্রসেসরের ট্রাস্টস্টোরে সংরক্ষিত শংসাপত্রের তুলনা করুন ।
- প্যাকেট #43: মেসেজ প্রসেসর (উৎস) ব্যাকএন্ড সার্ভারে (গন্তব্য) একটি
পর্যায় 2
পর্যায় 2: ব্যাকএন্ড সার্ভারের শংসাপত্র এবং বার্তা প্রসেসরের ট্রাস্টস্টোরে সংরক্ষিত শংসাপত্রের তুলনা করুন
- ব্যাকএন্ড সার্ভারের সার্টিফিকেট চেইন নির্ধারণ করুন ।
- নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করে বার্তা প্রসেসরের ট্রাস্টস্টোরে সংরক্ষিত শংসাপত্রটি নির্ধারণ করুন:
TargetEndpoint
এরSSLInfo
বিভাগেTrustStore
উপাদান থেকে ট্রাস্টস্টোর রেফারেন্স নামটি পান।আসুন একটি
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
। এজ UI এ, পরিবেশ > রেফারেন্স নির্বাচন করুন। নির্দিষ্ট ট্রাস্টস্টোর রেফারেন্সের জন্য রেফারেন্স কলামে নামটি নোট করুন। এটি আপনার ট্রাস্টস্টোর নাম হবে।
( বড় ছবি দেখুন )
উপরের উদাহরণে ট্রাস্টস্টোর নামটি হল:
myCompanyTruststoreRef :
myCompanyTruststore
নিম্নলিখিত APIগুলি ব্যবহার করে ট্রাস্টস্টোরে (আগের ধাপে নির্ধারিত) শংসাপত্রগুলি সংগ্রহ করুন:
একটি কীস্টোর বা ট্রাস্টস্টোরের জন্য সমস্ত শংসাপত্র পান । এই API নির্দিষ্ট ট্রাস্টস্টোরে সমস্ত শংসাপত্র তালিকাভুক্ত করে।
পাবলিক ক্লাউড ব্যবহারকারী:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
ব্যক্তিগত ক্লাউড ব্যবহারকারী:
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" ]
- একটি কীস্টোর বা ট্রাস্টস্টোর থেকে নির্দিষ্ট শংসাপত্রের জন্য শংসাপত্রের বিবরণ পান । এই API নির্দিষ্ট ট্রাস্টস্টোরে একটি নির্দিষ্ট শংসাপত্র সম্পর্কে তথ্য প্রদান করে।
পাবলিক ক্লাউড ব্যবহারকারী:
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"
ব্যক্তিগত ক্লাউড ব্যবহারকারী
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-এ প্রাপ্ত প্রকৃত সার্ভার শংসাপত্র এবং ধাপ 3-এ প্রাপ্ত ট্রাস্টস্টোরে সঞ্চিত শংসাপত্র মিলেছে কিনা যাচাই করুন৷ যদি তারা মেলে না, তাহলে এটি সমস্যার কারণ।
উপরে দেখানো উদাহরণ থেকে, আসুন একবারে একটি শংসাপত্র দেখি:
- পাতার শংসাপত্র:
ব্যাকএন্ড সার্ভার থেকে:
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",
ট্রাস্টস্টোরে সংরক্ষিত পাতার শংসাপত্রটি ব্যাকএন্ড সার্ভারের সাথে মেলে।
- মধ্যবর্তী সার্টিফিকেট:
ব্যাকএন্ড সার্ভার থেকে:
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",
ট্রাস্টস্টোরে সংরক্ষিত মধ্যবর্তী শংসাপত্রটি ব্যাকএন্ড সার্ভারের সাথে মেলে।
- মূল শংসাপত্র:
ব্যাকএন্ড সার্ভার থেকে:
s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
মেসেজ প্রসেসরের ট্রাস্টস্টোরে রুট সার্টিফিকেট সম্পূর্ণভাবে অনুপস্থিত।
যেহেতু রুট শংসাপত্রটি ট্রাস্টস্টোরে অনুপস্থিত, মেসেজ প্রসেসর নিম্নলিখিত ব্যতিক্রমটি নিক্ষেপ করে:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
এবং ক্লায়েন্ট অ্যাপ্লিকেশনগুলিতে ত্রুটি কোড
messaging.adaptors.http.flow.SslHandshakeFailed
সহ503 Service Unavailable
প্রদান করে।
- পাতার শংসাপত্র:
রেজোলিউশন
- নিশ্চিত করুন যে আপনার কাছে ব্যাকএন্ড সার্ভারের সঠিক এবং সম্পূর্ণ শংসাপত্রের চেইন আছে।
- আপনি যদি একজন পাবলিক ক্লাউড ব্যবহারকারী হন, Apigee Edge-এর মেসেজ প্রসেসর ট্রাস্টস্টোরে সার্টিফিকেট আপডেট করতে ক্লাউডের জন্য একটি TLS শংসাপত্র আপডেট করুন-এর নির্দেশাবলী অনুসরণ করুন।
- আপনি যদি একজন ব্যক্তিগত ক্লাউড ব্যবহারকারী হন, তাহলে Apigee Edge-এর মেসেজ প্রসেসর ট্রাস্টস্টোরে সার্টিফিকেট আপডেট করতে প্রাইভেট ক্লাউডের জন্য একটি TLS শংসাপত্র আপডেট করুন-এর নির্দেশাবলী অনুসরণ করুন।
কারণ: ব্যাকএন্ড সার্ভারের শংসাপত্রে 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
।
রোগ নির্ণয়
- API প্রক্সিতে নির্দিষ্ট টার্গেট এন্ডপয়েন্ট পরীক্ষা করুন যেখানে আপনি এই ত্রুটিটি পর্যবেক্ষণ করছেন এবং ব্যাকএন্ড সার্ভারের হোস্ট নামটি নোট করুন:
নমুনা টার্গেট এন্ডপয়েন্ট:
<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
কমান্ড ব্যবহার করে ব্যাকএন্ড সার্ভারের শংসাপত্রে FQDN নির্ধারণ করুন:openssl s_client -connect BACKEND_SERVER_HOST_NAME>:PORT_#>
যেমন:
openssl s_client -connect backend.company.com:443
বিভাগ
Certificate chain
পরীক্ষা করুন এবং লিফ সার্টিফিকেটের বিষয়ে CN এর অংশ হিসাবে নির্দিষ্ট করা FQDN নোট করুন।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উপরের উদাহরণে, ব্যাকএন্ড সার্ভারের FQDN হল
backend.apigee.net
।- যদি ধাপ 1 থেকে প্রাপ্ত ব্যাকএন্ড সার্ভারের হোস্ট নাম এবং FQDN প্রাপ্ত ধাপ 2 এর মধ্যে মিল না হয়, তাহলে এটি ত্রুটির কারণ।
- উপরে আলোচিত উদাহরণে, টার্গেট এন্ডপয়েন্টে হোস্টের নাম হল
backend.company. com
যাইহোক, ব্যাকএন্ড সার্ভারের শংসাপত্রে FQDN নাম হলbackend.apigee. net
যেহেতু তারা মেলে না, আপনি এই ত্রুটিটি পান।
রেজোলিউশন
আপনি নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে এই সমস্যাটি সমাধান করতে পারেন:
সঠিক FQDN
সঠিক FQDN, বৈধ এবং সম্পূর্ণ শংসাপত্র চেইন সহ ব্যাকএন্ড সার্ভারের কীস্টোর আপডেট করুন:
- আপনার যদি সঠিক FQDN সহ একটি ব্যাকএন্ড সার্ভারের শংসাপত্র না থাকে, তাহলে উপযুক্ত CA (শংসাপত্র কর্তৃপক্ষ) থেকে যথাযথ শংসাপত্রটি সংগ্রহ করুন৷
আপনার কাছে একটি বৈধ এবং সম্পূর্ণ ব্যাকএন্ড সার্ভারের সার্টিফিকেট চেইন আছে তা যাচাই করুন ৷
- একবার আপনার কাছে বৈধ এবং সম্পূর্ণ শংসাপত্রের চেইন ব্যাকএন্ড সার্ভারের সঠিক FQDN সহ লিফ বা এন্টিটি সার্টিফিকেট যা লক্ষ্য এন্ডপয়েন্টে নির্দিষ্ট করা হোস্ট নামের সাথে অভিন্ন, সম্পূর্ণ শংসাপত্র চেইন সহ ব্যাকএন্ডের কীস্টোর আপডেট করুন।
সঠিক ব্যাকএন্ড সার্ভার
সঠিক ব্যাকএন্ড সার্ভারের হোস্ট নাম দিয়ে টার্গেট এন্ডপয়েন্ট আপডেট করুন:
- যদি হোস্টের নাম টার্গেট এন্ডপয়েন্টে ভুলভাবে নির্দিষ্ট করা থাকে, তাহলে ব্যাকএন্ড সার্ভারের সার্টিফিকেটের FQDN-এর সাথে মেলে এমন সঠিক হোস্ট নাম পেতে টার্গেট এন্ডপয়েন্ট আপডেট করুন।
API প্রক্সিতে পরিবর্তনগুলি সংরক্ষণ করুন।
উপরে আলোচিত উদাহরণে, যদি ব্যাকএন্ড সার্ভারের হোস্টের নাম ভুলভাবে নির্দিষ্ট করা থাকে, তাহলে আপনি ব্যাকএন্ড সার্ভারের সার্টিফিকেট থেকে 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
নোট করুন।openssl কমান্ড আউটপুট থেকে নমুনা ব্যাকএন্ড সার্ভার সার্টিফিকেট চেইন:
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 সাপোর্টের সাথে যোগাযোগ করুন:
- আপনি যদি একজন পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্য প্রদান করুন:
- প্রতিষ্ঠানের নাম
- পরিবেশের নাম
- API প্রক্সি নাম
- ত্রুটিটি পুনরুত্পাদন করতে
curl
কমান্ডটি সম্পূর্ণ করুন - ট্রেস ফাইল ত্রুটি দেখাচ্ছে
openssl
কমান্ডের আউটপুট:openssl s_client -connect BACKEND_SERVER_HOST_NAME : PORT_#
- TCP/IP প্যাকেট ব্যাকএন্ড সার্ভারে ক্যাপচার করা হয়েছে
- আপনি যদি একজন ব্যক্তিগত ক্লাউড ব্যবহারকারী হন, তাহলে নিম্নলিখিত তথ্য প্রদান করুন:
- সম্পূর্ণ ত্রুটি বার্তা পরিলক্ষিত
- API প্রক্সি বান্ডেল
- ট্রেস ফাইল ত্রুটি দেখাচ্ছে
- বার্তা প্রসেসর লগ
/opt/apigee/var/log/edge-message-processor/logs/system.log
-
openssl
কমান্ডের আউটপুট:
openssl s_client -connect BACKEND_SERVER_HOST_NAME : PORT_#
- TCP/IP প্যাকেটগুলি ব্যাকএন্ড সার্ভার বা মেসেজ প্রসেসরে ক্যাপচার করা হয়েছে।
- একটি কীস্টোর বা ট্রাস্টস্টোর API-এর জন্য সমস্ত শংসাপত্র পান এর আউটপুট এবং একটি কীস্টোর বা ট্রাস্টস্টোর API থেকে শংসাপত্রের বিবরণ পান ব্যবহার করে প্রাপ্ত প্রতিটি শংসাপত্রের বিশদ বিবরণ।
তথ্যসূত্র
- আস্থার শংসাপত্র চেইন
- OpenSSL কমান্ড