প্রাইভেট ক্লাউডের জন্য কোনও API-তে TLS অ্যাক্সেস কনফিগার করা

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

Edge-এ ভার্চুয়াল হোস্ট সেইসব ডোমেন ও পোর্টকে ডিফাইন করে যেখানে API প্রক্সি এক্সপোজ করা হয় এবং এর সাথে সাথে অ্যাপ API প্রক্সি অ্যাক্সেস করার জন্য যে URL ব্যবহার করে সেটিও ডিফাইন করে।

এছাড়াও, ভার্চুয়াল হোস্ট নির্ধারণ করে যে API প্রক্সি HTTP প্রোটোকল ব্যবহার করে অ্যাক্সেস করা হবে নাকি TLS ব্যবহার করে এনক্রিপ্ট করা HTTPS প্রোটোকল ব্যবহার করে অ্যাক্সেস করা হবে। HTTPS এবং TLS ব্যবহার করার জন্য ভার্চুয়াল হোস্ট কনফিগার করার সময়, আপনি Edge-এ ভার্চুয়াল হোস্ট তৈরি করেন এবং কীস্টোর ও ট্রাস্টস্টোর ব্যবহার করার জন্য ভার্চুয়াল হোস্ট কনফিগার করেন।

আরও জানুন:

ভার্চুয়াল হোস্ট তৈরি করতে কী প্রয়োজন

ভার্চুয়াল হোস্ট তৈরি করার আগে, আপনার কাছে নিম্নলিখিত তথ্য থাকতে হবে:

  • ভার্চুয়াল হোস্টের সর্বজনীন ডোমেনের নাম। যেমন, আপনাকে জানতে হবে যে পাবলিকের কাছে দৃশ্যমান নাম api.myCompany.com, myapi.myCompany.com ইত্যাদি কিনা। ভার্চুয়াল হোস্ট তৈরি করার সময় এবং ভার্চুয়াল হোস্টের জন্য ডিএনএস রেকর্ড তৈরি করার সময় এই তথ্য ব্যবহার করা হয়।
  • একমুখী TLS-এর জন্য, আপনাকে এমন একটি কীস্টোর তৈরি করতে হবে যেখানে কীস্টোরে নিম্নলিখিত বিষয়গুলি থাকবে:
    • TLS সার্টিফিকেট - সার্টিফিকেট প্রদানকারী কর্তৃপক্ষ (CA) দ্বারা স্বাক্ষরিত সার্টিফিকেট অথবা সার্টিফিকেটের একটি চেইন যেখানে শেষ সার্টিফিকেটটি CA দ্বারা স্বাক্ষরিত।
    • প্রাইভেট কী - Edge ২০৪৮ বিট পর্যন্ত কী সাইজ সাপোর্ট করে। একটি পাসফ্রেজ ঐচ্ছিক।
  • টু-ওয়ে TLS-এর জন্য, আপনার একটি কীস্টোর এবং ক্লায়েন্টের সার্টিফিকেট ও ঐচ্ছিকভাবে সার্টিফিকেটের CA চেইন রাখার জন্য একটি ট্রাস্টস্টোর প্রয়োজন। এমনকি যদি কোনও CA-এর দ্বারা সার্টিফিকেট সাইন করা হয়, তাহলেও আপনার ট্রাস্টস্টোর প্রয়োজন।

কীস্টোর ও ট্রাস্টস্টোর তৈরি করা সম্পর্কে আরও তথ্যের জন্য কীস্টোর ও ট্রাস্টস্টোর দেখুন।

TLS-এর জন্য ভার্চুয়াল হোস্ট কনফিগারেশন

ভার্চুয়াল হোস্ট তৈরি করতে, ভার্চুয়াল হোস্টকে সংজ্ঞায়িত করে এমন একটি XML অবজেক্ট তৈরি করুন। নিচে দেওয়া XML অবজেক্টটি <SSLInfo> এলিমেন্ট ব্যবহার করে HTTPS-এর মাধ্যমে একমুখী TLS কনফিগারেশনের জন্য ভার্চুয়াল হোস্টকে সংজ্ঞায়িত করে:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <OCSPStapling>off</OCSPStapling>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

