API BaaS-এর জন্য TLS কনফিগার করা

প্রাইভেট ক্লাউডের জন্য Edge v. 4.17.09

TLS (ট্রান্সপোর্ট লেয়ার সিকিউরিটি, যার পূর্বসূরী হল SSL) হল আপনার API এনভায়রনমেন্ট জুড়ে সুরক্ষিত, এনক্রিপ্টেড মেসেজিং নিশ্চিত করার জন্য স্ট্যান্ডার্ড নিরাপত্তা প্রযুক্তি। আপনি API BaaS পোর্টাল ও API BaaS Stack নোডে TLS কনফিগার করতে পারবেন।

নিচের ছবিতে একটি BaaS পোর্টাল নোড ও তিনটি API BaaS স্ট্যাক নোড সহ API BaaS-এর একটি সাধারণ ডেপ্লয়মেন্ট ডায়াগ্রাম দেখানো হয়েছে।

ডেভেলপাররা পোর্টালের কাছে অনুরোধ করার জন্য ব্রাউজার ব্যবহার করেন। ডিফল্ট হিসেবে, অনুরোধগুলি পোর্টাল নোডের পোর্ট ৯০০০-এ HTTP প্রোটোকল ব্যবহার করে।

এই ডেপ্লয়মেন্টে পোর্টাল ও স্ট্যাক নোডের মধ্যে একটি লোড ব্যালেন্সার থাকে। এই কনফিগারেশনে, পোর্টাল লোড ব্যালেন্সারে HTTP অনুরোধ করে এবং লোড ব্যালেন্সার তারপরে Stack নোডের কোনও একটিতে অনুরোধ ফরওয়ার্ড করে। প্রোডাকশন সিস্টেমের জন্য এটি সাজেস্ট করা ডিপ্লয়মেন্ট এনভায়রনমেন্ট।

TLS কনফিগারেশন বিকল্প

API BaaS-এর জন্য TLS কনফিগার করার সময় আপনার কাছে একাধিক বিকল্প থাকে:

  • Stack নোডের জন্য পোর্টাল ও লোড ব্যালেন্সারে TLS কনফিগার করুন

    এই কনফিগারেশনে, ডেভেলপাররা পোর্টাল অ্যাক্সেস করার জন্য HTTPS প্রোটোকল ব্যবহার করেন এবং ব্রাউজারে চলমান পোর্টাল, লোড ব্যালেন্সারের মাধ্যমে Stack নোডে অনুরোধ করার জন্য HTTPS ব্যবহার করে। লোড ব্যালেন্সার, Stack নোড অ্যাক্সেস করার জন্য HTTP ব্যবহার করে।
  • পোর্টাল, লোড ব্যালেন্সার ও স্ট্যাক নোডে TLS কনফিগার করুন

    অতিরিক্ত নিরাপত্তার জন্য, স্ট্যাক নোড অ্যাক্সেস করতে TLS ব্যবহার করার জন্য লোড ব্যালেন্সার কনফিগার করুন।
  • পোর্টাল ও একটি Stack নোডে TLS কনফিগার করুন

    টেস্টিং বা ডেভেলপমেন্ট এনভায়রনমেন্টের মতো ছোট এনভায়রনমেন্টে, আপনার হয়ত শুধু একটি Stack নোড থাকবে, অর্থাৎ লোড ব্যালেন্সার যোগ করার প্রয়োজন নেই। এই কনফিগারেশনে, পোর্টাল ও স্ট্যাক নোড, দু'টিতেই TLS কনফিগার করুন।
  • পোর্টালের জন্য লোড ব্যালেন্সারে TLS কনফিগার করা

    উপরে দেখানো বিকল্পগুলির মধ্যে একটি হল পোর্টাল নোডের সামনে লোড ব্যালেন্সার ব্যবহার করা। সেই কনফিগারেশনে, আপনি লোড ব্যালেন্সারে TLS কনফিগার করতে পারবেন এবং ঐচ্ছিকভাবে লোড ব্যালেন্সার ও পোর্টালের মধ্যে কানেকশনেও TLS কনফিগার করতে পারবেন।

