একটি API প্রক্সিতে TLS সংযোগ তথ্য অ্যাক্সেস করা

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

Edge আপনাকে একমুখী এবং দ্বিমুখী TLS সমর্থনকারী ভার্চুয়াল হোস্ট তৈরি করার সুযোগ দেয়। একমুখী TLS-এর ক্ষেত্রে, ক্লায়েন্ট একটি Edge রাউটারে স্থাপন করা ভার্চুয়াল হোস্টে একটি সেশন অনুরোধ পাঠায় এবং রাউটারটি একটি সার্টিফিকেট দিয়ে সাড়া দেয়, যেটিতে ভার্চুয়াল হোস্টটির পাবলিক কী থাকে। একটি স্বাক্ষরিত সার্টিফিকেটের জন্য, ক্লায়েন্ট তখন সার্টিফিকেটটি প্রমাণীকরণের জন্য সার্টিফিকেট অথরিটি (CA)-এর কাছে একটি অনুরোধ করতে পারে।

দ্বিমুখী TLS-এ, ক্লায়েন্ট এবং Edge উভয়ই সার্টিফিকেট প্রেরণ করে যা একটি অনুরোধের অংশ হিসাবে যাচাই করা হয়:

  • এজ রাউটার নিজেকে প্রমাণীকৃত করার জন্য টিএলএস ক্লায়েন্টের কাছে তার সার্টিফিকেট উপস্থাপন করে। এরপর ক্লায়েন্ট সার্ভারে তার সার্টিফিকেট পাঠানোর আগে সার্ভারের পরিচয় যাচাই করে নেয়।
  • TLS ক্লায়েন্ট নিজেকে প্রমাণীকরণের জন্য Edge-এর কাছে তার সার্টিফিকেট উপস্থাপন করে।

আরও তথ্যের জন্য ভার্চুয়াল হোস্ট সম্পর্কে দেখুন।

TLS সংযোগের তথ্য সংগ্রহ করা

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

Edge যে ধরনের TLS তথ্য সংগ্রহ করে, তা নির্ভর করে ভার্চুয়াল হোস্টটি একমুখী (one-way) নাকি দ্বিমুখী (two-way) TLS সমর্থন করে তার উপর। উদাহরণস্বরূপ, একমুখী TLS-এর ক্ষেত্রে, Edge TLS সংযোগে ব্যবহৃত TLS সাইফার বা TLS প্রোটোকল সম্পর্কিত তথ্য সংগ্রহ করতে পারে।

দ্বিমুখী TLS-এর জন্য, Edge একমুখী TLS-এর মতো সমস্ত তথ্যই সংগ্রহ করতে পারে এবং এর সাথে ক্লায়েন্টের সার্টিফিকেট সম্পর্কিত তথ্যও সংগ্রহ করতে পারে। উদাহরণস্বরূপ, Edge ক্লায়েন্ট সার্টিফিকেটের SHA1 ফিঙ্গারপ্রিন্ট এবং PEM ফরম্যাটে থাকা ক্লায়েন্ট সার্টিফিকেটটি সংগ্রহ করতে পারে।

একমুখী এবং দ্বিমুখী উভয় TLS-এর জন্য তথ্য সংগ্রহ করা

নিম্নলিখিত সারণীতে সেই ফ্লো ভেরিয়েবলগুলির তালিকা দেওয়া হয়েছে যেগুলিতে Edge দ্বারা সংগৃহীত TLS সংযোগের তথ্য রয়েছে এবং যা API প্রক্সিতে অ্যাক্সেসের জন্য উপলব্ধ। ভার্চুয়াল হোস্ট সংজ্ঞায় <ConnectionProperties> কে true সেট করার মাধ্যমে একমুখী এবং দ্বিমুখী উভয় TLS-এর জন্যই এই তথ্য সংগ্রহ করা হয়:

প্রবাহ পরিবর্তনশীল বর্ণনা
tls.cipher TLS সংযোগে ব্যবহৃত সাইফার।
tls.protocol TLS সংযোগে ব্যবহৃত প্রোটোকল।
tls.server.name অনুরোধকৃত SNI সার্ভারের নাম।
tls.session.id

সেশন শনাক্তকারী।

এই ফ্লো ভেরিয়েবলটি তখনই পাওয়া যাবে যখন আপনি <ConnectionProperties> অথবা <ClientProperties> -কে true সেট করবেন।

দ্বিমুখী TLS চলাকালীন অতিরিক্ত TLS তথ্য ক্যাপচার করা

নিম্নলিখিত সারণীতে সেই ফ্লো ভেরিয়েবলগুলির তালিকা দেওয়া হয়েছে যেগুলিতে এজ (Edge) দ্বারা টু-ওয়ে টিএলএস (two-way TLS)-এর মাধ্যমে সংগৃহীত ক্লায়েন্ট সার্টিফিকেটের বিবরণ থাকে। ভার্চুয়াল হোস্ট সংজ্ঞায় <ClientProperties> 'true' সেট করার মাধ্যমে টু-ওয়ে টিএলএস-এর জন্য এই তথ্য সংগ্রহ করা হয়:

প্রবাহ পরিবর্তনশীল বর্ণনা
tls.client.s.dn ক্লায়েন্ট সার্টিফিকেটের বিষয় ডিস্টিংগুইশড নেম (DN)।
tls.client.i.dn ক্লায়েন্ট সার্টিফিকেটের ইস্যুকারী ডিস্টিংগুইশড নেম (DN)।
tls.client.raw.cert ক্লায়েন্ট সার্টিফিকেটটি PEM ফরম্যাটে।
tls.client.cert.serial ক্লায়েন্ট সার্টিফিকেটের ক্রমিক নম্বর।
tls.client.cert.fingerprint ক্লায়েন্ট সার্টিফিকেটের SHA1 ফিঙ্গারপ্রিন্ট।
tls.session.id

সেশন শনাক্তকারী।

যখন আপনি <ConnectionProperties> অথবা <ClientProperties> যেকোনো একটিকে true সেট করেন, তখন এই ফ্লো ভেরিয়েবলটি উপলব্ধ হয়।

TLS তথ্য ক্যাপচার করার জন্য একটি ভার্চুয়াল হোস্ট কনফিগার করা

ভার্চুয়াল হোস্টকে TLS তথ্য ক্যাপচার করার জন্য কনফিগার করতে, <PropagateTLSInformation> এর অধীনে নিম্নলিখিত প্রপার্টিগুলো true তে সেট করুন।

  • <ConnectionProperties> : একমুখী এবং দ্বিমুখী উভয় TLS সংযোগের তথ্য গ্রহণ সক্ষম করুন। এর ডিফল্ট মান হলো false
  • <ClientProperties> : দ্বিমুখী TLS-এর জন্য অতিরিক্ত তথ্য সংগ্রহ সক্ষম করুন। এর ডিফল্ট মান হলো false

উদাহরণস্বরূপ, নিম্নলিখিত ভার্চুয়াল হোস্ট সংজ্ঞাটি দ্বি-মুখী TLS ব্যবহার করে এবং উভয় প্রকার TLS তথ্য ক্যাপচার করতে সক্ষম করে:

<VirtualHost name="secure">
    ....
    <SSLInfo>
        <Enabled>true</Enabled>
        # Enable two-way TLS.
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
        <KeyAlias>ks-alias</KeyAlias>
        <KeyStore>ref://ks-ref</KeyStore>
        <TrustStore>ref://ts-ref</TrustStore>
    </SSLInfo>
    <PropagateTLSInformation>
        <ConnectionProperties>true</ConnectionProperties>
        <ClientProperties>true</ClientProperties>
    </PropagateTLSInformation>
</VirtualHost>

আপনি যদি JSON বডি পাস করেন, তাহলে প্রোপার্টিগুলো নিম্নরূপে সেট করুন:

  "propagateTLSInformation" : {
    "connectionProperties" : true,
    "clientProperties" : true
  }

হেডারের আকারের সীমা নির্ধারণ করুন

যখন আপনি একটি ভার্চুয়াল হোস্টে TLS তথ্য ক্যাপচার করা সক্ষম করেন, তখন Edge HTTP হেডার ব্যবহার করে সেই তথ্য প্রেরণ করে। তাই, আপনি Edge for the Cloud নাকি Edge for the Private Cloud ব্যবহার করছেন, তার উপর ভিত্তি করে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে হেডারের আকারের সীমা যথাযথভাবে সেট করা আছে।

  • ক্লাউডের জন্য এজ : Apigee হেডার সাইজগুলো যথাযথভাবে সেট করে।
  • প্রাইভেট ক্লাউডের জন্য এজ : ফিচারটি উপলব্ধ নয়।

একটি এপিআই প্রক্সিতে ফ্লো ভেরিয়েবল অ্যাক্সেস করা

আপনার এপিআই প্রক্সির ভেতর থেকে, আপনি টিএলএস ফ্লো ভেরিয়েবলগুলো অ্যাক্সেস এবং পরীক্ষা করতে পারেন। উদাহরণস্বরূপ, আপনি AssignMessage পলিসি ব্যবহার করে সেগুলো অ্যাক্সেস করতে পারেন, অথবা JavaScript পলিসির মাধ্যমে জাভাস্ক্রিপ্টে সেগুলো অ্যাক্সেস করতে পারেন।

আপনি একটি প্রক্সি বা টার্গেট ফ্লো-এর <Condition> এলিমেন্টে, অথবা <Step> বা <RouteRule> -এও ফ্লো ভেরিয়েবলগুলো রেফারেন্স করতে পারেন। উদাহরণস্বরূপ, আপনি ক্লায়েন্টের SN-এর উপর ভিত্তি করে একটি রিকোয়েস্টকে বিভিন্ন টার্গেটে রাউট করতে পারেন।

আরও জানতে দেখুন: