502 খারাপ গেটওয়ে - চেইনে স্ব-স্বাক্ষরিত শংসাপত্র

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

লক্ষণ

ক্লায়েন্ট অ্যাপ্লিকেশনটি এজ মাইক্রোগেটওয়েতে এপিআই কলের প্রতিক্রিয়া হিসাবে ' Bad Gateway বার্তা সহ একটি 502 HTTP প্রতিক্রিয়া কোড পায়।

বিকল্পভাবে, edgemicro configure কমান্ডটি চালানোর সময় প্রশাসক self signed certificate in certificate chain ত্রুটি পাবেন।

ত্রুটির বার্তা

ক্লায়েন্ট নিম্নলিখিত প্রতিক্রিয়া বার্তাটি দেখতে পাবে:

HTTP/1.1 502 Bad Gateway

ভুল প্রতিক্রিয়ার দুটি সাধারণ উদাহরণ হলো:

{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}
{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}

বিকল্পভাবে, edgemicro configure চালানোর সময় এই ত্রুটিটি ঘটতে পারে:

{ Error: self signed certificate in certificate chain
at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34)
at TLSSocket.emit (events.js:189:13)
at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }

সম্ভাব্য কারণসমূহ

কারণ বর্ণনা সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য
টার্গেট সার্ভার একটি সেলফ-সাইনড সার্টিফিকেট উপস্থাপন করে। Edge Microgateway টার্গেট সার্ভারের সার্টিফিকেট যাচাই করবে এবং যদি সেটি বিশ্বস্ত না হয়, তবে একটি রানটাইম এরর দেখাবে। এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা
Apigee Edge Management Server একটি সেলফ-সাইনড সার্টিফিকেট ব্যবহার করে। প্রথমবার Edge Microgateway কনফিগার করার সময়, এটি বুটস্ট্র্যাপ করার জন্য TLS-এর মাধ্যমে Apigee Edge-এর সাথে সংযোগ স্থাপন করবে। যদি Edge একটি সেলফ-সাইন্ড সার্টিফিকেট উপস্থাপন করে, তবে এই প্রক্রিয়াটি ব্যর্থ হবে। এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা

কারণ: টার্গেট সার্ভার একটি সেলফ-সাইন্ড সার্টিফিকেট উপস্থাপন করছে।

যদি টার্গেট সার্ভার সাউথবাউন্ড কানেকশনে একটি সেলফ-সাইন্ড সার্টিফিকেট উপস্থাপন করে, তাহলে এজ মাইক্রোগেটওয়ে ডিফল্টভাবে এই এররটি দেখাবে, কারণ এটি সেলফ-সাইন্ড সার্টিফিকেটকে বিশ্বাস করে না।

রোগ নির্ণয়

আপনি লগগুলিতে ( /var/tmp/edgemicro-`hostname`- *.log ) নিম্নলিখিত ত্রুটিটি দেখতে পারেন:

2021-05-18T10:52:46.425Z [error][0:8000][1][gsc][test][edgemicro_badtargethost][][][2db53f80-
b7c7-11eb-9abe-05b6297863f1][microgateway-core][][GET][502][self signed certificate in certificate
chain][SELF_SIGNED_CERT_IN_CHAIN][]

SELF_SIGNED_CERT_IN_CHAIN ​​এরর কোডটি নির্দেশ করে যে এজ মাইক্রোগেটওয়ে সম্ভবত টার্গেট সার্ভার থেকে একটি সেলফ-সাইন্ড সার্টিফিকেট পেয়েছে। এটি নিশ্চিত করতে, নিম্নলিখিত ধাপগুলো অনুসরণ করুন:

  1. টার্গেট সার্ভারের সার্টিফিকেট চেইন যাচাই করতে নিম্নলিখিত openssl কমান্ডটি চালান:
    echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
    
  2. যদি টার্গেট সার্ভারের সার্টিফিকেট চেইনটি সত্যিই সেলফ-সাইন্ড হয়, তাহলে এটাই সমস্যার কারণ।

    নিম্নলিখিত উদাহরণে লক্ষ্য করুন যে, টার্গেট সার্ভারটি একটি সেলফ-সাইন্ড সার্টিফিকেট উপস্থাপন করছে:

    echo | openssl s_client -connect untrusted-root.badssl.com:443 -servername untrusted-root.badssl.com | openssl x509 -noout
    
    depth=1 C = US, ST = California, L = San Francisco, O = BadSSL, CN = BadSSL Untrusted Root Certificate Authority
    verify error:num=19:self signed certificate in certificate chain
    verify return:0
    DONE