TLS পোর্ট খোলা আছে কিনা তা নিশ্চিত করুন

নিচে উল্লেখ করা পদ্ধতিগুলি ডিফল্ট পোর্ট ৯০০০-এ পোর্টাল এবং ৮০০০-এ স্ট্যাক নোডে TLS কনফিগার করে। তবে, আপনি চাইলে এই পোর্ট পরিবর্তন করতে পারবেন।

আপনি যে পোর্টই ব্যবহার করুন না কেন, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে নোডে পোর্টটি খোলা আছে। যেমন, পোর্ট ৮৪৪৩ খোলার জন্য আপনি নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose

API BaaS স্ট্যাকে TLS কনফিগার করা

API BaaS স্ট্যাকের জন্য ডিফল্ট হিসেবে TLS বন্ধ করা থাকে। তারপরে, আপনি Stack নোডের IP অ্যাড্রেস বা DNS নাম এবং পোর্ট 8080 ব্যবহার করে HTTP-এর মাধ্যমে BaaS API অ্যাক্সেস করেন। যেমন:

http://stack_IP:8080

অথবা, আপনি BaaS API-তে TLS অ্যাক্সেস কনফিগার করতে পারেন যাতে আপনি এটি এই ফর্ম্যাটে অ্যাক্সেস করতে পারেন:

https://stack_IP:8080

এই উদাহরণে, পোর্ট ৮০৮০ ব্যবহার করার জন্য আপনি TLS অ্যাক্সেস কনফিগার করেন। তবে, পোর্ট ৮০৮০-এর প্রয়োজন নেই - আপনি অন্য পোর্ট ব্যবহার করার জন্য Stack কনফিগার করতে পারেন। একমাত্র প্রয়োজন হল, আপনার ফায়ারওয়াল নির্দিষ্ট পোর্টের মাধ্যমে ট্রাফিককে অনুমতি দেয়।

সিঙ্গেল পোর্টে Stack শুধুমাত্র এক ধরনের অনুরোধ (HTTP বা HTTPS) গ্রহণ করতে পারে। তাই, আপনি যদি পোর্ট ৮০৮০-এ HTTPS অ্যাক্সেস কনফিগার করেন, তাহলে পোর্ট ৮০৮০ অ্যাক্সেস করার জন্য HTTP ব্যবহার করতে পারবেন না। আপনি HTTPS-এর সাথে পোর্ট ৮৪৪৩ ব্যবহার করার জন্য Stack কনফিগার করলে, Stack আর পোর্ট ৮০৮০-এ লিসেন করবে না।