এই উদাহরণে, একমুখী TLS চালু করতে <Enabled> এলিমেন্টকে true হিসেবে সেট করা হয়েছে এবং <KeyStore> ও <KeyAlias> এলিমেন্ট TLS কানেকশন দ্বারা ব্যবহৃত কীস্টোর ও কী নির্দিষ্ট করে।

টু-ওয়ে TLS চালু করতে, <ClientAuthEnabled> এলিমেন্টকে true হিসেবে সেট করুন এবং <TrustStore> এলিমেন্ট ব্যবহার করে একটি ট্রাস্টস্টোর নির্দিষ্ট করুন। ট্রাস্টস্টোরে ক্লায়েন্টের সার্টিফিকেট এবং ঐচ্ছিকভাবে, সার্টিফিকেটের CA চেন থাকে।

ভার্চুয়াল হোস্টের মধ্যে কীস্টোর ও ট্রাস্টস্টোরের নাম কীভাবে নির্দিষ্ট করতে হয় তা নির্ধারণ করা

উপরের ভার্চুয়াল হোস্টের উদাহরণে, আপনি রেফারেন্স ব্যবহার করে কীস্টোর নির্দিষ্ট করেছেন। A রেফারেন্স হল একটি ভেরিয়েবল যাতে সরাসরি কীস্টোরের নাম উল্লেখ না করে কীস্টোরের নাম থাকে।

রেফারেন্স ব্যবহার করার সুবিধা হল, ভার্চুয়াল হোস্টের ব্যবহার করা কীস্টোর পরিবর্তন করতে আপনি রেফারেন্সের ভ্যালু পরিবর্তন করতে পারবেন। সাধারণত, বর্তমান কীস্টোরের সার্টিফিকেটটি অদূর ভবিষ্যতে মেয়াদ শেষ হয়ে যাবে বলে এটি করা হয়। রেফারেন্সের ভ্যালু পরিবর্তন করার জন্য আপনাকে Edge Router রিস্টার্ট করতে হবে না।

অথবা, আপনি ভার্চুয়াল হোস্টে আক্ষরিক কীস্টোরের নাম ব্যবহার করতে পারেন। তবে, আপনি যদি কখনও কীস্টোরের নাম পরিবর্তন করার জন্য ভার্চুয়াল হোস্ট পরিবর্তন করেন, তাহলে আপনাকে Edge রাউটার রিস্টার্ট করতে হবে।

কীস্টোর ও ট্রাস্টস্টোর রেফারেন্স ব্যবহার করার ক্ষেত্রে বিধিনিষেধ

কীস্টোর ও ট্রাস্টস্টোর ব্যবহার করার সময় আপনাকে নিম্নলিখিত বিধিনিষেধ মেনে চলতে হবে:

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

কীস্টোর ও ট্রাস্টস্টোরের রেফারেন্স ব্যবহার করার জন্য আগে থেকে থাকা ভার্চুয়াল হোস্ট পরিবর্তন করা

Apigee বিশেষভাবে সাজেস্ট করে যে ভার্চুয়াল হোস্ট যেন কীস্টোর ও ট্রাস্টস্টোরের রেফারেন্স ব্যবহার করে। রেফারেন্সের সাহায্যে Edge রাউটার রিস্টার্ট না করেই ভার্চুয়াল হোস্টের ব্যবহার করা কীস্টোর ও ট্রাস্টস্টোর পরিবর্তন করতে পারবেন।

আপনার ভার্চুয়াল হোস্ট বর্তমানে কীস্টোর বা ট্রাস্টস্টোরের আক্ষরিক নাম ব্যবহার করার জন্য কনফিগার করা থাকলে, আপনি সেগুলিকে রেফারেন্স ব্যবহার করার জন্য কনভার্ট করতে পারবেন। এটি করতে, রেফারেন্স ব্যবহার করার জন্য ভার্চুয়াল হোস্ট আপডেট করুন এবং তারপরে Edge রাউটার রিস্টার্ট করুন।

Edge 4.15.07 ও এর আগের ভার্সনের জন্য TLS সাইফার ও প্রোটোকল সেট করা

