502 ভুল গেটওয়ে - চেনে সেল্ফ-সাইন করা সার্টিফিকেট

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

সমস্যার উপসর্গ

Edge Microgateway-তে API কলের উত্তর হিসেবে ক্লায়েন্ট অ্যাপ্লিকেশন 502 HTTP রেসপন্স কোড সহ মেসেজ Bad Gateway পায়।

অথবা, অ্যাডমিনিস্ট্রেটর 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 ম্যানেজমেন্ট সার্ভার একটি স্ব-স্বাক্ষরিত সার্টিফিকেট ব্যবহার করে প্রথমবার Edge Microgateway কনফিগার করার সময়, এটি বুটস্ট্র্যাপ করার জন্য TLS-এর মাধ্যমে Apigee Edge-এর সাথে কানেক্ট করবে। Edge যদি একটি সেল্ফ-সাইন করা সার্টিফিকেট দেখায়, তাহলে এটি কাজ করবে না। Edge Private Cloud ব্যবহারকারী

কারণ: টার্গেট সার্ভার একটি সেল্ফ-সাইন করা সার্টিফিকেট দেখায়

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

ডায়াগনসিস

আপনি লগ (/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 থেকে বোঝা যায় যে Edge Microgateway সম্ভবত টার্গেট সার্ভার থেকে একটি সেল্ফ-সাইন করা সার্টিফিকেট পেয়েছে। এটি কনফার্ম করতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:

  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. আপনি docker ব্যবহার করলে, তাহলে Node.js-এর বিশ্বাসযোগ্য নয় এমন CA ব্যবহার করা
    2. অন্যথায়, NODE_EXTRA_CA_CERTS, নামের একটি এনভায়রনমেন্ট ভেরিয়েবল এক্সপোর্ট করুন যা রুট CA ফাইলের দিকে পয়েন্ট করে।

      এটি অফিসিয়াল Node.js ওয়েবসাইটে ডকুমেন্ট করা আছে।

    বিকল্প #২: সেই টার্গেট সার্ভারের জন্য নির্দিষ্ট সার্টিফিকেটকে বিশ্বাস করার জন্য Edge Microgateway 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 মডিউল - ১-ওয়ে ও ২-ওয়ে সাউথবাউন্ড TLS কনফিগার করুন ভিডিওতে কভার করা হয়েছে। আরও তথ্যের জন্য Edge Microgateway সার্ভারে SSL কনফিগার করা দেখুন।

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

কারণ: Apigee Edge ম্যানেজমেন্ট সার্ভার স্ব-স্বাক্ষরিত সার্টিফিকেট ব্যবহার করে

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

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

Edge Private Cloud-এর জন্য 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. আপনি docker ব্যবহার করলে, তাহলে Node.js-এর বিশ্বাসযোগ্য নয় এমন CA ব্যবহার করা দেখুন।
  5. অন্যথায়, NODE_EXTRA_CA_CERTS, নামের একটি এনভায়রনমেন্ট ভেরিয়েবল এক্সপোর্ট করুন যা রুট CA ফাইলের দিকে পয়েন্ট করে। এটি Node.js-এর অফিসিয়াল ওয়েবসাইটে ডকুমেন্ট করা আছে।

অবশ্যই ডায়াগনস্টিক তথ্য সংগ্রহ করতে হবে

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

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

    রেফারেন্স ডকুমেন্ট

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