Stack-এ TLS অ্যাক্সেস কনফিগার করতে নিম্নলিখিত পদ্ধতি ব্যবহার করুন:

  1. আপনার TLS সার্টিফিকেট ও প্রাইভেট কী সহ keystore JKS ফাইল তৈরি করুন। আরও জানতে প্রিমিজে Edge On-এর জন্য TLS/SSL কনফিগার করাদেখুন।
    মনে রাখবেন: কীস্টোর ও কী-এর পাসওয়ার্ড একই কিনা তা নিশ্চিত করুন।
  2. Stack নোডের কোনও ডিরেক্টরিতে keystore JKS ফাইল কপি করুন, যেমন /opt/apigee/customer/application. 'apigee' ব্যবহারকারীর ডিরেক্টরি অ্যাক্সেস করতে হবে।
  3. JKS ফাইলের মালিকানা 'apigee' ব্যবহারকারীর কাছে পরিবর্তন করুন:
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    যেখানে keystore.jks হল আপনার কীস্টোর ফাইলের নাম।
  4. JKS ফাইলের পাথ এবং কীস্টোর ও কী-এর পাসওয়ার্ড সহ নিম্নলিখিত প্রপার্টি সেট করতে, /opt/apigee/customer/application/usergrid.properties ফাইল এডিট করুন। এই ফাইলটি না থাকলে, এটি তৈরি করুন:
    tomcat-server_scheme=https
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
    tomcat-server_keystore.password=password
    tomcat-server_keyalias=keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # By default, TLS access uses port 8080.
    # Use this property to specify a different port.
    # tomcat-server_port=8080


    সতর্কতা: পাসওয়ার্ড ভ্যালু স্পষ্ট টেক্সটে থাকতে হবে। তাই, অননুমোদিত অ্যাক্সেস থেকে আপনাকে usergrid.properties সুরক্ষিত রাখতে হবে।

    কিস্টোর অ্যালিয়াস নির্দিষ্ট করতে, tomcat-server_keyalias প্রপার্টি ব্যবহার করুন। আপনি কী তৈরি করার সময় কী অ্যালিয়াস সেট করেন। যেমন, আপনি keytool কমান্ডের -alias বিকল্প ব্যবহার করে এটি সেট করতে পারেন।

    Stack-এর সাথে কাজ করে এমন TLS প্রোটোকল সেট করতে tomcat-server_ssl.protocols ব্যবহার করুন। Java 8-এর সাথে কাজ করে এমন প্রোটোকলের তালিকা দেখতে, http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename দেখুন।
  5. Stack নোড কনফিগার করুন:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  6. BaaS স্ট্যাক রিস্টার্ট করুন:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  7. TLS কাজ করছে কিনা তা কনফার্ম করতে, Stack নোডে নিম্নলিখিত cURL কমান্ড রান করান: HTTPS:
    > curl -k https://localhost:8080/status -v

    TLS সঠিকভাবে কনফিগার করা থাকলে, আপনাকে স্ট্যাটাস সংক্রান্ত তথ্য সহ একটি উত্তর দেখানো হবে।

    আপনি যদি ৮০৮০ পোর্ট ছাড়া অন্য কোনও পোর্টের মাধ্যমে TLS অ্যাক্সেস কনফিগার করে থাকেন, তাহলে সঠিক পোর্ট ব্যবহার করতে উপরের কমান্ডটি পরিবর্তন করুন।
  8. সব Stack নোডে এটি আবার করুন।
  9. Stack নোডের আগে লোড ব্যালেন্সার থাকলে, HTTPS-এর মাধ্যমে Stack নোডে অনুরোধ করার জন্য লোড ব্যালেন্সার কনফিগার করুন। আরও তথ্যের জন্য আপনার লোড ব্যালেন্সারের ডকুমেন্টেশন দেখুন।

    যদি পোর্টাল Stack-এ সরাসরি অনুরোধ করে, তাহলে পোর্টালকে নিম্নলিখিত বিভাগে বর্ণিত HTTPS-এর মাধ্যমে Stack অ্যাক্সেস করার জন্য কনফিগার করুন।
  10. "Stack বা পোর্টালের TLS-এর জন্য API BaaS Stack নোড কনফিগার করুন" নিচে দেওয়া পদ্ধতি ব্যবহার করে নিশ্চিত করুন যে ব্যবহারকারীর উত্তর তৈরি করার সময় Stack নোডে সঠিক TLS URL আছে।

TLS-এর মাধ্যমে Stack অ্যাক্সেস করার জন্য Portal কনফিগার করা

ব্রাউজারে চলা BaaS পোর্টাল, BaaS স্ট্যাকে API কল করার মাধ্যমে কাজ করে। আপনি TLS ব্যবহার করার জন্য BaaS Stack কনফিগার করলে, আপনাকে অবশ্যই পোর্টাল কনফিগার করতে হবে যাতে সেইসব কল HTTPS-এর মাধ্যমে করা যায়।