আপনি Edge ভার্সন 4.15.07 ও এর আগের যেকোনও ভার্সন ব্যবহার করলে, TLS প্রোটোকল ও সিফার সেট করুন যা ভার্চুয়াল হোস্ট ব্যবহার করে। এটি করতে, <SSLInfo> ট্যাগের মধ্যে থাকা <Ciphers> ও <Protocols> চাইল্ড ট্যাগ ব্যবহার করুন। নিচের টেবিলে এইসব ট্যাগ সম্পর্কে বর্ণনা করা হয়েছে।

যেমন:

    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>myTestKeystore</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
        <SSLInfo>
            <Enabled>true</Enabled>
            <ClientAuthEnabled>false</ClientAuthEnabled>
            <KeyStore>myTestKeystore</KeyStore>
            <KeyAlias>myKeyAlias</KeyAlias>
            <Ciphers>
                <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</Cipher>
                <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</Cipher>
            </Ciphers>
            <Protocols>
                <Protocol>TLSv1.2</Protocol>
            </Protocols>
        </SSLInfo>
   </SSLInfo>

<Cipher> ট্যাগে সাইফারের Java ও JSSE নাম ব্যবহার করা হয়। যেমন, Java 8-এর জন্য http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites দেখুন।

Edge 4.16.01 থেকে 4.16.09-এর জন্য TLS সাইফার ও প্রোটোকল নির্দিষ্ট করা

Edge 4.16.01 থেকে 4.16.09 ভার্সনে, আপনি রাউটারে গ্লোবালি ভার্চুয়াল হোস্টের জন্য ডিফল্ট সাইফার ও প্রোটোকল সেট করেন। এইসব ডিফল্ট ভ্যালু সব ভার্চুয়াল হোস্টের ক্ষেত্রে প্রযোজ্য হয়।

ডিফল্ট প্রোটোকল ও সাইফার নির্দিষ্ট করতে টোকেন ব্যবহার করুন:

  • ডিফল্ট প্রোটোকল নির্দিষ্ট করতে, টোকেন conf_load_balancing_load.balancing.driver.server.ssl.protocols ব্যবহার করুন
  • রাউটারের জন্য ডিফল্ট সাইফার নির্দিষ্ট করতে, টোকেন conf_load_balancing_load.balancing.driver.server.ssl.ciphers ব্যবহার করুন

conf_load_balancing_load.balancing.driver.server.ssl.protocols টোকেনের ডিফল্ট ভ্যালু হল:

conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2

এই সেটিং থেকে বোঝা যায় যে রাউটার TLS ভার্সন 1.0, 1.1 ও 1.2 সাপোর্ট করে। টোকেনের জন্য স্পেস দিয়ে আলাদা করা ভ্যালুর তালিকা নির্দিষ্ট করুন।

conf_load_balancing_load.balancing.driver.server.ssl.ciphers টোকেনের ডিফল্ট ভ্যালু হল:

conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES

এই সেটিংয়ে উল্লেখ করা থাকে:

  • ১২৮ বিট বা তার বেশি কী দৈর্ঘ্য প্রয়োজন (HIGH)।
  • কোনও যাচাইকরণ নেই এমন সাইফার বাদ দিন (!aNULL)
  • MD5 ব্যবহার করে সাইফার স্যুট বাদ দিন (!MD5)
  • DH (এর মধ্যে রয়েছে বেনামী DH, ক্ষণস্থায়ী DH ও ফিক্সড DH) ব্যবহার করে সাইফার স্যুট বাদ দিন এবং ট্রিপল DES (!DH+3DES)
  • RSA কী এক্সচেঞ্জ ও ট্রিপল DES (!RSA+3DES) ব্যবহার করে সাইফার স্যুট বাদ দিন

এই টোকেন দ্বারা অনুমোদিত সিনট্যাক্স ও ভ্যালু সম্পর্কে তথ্য পেতে, OpenSSL সাইফার দেখুন। মনে রাখবেন, এই টোকেনটি OpenSSL সাইফার নাম ব্যবহার করে, যেমন AES128-SHA256 এবং Java/JSSE সাইফার নাম নয়, যেমন TLS_RSA_WITH_AES_128_CBC_SHA256.