সমাধান

  1. টার্গেট সার্ভারের মালিক দলের সাথে কাজ করে একটি বিশ্বস্ত সার্টিফিকেট অথরিটি (CA) দ্বারা স্বাক্ষরিত যথাযথ TLS সার্টিফিকেট সংগ্রহ করুন।
  2. যদি তা সম্ভব না হয়, তাহলে Edge Microgateway-তে সেলফ-সাইন্ড সার্টিফিকেট অনুমোদনের জন্য নিম্নলিখিত বিকল্পগুলির মধ্যে একটি বিবেচনা করুন।

    বিকল্প #১: Edge Microgateway-কে সকল সার্টিফিকেট বিশ্বাস করার অনুমতি দিতে একটি সিস্টেম প্রপার্টি সেট করুন।

    1. আপনি যদি ডকার ব্যবহার করেন , তাহলে "Node.js দ্বারা অবিশ্বস্ত একটি CA ব্যবহার করা" অংশটি দেখুন।
    2. অন্যথায়, রুট CA ফাইলকে নির্দেশ করে NODE_EXTRA_CA_CERTS নামের একটি এনভায়রনমেন্ট ভেরিয়েবল এক্সপোর্ট করুন।

      এই বিষয়টি Node.js-এর অফিসিয়াল ওয়েবসাইটে নথিভুক্ত করা আছে।

    বিকল্প #২: ওই টার্গেট সার্ভারের জন্য নির্দিষ্ট সার্টিফিকেটটিকে বিশ্বাসযোগ্য করতে এজ মাইক্রোগেটওয়ে YAML কনফিগারেশন ফাইলটি কনফিগার করুন।

    1. নিশ্চিত করুন যে আপনার কাছে টার্গেট সার্ভারের সার্টিফিকেট (বা চেইন) PEM ফরম্যাটে আছে। অন্যান্য সার্টিফিকেট ফরম্যাটকে PEM-এ রূপান্তর করতে, “সার্টিফিকেটকে সমর্থিত ফরম্যাটে রূপান্তর” অংশে দেওয়া নির্দেশাবলী অনুসরণ করুন।
    2. যদি একটি সার্টিফিকেট চেইন থাকে, তবে নিশ্চিত করুন যে সার্টিফিকেটগুলো সঠিক ক্রমে রয়েছে। লিফ সার্টিফিকেট সর্বদা প্রথমে থাকবে, তারপরে ইন্টারমিডিয়েট সার্টিফিকেট এবং সবশেষে রুট সার্টিফিকেট। এই বিষয়ে আরও বিস্তারিত ব্যাখ্যা "সার্টিফিকেট চেইন যাচাইকরণ" অংশে রয়েছে।

      নিম্নলিখিত উদাহরণে, আমরা untrusted-root.badssl.com এর জন্য বিশ্বস্ত CA ফাইলটি কনফিগার করেছি।

      edgemicro:
      ...
      targets:
        - host: 'untrusted-root.badssl.com'
          ssl:
            client
              ca: /opt/apigee/certs/untrusted-root.pem

    এটি কনফিগার করার নির্দেশাবলী “ Edge Microgateway Module - Configure 1-way and 2-way Southbound TLS” ভিডিওটিতেও আলোচনা করা হয়েছে। আরও তথ্যের জন্য “Configuring SSL on the Edge Microgateway server” দেখুন।

যদি সমস্যাটি এখনও থেকে যায়, তাহলে 'অবশ্যই ডায়াগনস্টিক তথ্য সংগ্রহ করুন' অংশে যান।

কারণ: Apigee Edge Management Server একটি সেলফ-সাইন্ড সার্টিফিকেট ব্যবহার করে।

যখন Edge Microgateway প্রথমবার সেট আপ করা হয়, তখন আপনাকে যে কমান্ডগুলো চালাতে হবে তার মধ্যে একটি হলো edgemicro configure অথবা edgemicro private configure । এই কমান্ডটি ক্লাস্টারকে বুটস্ট্র্যাপ করবে এবং প্রয়োজনীয় তথ্য ডাউনলোড করার জন্য Apigee Edge-এর সাথে যোগাযোগ করবে।

Edge Private Cloud-এর ক্ষেত্রে, ম্যানেজমেন্ট সার্ভার URL-টি -m আর্গুমেন্ট দ্বারা নির্ধারিত হয়। যদি আপনি ম্যানেজমেন্ট সার্ভারের জন্য TLS সক্রিয় করে থাকেন, তাহলে Edge Microgateway ম্যানেজমেন্ট সার্ভার কর্তৃক উপস্থাপিত সার্টিফিকেটটি যাচাই করার চেষ্টা করবে।