API BaaS ইনস্টলেশন সাধারণত এগুলির মধ্যে কোনও একটিতে কনফিগার করা হয়:

  • পোর্টাল ও Stack নোডের মধ্যে লোড ব্যালেন্সার ব্যবহার করুন

    HTTPS-এর মাধ্যমে Stack নোডে অনুরোধ করার জন্য লোড ব্যালেন্সার কনফিগার করুন। আরও তথ্যের জন্য আপনার লোড ব্যালেন্সারের ডকুমেন্টেশন দেখুন।

    এই কনফিগারেশনে, আপনি কীভাবে লোড ব্যালেন্সার কনফিগার করেছেন তার উপর নির্ভর করে, পোর্টালটি HTTP বা HTTPS-এর মাধ্যমে লোড ব্যালেন্সার অ্যাক্সেস করতে পারে। লোড ব্যালেন্সার TLS ব্যবহার করলে, HTTPS-এর লোড ব্যালেন্সারের কাছে অনুরোধ করার জন্য পোর্টাল কনফিগার করতে, নিচে উল্লেখ করা পদ্ধতি ব্যবহার করুন।
  • পোর্টালকে Stack-এ সরাসরি অনুরোধ করতে দিন

    নিচে বর্ণনা করা পদ্ধতি অনুযায়ী HTTPS-এর মাধ্যমে Stack অ্যাক্সেস করার জন্য পোর্টাল কনফিগার করুন।

HTTPS-এর মাধ্যমে API কল করতে API BaaS পোর্টাল কনফিগার করতে নিম্নলিখিত পদ্ধতি ব্যবহার করুন:

  1. উপরে বর্ণিত BaaS স্ট্যাকে TLS অ্যাক্সেস কনফিগার করুন অথবা আপনার লোড ব্যালেন্সারের ডকুমেন্টেশনে বর্ণিত স্ট্যাক নোডের জন্য লোড ব্যালেন্সারে কনফিগার করুন।
  2. নিচের প্রপার্টি সেট করতে /opt/apigee/customer/application/portal.properties এডিট করুন। সেই ফাইলটি না থাকলে, এটি তৈরি করুন:
    baas.portal.config.overrideUrl=https://stackIP:port

    সিঙ্গেল নোড ইনস্টলেশনের জন্য, API Stack নোডের IP অ্যাড্রেস বা DNS নাম এবং পোর্টকে এই প্রপার্টির ভ্যালু হিসেবে নির্দিষ্ট করুন অথবা API BaaS Stack নোডের সামনে লোড ব্যালেন্সার থাকলে, লোড ব্যালেন্সারের জন্য নির্দিষ্ট করুন।
  3. পোর্টাল নোড কনফিগার করুন:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. এই কমান্ড ব্যবহার করে পোর্টাল রিস্টার্ট করুন:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  5. আপনি যদি উপরে TLS অ্যাক্সেস কনফিগার করার সময় স্ব-স্বাক্ষরিত সার্টিফিকেট ব্যবহার করে থাকেন, তাহলে আপনার ব্রাউজার হয়ত পোর্টাল থেকে Stack-এ অনুরোধ করার অনুমতি দেবে না। আপনি যদি দেখেন যে ব্রাউজারে একটি সমস্যা হয়েছে এবং Stack-এ HTTPS অ্যাক্সেস করার অনুমতি নেই, তাহলে আপনার ব্রাউজারে নিম্নলিখিত URL-এর জন্য অনুরোধ করুন এবং অ্যাক্সেস করার অনুমতি দিতে একটি নিরাপত্তা ব্যতিক্রম যোগ করুন:
    https://stackIP:port/status

    API Stack নোড বা লোড ব্যালেন্সারের IP অ্যাড্রেস বা DNS নাম এবং পোর্ট উল্লেখ করুন।

API BaaS পোর্টালে TLS কনফিগার করা