রাউটারের জন্য টোকেন সেট করতে:

  1. /opt/apigee/customer/application/router.properties ফাইল এডিট করুন। সেই ফাইলটি না থাকলে, সেটি তৈরি করুন।
  2. conf_load_balancing_load.balancing.driver.server.ssl.ciphers টোকেন সেট করুন। যেমন, শুধুমাত্র TLSv1.2 নির্দিষ্ট করতে এবং আগে থেকে শেয়ার করা কী ব্যবহার করে সাইফার স্যুট বাদ দিতে, এগুলি যোগ করুন!PSK:
    conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2
    conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES:!PSK
  3. router.properties ফাইলের মালিক যে apigee তা নিশ্চিত করুন:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  4. Edge রাউটার রিস্টার্ট করুন:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  5. টোকেনের ভ্যালু চেক করুন:
    /opt/apigee/apigee-service/bin/apigee-service edge-router configure -search conf_load_balancing_load.balancing.driver.server.ssl.ciphers

Edge ভার্সন 4.17.01 ও তার পরবর্তী যেকোনও ভার্সনের জন্য TLS ভার্চুয়াল হোস্ট প্যারামিটার সেট করা

আপনি Edge ভার্সন 4.17.01 ও তার পরবর্তী যেকোনও ভার্সন ব্যবহার করলে, তাহলে আপনি কোনও ব্যক্তিগত ভার্চুয়াল হোস্টের জন্য কিছু TLS প্রপার্টি সেট করতে পারবেন, যেমন TLS প্রোটোকল ও সাইফার, এর জন্য আপনাকে <VirtualHost> ট্যাগের <Properties> চাইল্ড ট্যাগ ব্যবহার করতে হবে। ভার্চুয়াল হোস্ট প্রপার্টি রেফারেন্স লিঙ্কে এইসব ট্যাগ সম্পর্কে বর্ণনা দেওয়া আছে।

যেমন:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <OCSPStapling>off</OCSPStapling>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
    <Properties>
        <Property name="proxy_read_timeout">50</Property>
        <Property name="keepalive_timeout">300</Property>
        <Property name="proxy_request_buffering">off</Property>
        <Property name="proxy_buffering">off</Property>
        <Property name="ssl_protocols">TLSv1.2 TLSv1.1</Property>
        <Property name="ssl_ciphers">HIGH:!aNULL:!MD5:!DH+3DES:!kEDH</Property>
    </Properties>
</VirtualHost>

ssl_ciphers টোকেন দ্বারা অনুমোদিত সিনট্যাক্স ও ভ্যালু সম্পর্কে তথ্য পেতে, OpenSSL সাইফার দেখুন। মনে রাখবেন, এই টোকেন OpenSSL সাইফার নাম ব্যবহার করে, যেমন AES128-SHA256 এবং TLS_RSA_WITH_AES_128_CBC_SHA256-এর মতো Java/JSSE সাইফার নাম ব্যবহার করে না।

HTTPS ব্যবহার করে এমন ভার্চুয়াল হোস্ট তৈরি করা

এই উদাহরণে, রেফারেন্স ব্যবহার করে ভার্চুয়াল হোস্টের জন্য কীস্টোর নির্দিষ্ট করা হয়েছে। রেফারেন্স ব্যবহার করলে, রাউটার রিস্টার্ট না করেই আপনি কীস্টোর পরিবর্তন করতে পারবেন।