এজ প্রাইভেট ক্লাউডের জন্য একটি edgemicro configure কমান্ডের উদাহরণ নিচে দেওয়া হলো:

edgemicro private configure -u <username> -p <password> -o apigee -e dev -v secure -r https://apigee-dev.net -m https://management.apigee-dev.net:8443

যদি ম্যানেজমেন্ট সার্ভারটি একটি সেলফ-সাইন্ড সার্টিফিকেট দিয়ে কনফিগার করা থাকে, তাহলে আপনি কনসোল আউটপুটে নিম্নলিখিত ত্রুটিটি পাবেন।

{ Error: self signed certificate in certificate chain
at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34)
at TLSSocket.emit (events.js:189:13)
at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }

রোগ নির্ণয়

  1. এক্ষেত্রে, ম্যানেজমেন্ট সার্ভার ( management.apigee-dev.net ) একটি সেলফ-সাইন্ড TLS সার্টিফিকেট ফেরত দিতে পারে।
  2. সম্ভবত আপনার Apigee Edge সিস্টেম অ্যাডমিনিস্ট্রেটরই সার্টিফিকেটটি দিয়েছেন এবং তাঁর কাছে এর একটি কপি রয়েছে।
  3. অন্যথায়, সার্টিফিকেট সম্পর্কে তথ্য পেতে নিম্নলিখিত কমান্ডটি চালান:
    echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
    
  4. যদি ম্যানেজমেন্ট সার্ভারে একটি সেলফ-সাইন্ড সার্টিফিকেট থাকে, তাহলে সেটাই এই সমস্যার কারণ।

সমাধান

  1. টার্গেট সার্ভারের মালিক দলের সাথে কাজ করে একটি বিশ্বস্ত সার্টিফিকেট অথরিটি (CA) দ্বারা স্বাক্ষরিত যথাযথ TLS সার্টিফিকেট সংগ্রহ করুন।
  2. যদি তা সম্ভব না হয়, তাহলে Edge Microgateway-তে সেলফ-সাইন্ড সার্টিফিকেট অনুমোদনের জন্য নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করুন।

  3. Edge Microgateway-কে সকল সার্টিফিকেট বিশ্বাস করার অনুমতি দিতে একটি সিস্টেম প্রপার্টি সেট করুন।
  4. আপনি যদি ডকার ব্যবহার করেন , তাহলে Node.js দ্বারা অবিশ্বস্ত CA ব্যবহার করার বিষয়টি দেখুন।
  5. অন্যথায়, রুট CA ফাইলকে নির্দেশ করে NODE_EXTRA_CA_CERTS নামে একটি এনভায়রনমেন্ট ভেরিয়েবল এক্সপোর্ট করুন। এই বিষয়টি অফিসিয়াল Node.js ওয়েবসাইটে নথিভুক্ত করা আছে।

রোগ নির্ণয়ের তথ্য অবশ্যই সংগ্রহ করতে হবে

উপরের নির্দেশাবলী অনুসরণ করার পরেও যদি সমস্যাটি থেকে যায়, তাহলে নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন এবং তারপর Apigee Edge Support-এর সাথে যোগাযোগ করুন:

  • লগ ফাইল : ডিফল্ট ফোল্ডার হলো /var/tmp , কিন্তু এটি মূল config.yaml ফাইলে ( logging > dir parameter ) পরিবর্তন করা যেতে পারে। Apigee Edge Support- কে লগ ফাইল দেওয়ার আগে log > level পরিবর্তন করে info করার পরামর্শ দেওয়া হচ্ছে।
  • কনফিগারেশন ফাইল : Edge Microgateway-এর মূল কনফিগারেশনটি ডিফল্ট Edge Microgateway ফোল্ডার, $HOME/.edgemicro এর YAML ফাইলে থাকে। এখানে default.yaml নামে একটি ডিফল্ট কনফিগারেশন ফাইল এবং প্রতিটি এনভায়রনমেন্টের ORG - ENV - config.yaml ) জন্য একটি করে ফাইল রয়েছে। সংশ্লিষ্ট অর্গ এবং এনভায়রনমেন্টের জন্য এই ফাইলটি সম্পূর্ণভাবে আপলোড করুন।

    রেফারেন্স নথি

    Edge API অ্যাক্সেস করার জন্য TLS ব্যবহার করতে Edge UI কনফিগার করুন।