সাধারণত, ব্যবহারকারীরা পোর্টাল সার্ভারে পোর্ট ৯০০০-এর মাধ্যমে এনক্রিপ্ট না করা HTTP অনুরোধ করে পোর্টাল অ্যাক্সেস করেন। পোর্টাল থেকে পাঠানো ও পোর্টালে আসা ডেটা এনক্রিপ্ট করার জন্য আপনি HTTPS ব্যবহার করতে পোর্টাল কনফিগার করতে পারবেন।

সাধারণত, আপনি পোর্টাল নোডের IP অ্যাড্রেস বা DNS নাম এবং পোর্ট ৯০০০ ব্যবহার করে HTTP-এর মাধ্যমে পোর্টাল অ্যাক্সেস করেন। যেমন:

http://portal_IP:9000

বিকল্প হিসেবে, আপনি পোর্টালের TLS অ্যাক্সেস কনফিগার করতে পারেন যাতে আপনি এটি এই ফর্ম্যাটে অ্যাক্সেস করতে পারেন:

https://portal_IP:9443

এই উদাহরণে, পোর্ট ৯৪৪৩ ব্যবহার করার জন্য আপনি TLS অ্যাক্সেস কনফিগার করেন। তবে, পোর্ট ৯৪৪৩-এর প্রয়োজন নেই - আপনি অন্য পোর্ট ব্যবহার করার জন্য Portal কনফিগার করতে পারেন।

একটি পোর্টের মাধ্যমে পোর্টাল শুধুমাত্র এক ধরনের অনুরোধ (HTTP বা HTTPS) গ্রহণ করতে পারে। তাই, আপনি পোর্ট ৯০০০-এ HTTPS অ্যাক্সেস কনফিগার করলে, পোর্ট ৯০০০ অ্যাক্সেস করার জন্য HTTP ব্যবহার করতে পারবেন না। আপনি HTTPS-এর সাথে পোর্ট ৯৪৪৩ ব্যবহার করার জন্য পোর্টাল কনফিগার করলে, পোর্টাল আর পোর্ট ৯০০০-এ শুনবে না।

পোর্টালে TLS কনফিগার করতে:

  1. PEM ফর্ম্যাটে একটি কী ফাইল ও cert ফাইল তৈরি করুন।
    মনে রাখবেন: কী বা সার্টিফিকেটে কোনও পাসওয়ার্ড/পাসফ্রেজ নেই তা নিশ্চিত করুন।
  2. PEM ফাইলগুলি পোর্টাল নোডের কোনও ডিরেক্টরিতে কপি করুন, যেমন /opt/apigee/customer/application। 'apigee' ব্যবহারকারীর ডিরেক্টরি অ্যাক্সেস করতে হবে।
  3. 'apigee' ব্যবহারকারীর PEM ফাইলের মালিকানা পরিবর্তন করুন:
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. নিম্নলিখিত প্রপার্টি সেট করতে /opt/apigee/customer/application/portal.properties ফাইল এডিট করুন। ওই ফাইলটি না থাকলে, এটি তৈরি করুন:
    baas.portal.ssl=on
    baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # By default, TLS access uses port 9000.
    # Use this property to specify a different port.
    # baas.portal.listen=9000


    পোর্টাল দ্বারা কাজ করে এমন TLS প্রোটোকল সেট করতে, baas.portal.ssl.protocols ব্যবহার করুন। কাজ করে এমন প্রোটোকলের তালিকা পেতে, Nginx-এর দ্বারা সংজ্ঞায়িত SSL প্রোটোকলের নামের তালিকা দেখুন: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols.
  5. পোর্টাল নোড কনফিগার করুন:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  6. পোর্টাল রিস্টার্ট করুন:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  7. "Stack বা পোর্টালের জন্য TLS-এর API BaaS Stack নোড কনফিগার করুন" নিবন্ধে উল্লেখ করা পদ্ধতি ব্যবহার করে নিশ্চিত করুন যে Stack নোডে পোর্টালের জন্য সঠিক TLS URL আছে।

