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

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

উপসর্গ

ক্লায়েন্ট অ্যাপ্লিকেশনটি এজ মাইক্রোগেটওয়েতে API কলগুলির প্রতিক্রিয়া হিসাবে 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' }

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

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

কারণ: টার্গেট সার্ভার একটি স্ব-স্বাক্ষরিত শংসাপত্র উপস্থাপন করে

যদি একটি স্ব-স্বাক্ষরিত শংসাপত্র সাউথবাউন্ড সংযোগে টার্গেট সার্ভার দ্বারা উপস্থাপিত হয়, তাহলে 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 ​​নির্দেশ করে যে এজ মাইক্রোগেটওয়ে সম্ভবত লক্ষ্য সার্ভার থেকে একটি স্ব-স্বাক্ষরিত শংসাপত্র পেয়েছে৷ এটি নিশ্চিত করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  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. যদি তা সম্ভব না হয়, তাহলে এজ মাইক্রোগেটওয়েতে স্ব-স্বাক্ষরিত শংসাপত্রগুলিকে অনুমতি দেওয়ার জন্য নিম্নলিখিত বিকল্পগুলির মধ্যে একটি বিবেচনা করুন৷

    বিকল্প #1: এজ মাইক্রোগেটওয়েকে সমস্ত শংসাপত্র বিশ্বাস করার অনুমতি দেওয়ার জন্য একটি সিস্টেম বৈশিষ্ট্য সেট করুন

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

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

    বিকল্প #2: সেই লক্ষ্য সার্ভারের জন্য সেই নির্দিষ্ট শংসাপত্রকে বিশ্বাস করতে এজ মাইক্রোগেটওয়ে 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

    এটি কনফিগার করার নির্দেশাবলী এজ মাইক্রোগেটওয়ে মডিউল - কনফিগার 1-ওয়ে এবং 2-ওয়ে সাউথবাউন্ড TLS ভিডিওতেও রয়েছে৷ আরও তথ্যের জন্য এজ মাইক্রোগেটওয়ে সার্ভারে SSL কনফিগার করা পড়ুন।

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

কারণ: Apigee এজ ম্যানেজমেন্ট সার্ভার একটি স্ব-স্বাক্ষরিত শংসাপত্র ব্যবহার করে

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

এজ প্রাইভেট ক্লাউডের জন্য, ম্যানেজমেন্ট সার্ভার URL -m আর্গুমেন্ট দ্বারা নির্ধারিত হয়। আপনি যদি ম্যানেজমেন্ট সার্ভারের জন্য TLS সক্ষম করে থাকেন, তাহলে এজ মাইক্রোগেটওয়ে ম্যানেজমেন্ট সার্ভার দ্বারা উপস্থাপিত শংসাপত্র যাচাই করার চেষ্টা করবে।

এজ প্রাইভেট ক্লাউডের জন্য 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. যদি তা সম্ভব না হয়, তাহলে এজ মাইক্রোগেটওয়েতে স্ব-স্বাক্ষরিত শংসাপত্রগুলিকে অনুমতি দেওয়ার জন্য নিম্নলিখিতগুলি করুন৷

  3. এজ মাইক্রোগেটওয়েকে সমস্ত শংসাপত্র বিশ্বাস করার অনুমতি দেওয়ার জন্য একটি সিস্টেম বৈশিষ্ট্য সেট করুন৷
  4. আপনি যদি ডকার ব্যবহার করেন , তাহলে 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 পরিবর্তন করার পরামর্শ দেওয়া হয়।
  • কনফিগারেশন ফাইল : এজ মাইক্রোগেটওয়ের মূল কনফিগারেশনটি ডিফল্ট এজ মাইক্রোগেটওয়ে ফোল্ডার, $HOME/.edgemicro এ YAML ফাইলে থাকে। default.yaml নামে একটি ডিফল্ট কনফিগার ফাইল রয়েছে এবং তারপর প্রতিটি পরিবেশের জন্য একটি ORG - ENV - config.yaml । প্রভাবিত org এবং env-এর জন্য এই ফাইলটি সম্পূর্ণ আপলোড করুন।

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

    এজ এপিআই অ্যাক্সেস করতে TLS ব্যবহার করতে এজ UI কনফিগার করুন