ভার্চুয়াল হোস্ট তৈরি করতে, নিম্নলিখিত পদ্ধতি ব্যবহার করুন:

  1. এখানে বর্ণিত পদ্ধতি ব্যবহার করে myTestKeystore নামের একটি কীস্টোর তৈরি ও কনফিগার করুন: কীস্টোর ও ট্রাস্টস্টোর। নিশ্চিত করুন যে কীস্টোরটি cert এবং ব্যক্তিগত কী-এর জন্য myKeyAlias-এর একটি ছদ্মনাম ব্যবহার করে।
  2. আপনি উপরে যে কীস্টোর তৈরি করেছেন, সেটির জন্য keystoreref নামের রেফারেন্স তৈরি করতে, নিম্নলিখিত POST API কল ব্যবহার করুন:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
      -d '<ResourceReference name="keystoreref">
        <Refers>myTestKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
      </ResourceReference>'
      -u email:password
    

    রেফারেন্সে কীস্টোরের নাম ও রেফারেন্সের ধরন হিসেবে KeyStore উল্লেখ করা হয়।

    রেফারেন্স দেখতে, নিম্নলিখিত GET API কল ব্যবহার করুন:

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
    
  3. ভার্চুয়াল হোস্ট তৈরি করুন API ব্যবহার করে ভার্চুয়াল হোস্ট তৈরি করুন, যেখানে <ms-IP> হল ম্যানেজমেন্ট সার্ভার নোডের IP অ্যাড্রেস বা ডোমেন নেম।

    সঠিক কীস্টোর রেফারেন্স ও কী অ্যালিয়াস উল্লেখ করতে ভুলবেন না:

    curl -X POST -H "Content-Type:application/xml" \
      http://<ms-IP>:8080/v1/o/{org_name}/environments/{env_name}/virtualhosts \
      -d '<VirtualHost  name="newTLSTrustStore2">
        <HostAliases>
          <HostAlias>apiTLS.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>9005</Port>
        <OCSPStapling>off</OCSPStapling>
        <SSLInfo>
          <Enabled>true</Enabled>
          <ClientAuthEnabled>false</ClientAuthEnabled>
          <KeyStore>ref://keystoreref</KeyStore>
          <KeyAlias>myKeyAlias</KeyAlias>
        </SSLInfo>
      </VirtualHost>' \
      -u email:password
  4. হোস্ট অ্যালিয়াসের সাথে ম্যাচ করে এমন ভার্চুয়াল হোস্টের জন্য একটি ডিএনএস রেকর্ড তৈরি করুন।
  5. আপনার কোনও আগে থেকে থাকা API প্রক্সি থাকলে, ProxyEndpoint-এ <HTTPConnection> এলিমেন্টে ভার্চুয়াল হোস্ট যোগ করুন। সব নতুন API প্রক্সিতে ভার্চুয়াল হোস্ট অটোমেটিক যোগ করা হয়।

    ভার্চুয়াল হোস্ট তৈরি করার পরে API প্রক্সি আপডেট করা দেখুন ভার্চুয়াল হোস্ট সম্পর্কে।

ভার্চুয়াল হোস্ট ব্যবহার করার জন্য API প্রক্সি আপডেট করার পরে এবং হোস্ট উপনামের জন্য DNS রেকর্ড তৈরি করার পরে, আপনি নিচে দেখানো পদ্ধতিতে API প্রক্সি অ্যাক্সেস করতে পারবেন:

https://apiTLS.myCompany.com/v1/{project-base-path}/{resource-path}

যেমন:

https://apiTLS.myCompany.com/v1/weather/forecastrss?w=12797282

কীস্টোর বা ট্রাস্টস্টোরের রেফারেন্স তৈরি ও পরিবর্তন করা

আপনি চাইলে, কীস্টোর বা ট্রাস্টস্টোরের রেফারেন্স ব্যবহার করার জন্য ভার্চুয়াল হোস্ট কনফিগার করতে পারেন। রেফারেন্স ব্যবহার করার সুবিধা হল, আপনি TLS সার্টিফিকেট আপডেট করার জন্য রাউটার রিস্টার্ট না করেই অন্য কোনও কীস্টোর বা ট্রাস্টস্টোরকে পয়েন্ট করার জন্য রেফারেন্স আপডেট করতে পারবেন।

যেমন, নিচে দেখানো হল একটি ভার্চুয়াল হোস্ট যা কীস্টোরের রেফারেন্স ব্যবহার করে:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://keystoreref</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

keystoreref নামের রেফারেন্স তৈরি করতে, নিম্নলিখিত POST API কল ব্যবহার করুন:

curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
  -d '<ResourceReference name="keystoreref">
    <Refers>myTestKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
  </ResourceReference>'
  -u email:password

রেফারেন্সে কীস্টোরের নাম ও ধরন উল্লেখ করা থাকে।

রেফারেন্স দেখতে, নিম্নলিখিত GET API কল ব্যবহার করুন:

curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password

পরে অন্য কোনও কীস্টোরকে রেফারেন্স করার জন্য, নিশ্চিত করুন যে অ্যালিয়াসের নাম একই আছে এবং তারপরে নিম্নলিখিত PUT কল ব্যবহার করুন:

curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
  -d '<ResourceReference name="keystoreref">
    <Refers>myNewKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
  </ResourceReference>'
  -u email:password