Stack বা Portal-এ TLS-এর জন্য API BaaS নোড কনফিগার করা

আপনি যদি Stack বা Portal নোডের সামনে কোনও লোড ব্যালেন্সার অন্তর্ভুক্ত করেন অথবা Portal বা Stack নোডে সরাসরি TLS চালু করেন, তাহলে Stack ও Portal অ্যাক্সেস করার জন্য আপনাকে সঠিক URL দিয়ে নোড কনফিগার করতে হবে। যেমন, Stack নোডের ক্ষেত্রে এইসব পরিস্থিতিতে এই তথ্য প্রয়োজন হয়:

  • BaaS API অনুরোধের উত্তরে URL যোগ করা।
  • পাসওয়ার্ড রিসেট করার সময় ইমেল টেমপ্লেটে লিঙ্ক যোগ করা অথবা অন্যান্য বিজ্ঞপ্তি পাঠানো।
  • ব্যবহারকারীদের নির্দিষ্ট পোর্টাল পৃষ্ঠায় রিডাইরেক্ট করা।

আপনি যদি Stack নোডের সামনে কোনও লোড ব্যালেন্সার ব্যবহার করেন বা Stack নোডে TLS কনফিগার করেন, তাহলে /opt/apigee/customer/application/usergrid.properties-এ নিম্নলিখিত প্রপার্টি সেট করুন:

usergrid-deployment_usergrid.api.url.base=http://localhost:8080

http://localhost:8080-এর জায়গায় লোড ব্যালেন্সারের URL লিখুন। TLS ব্যবহার করার জন্য লোড ব্যালেন্সার কনফিগার করা থাকলে, HTTPS প্রোটোকল ব্যবহার করুন। আপনি যদি কোনও নন-স্ট্যান্ডার্ড পোর্ট ব্যবহার করেন, শুধুমাত্র তখনই আপনাকে পোর্ট যোগ করতে হবে, অর্থাৎ HTTP-এর জন্য পোর্ট ৮০ এবং HTTPS-এর জন্য পোর্ট ৪৪৩ ছাড়া অন্য কিছু।

এছাড়াও, Stack নোডের সামনে লোড ব্যালেন্সার ব্যবহার করলে, আপনাকে /opt/apigee/customer/application/portal.properties ফাইলে নিম্নলিখিত প্রপার্টি সেট করতে হবে:

baas.portal.config.overrideUrl=http://localhost:8080

http://localhost:8080-এর জায়গায় Stack-এর জন্য লোড ব্যালেন্সারের URL লিখুন।

আপনি যদি পোর্টাল নোডের সামনে কোনও লোড ব্যালেন্সার ব্যবহার করেন বা স্ট্যাক নোডে TLS কনফিগার করেন, তাহলে usergrid.properties-এ নিম্নলিখিত প্রপার্টি সেট করুন:

usergrid-deployment_portal.url=http://localhost:9000

http://localhost:9000-এর জায়গায় লোড ব্যালেন্সারের URL বসিয়ে দিন। TLS ব্যবহার করার জন্য লোড ব্যালেন্সার কনফিগার করা থাকলে, HTTPS প্রোটোকল ব্যবহার করুন। আপনি স্ট্যান্ডার্ড নয় এমন পোর্ট ব্যবহার করলে তবেই পোর্ট অন্তর্ভুক্ত করতে হবে, অর্থাৎ HTTP-এর জন্য পোর্ট ৮০ এবং HTTPS-এর জন্য পোর্ট ৪৪৩-এর পরিবর্তে অন্য কিছু।

usergrid.properties এডিট করার পরে:

  1. Stack নোড কনফিগার করুন:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. BaaS স্ট্যাক রিস্টার্ট করুন:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  3. আপনি portal.properties পরিবর্তন করে থাকলে, পোর্টাল নোড কনফিগার করুন:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. BaaS পোর্টাল রিস্টার্ট করুন:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart