এই গাইডে দেখানো হয়েছে Heroku-তে কীভাবে একটি SSL সার্টিফিকেট ইনস্টল করবেন। এতে Heroku আজ যে দুটি পদ্ধতিতে TLS টার্মিনেট করে, তার উভয়টিই কভার করা হয়েছে: Automated Certificate Management (ACM), যা আপনার জন্য ফ্রি Let’s Encrypt সার্টিফিকেট প্রোভিশন এবং রিনিউ করে, এবং ড্যাশবোর্ড বা Heroku CLI-এর মাধ্যমে থার্ড-পার্টি সার্টিফিকেটের ম্যানুয়াল আপলোড।
শুরু করার আগে কিছু বিষয় জেনে নেওয়া প্রয়োজন। Heroku-এর পুরাতন SSL Endpoint অ্যাড-অন (পেইড $20/মাসের প্রোডাক্ট) ২০২১ সালে বন্ধ করে দেওয়া হয়েছে এবং নতুন অ্যাপগুলিতে আর প্রোভিশন করা যায় না। প্রতিটি নতুন HTTPS ডিপ্লয়মেন্ট Heroku SSL ব্যবহার করে, যা SNI (Server Name Indication) এক্সটেনশনের উপর নির্ভর করে এবং প্রতিটি পেইড ডাইনো টিয়ারে বিনামূল্যে অন্তর্ভুক্ত থাকে। ফ্রি ডাইনো ২৮ নভেম্বর, ২০২২ তারিখে বাতিল করা হয়েছিল, তাই কাস্টম ডোমেইন সংযুক্ত করে HTTPS পরিবেশন করার জন্য আপনার একটি Eco, Basic, Standard, বা Performance প্ল্যান প্রয়োজন।
CSR তৈরি করুন (ম্যানুয়ালি আপলোড করা সার্টিফিকেটের জন্য)
আপনি যদি ইতিমধ্যে আপনার CSR তৈরি করে থাকেন এবং আপনার সার্টিফিকেট অথরিটি থেকে ইস্যু করা সার্টিফিকেট পেয়ে থাকেন, তাহলে সরাসরি Heroku-তে একটি SSL সার্টিফিকেট ইনস্টল করুন বিভাগে চলে যান।
আপনার কেবল তখনই CSR প্রয়োজন হবে যদি আপনি ম্যানুয়ালি আপলোড করার জন্য একটি থার্ড-পার্টি সার্টিফিকেট কিনছেন। আপনি যদি ACM ব্যবহার করার পরিকল্পনা করেন, তাহলে এই বিভাগটি সম্পূর্ণভাবে এড়িয়ে যেতে পারেন: ACM আপনার জন্য সার্টিফিকেট ইস্যু করে এবং জমা দেওয়ার মতো কোনো CSR থাকে না।
একটি CSR (Certificate Signing Request) হলো একটি টেক্সট ব্লক যা আপনি অর্ডার করার সময় সার্টিফিকেট অথরিটির কাছে জমা দেন। এতে আপনার ডোমেইন ও প্রতিষ্ঠানের বিবরণ এবং যে পাবলিক কী-এর ভিত্তিতে সার্টিফিকেট ইস্যু করা হবে তা থাকে। Heroku প্ল্যাটফর্মেই CSR তৈরি করে না, তাই আপনাকে প্ল্যাটফর্মের বাইরে গিয়ে রিকোয়েস্ট তৈরি করতে হবে। আপনার কাছে দুটি বিকল্প রয়েছে:
- SSL Dragon-এর CSR Generator ব্যবহার করুন, যা একটি সংক্ষিপ্ত ফর্ম থেকে CSR এবং তার সাথে মিলিত প্রাইভেট কী তৈরি করে।
- আমাদের টিউটোরিয়াল অনুসরণ করে OpenSSL দিয়ে স্থানীয়ভাবে রিকোয়েস্ট তৈরি করুন: Heroku-এর জন্য CSR কীভাবে তৈরি করবেন।
প্রাপ্ত .csr ফাইলটি কোনো টেক্সট এডিটরে খুলুন এবং —–BEGIN CERTIFICATE REQUEST—– এবং —–END CERTIFICATE REQUEST—– চিহ্নসহ সম্পূর্ণ ব্লকটি কপি করুন, তারপর আপনার SSL Dragon অর্ডারের সময় এটি পেস্ট করুন। CA দ্বারা যাচাই এবং সার্টিফিকেট ইস্যু হওয়া পর্যন্ত অপেক্ষা করুন (DV-এর জন্য কয়েক মিনিট থেকে OV/EV-এর জন্য কয়েক কার্যদিবস সময় লাগতে পারে) এবং নিচের ইনস্টলেশন পদক্ষেপে এগিয়ে যান।
Heroku-তে একটি SSL সার্টিফিকেট ইনস্টল করুন
Heroku আপনাকে HTTPS-এর জন্য দুটি পথ প্রদান করে। আপনি যে পদ্ধতিতে সার্টিফিকেট পেয়েছেন তার সাথে মিল রেখে একটি বেছে নিন:
- ACM (অধিকাংশ অ্যাপের জন্য সুপারিশকৃত)। Heroku অ্যাপের প্রতিটি কাস্টম ডোমেইনের জন্য একটি ফ্রি Let’s Encrypt সার্টিফিকেট ইস্যু, ইনস্টল এবং স্বয়ংক্রিয়ভাবে রিনিউ করে। কোনো ফাইল আপলোড করার প্রয়োজন নেই, রিনিউয়াল ক্যালেন্ডারও প্রয়োজন নেই। Eco, Basic, Standard এবং Performance ডাইনোতে উপলব্ধ।
- ম্যানুয়াল আপলোড। আপনার যখন কোনো নির্দিষ্ট থার্ড-পার্টি সার্টিফিকেট (যেমন, Organization Validated বা Extended Validation প্রোডাক্ট, অথবা Let’s Encrypt নয় এমন কোনো CA-এর ওয়াইল্डকার্ড) প্রয়োজন হয়, তখন এটি ব্যবহার করুন। আপনি নিজেই ড্যাশবোর্ড বা CLI-এর মাধ্যমে সার্টিফিকেট এবং প্রাইভেট কী আপলোড করেন।
পদক্ষেপ ১। আপনার কাস্টম ডোমেইন অ্যাপে যুক্ত করুন
আপনার কাস্টম ডোমেইন অ্যাপের সাথে নিবন্ধিত না হওয়া পর্যন্ত Heroku কোনো সার্টিফিকেট (ACM বা ম্যানুয়াল) প্রোভিশন করবে না। একটি এলিভেটেড টার্মিনাল থেকে চালান:
heroku domains:add www.example.com -a your-app-name
www.example.com-এর জায়গায় আপনার ডোমেইন এবং your-app-name-এর জায়গায় আপনার Heroku অ্যাপের নাম দিন। অতিরিক্ত কোনো হোস্টনেমের (যেমন একটি বেয়ার রুট ডোমেইন বা একটি দ্বিতীয় সাবডোমেইন) জন্য কমান্ডটি পুনরাবৃত্তি করুন। আপনি ড্যাশবোর্ড থেকেও Settings > Domains and certificates > Add domain-এ গিয়ে ডোমেইন যুক্ত করতে পারেন।
আপনি যে প্রতিটি ডোমেইন যুক্ত করবেন, তার সাথে একটি অনন্য DNS টার্গেট ফিরে আসবে, যেমন quiet-fire-1234.herokudns.com। পদক্ষেপ ৩-এ DNS আপডেট করার সময় এই মানটি আপনার প্রয়োজন হবে।
পদক্ষেপ ২। সার্টিফিকেট প্রোভিশন করুন
বিকল্প A: ACM (ফ্রি, স্বয়ংক্রিয়ভাবে রিনিউ হওয়া Let’s Encrypt)
CLI থেকে অ্যাপের জন্য ACM সক্রিয় করুন:
heroku certs:auto:enable -a your-app-name
Heroku অ্যাপের প্রতিটি কাস্টম ডোমেইনের জন্য একটি Let’s Encrypt সার্টিফিকেট ইস্যু করা শুরু করে। অগ্রগতি দেখতে এবং স্ট্যাটাস নিশ্চিত করতে, চালান:
heroku certs:auto -a your-app-name
আপনি ড্যাশবোর্ড থেকেও ACM সক্রিয় করতে পারেন: অ্যাপটি খুলুন, Settings > Domains and certificates-এ যান, Configure SSL-এ ক্লিক করুন, Automated Certificate Management নির্বাচন করুন, তারপর Continue-এ ক্লিক করুন। DNS ঠিকমতো সেট হয়ে গেলে (পদক্ষেপ ৩), ACM ডোমেইন যাচাই সম্পূর্ণ করে এবং সার্টিফিকেট লাইভ হয়ে যায়। মেয়াদ শেষ হওয়ার প্রায় এক মাস আগে স্বয়ংক্রিয়ভাবে রিনিউয়াল হয়ে যায়।
বিকল্প B: থার্ড-পার্টি সার্টিফিকেটের ম্যানুয়াল আপলোড
CA আপনার ইনবক্সে তিনটি ফাইল সরবরাহ করে:
- এন্ড-এনটিটি সার্টিফিকেট, সাধারণত .crt এক্সটেনশনসহ (PEM ফরম্যাটে)।
- CA বান্ডল (ইন্টারমেডিয়েট সার্টিফিকেটসমূহ), সাধারণত .ca-bundle এক্সটেনশনসহ।
- CSR-এর সাথে তৈরি হওয়া প্রাইভেট কী (একটি .key ফাইল)।
Heroku এমন একটি একক PEM ফাইল প্রত্যাশা করে যাতে এন্ড-এনটিটি সার্টিফিকেটের পরে ইন্টারমেডিয়েটগুলো (একটি ফুলচেইন) থাকে। Linux বা macOS-এ, cat দিয়ে সেগুলো যুক্ত করুন:
cat yourcertificate.crt bundle.ca-bundle > server.crt
Windows-এ, উভয় ফাইল একটি সাধারণ টেক্সট এডিটরে (Notepad++ বা VS Code, Word নয়) খুলুন এবং .crt-এর কন্টেন্টের নিচে সেই একই ক্রমে .ca-bundle-এর কন্টেন্ট পেস্ট করুন, ব্লকগুলোর মধ্যে কোনো ফাঁকা লাইন না রেখে। একত্রিত ফাইলটি server.crt নামে সংরক্ষণ করুন।
Heroku CLI দিয়ে ফুলচেইন এবং প্রাইভেট কী আপলোড করুন:
heroku certs:add server.crt server.key -a your-app-name
আপনি যদি অ্যাপে বিদ্যমান কোনো সার্টিফিকেট প্রতিস্থাপন করছেন (যেমন, রিনিউয়ালের সময়), তবে certs:add-এর পরিবর্তে certs:update ব্যবহার করুন যাতে Heroku একই DNS টার্গেট বজায় রাখে:
heroku certs:update server.crt server.key -a your-app-name
ড্যাশবোর্ড ব্যবহার করতে চান? অ্যাপটি খুলুন, Settings > Domains and certificates-এ যান, Configure SSL-এ ক্লিক করুন, Manually নির্বাচন করুন, তারপর একত্রিত server.crt-কে সার্টিফিকেট স্লটে এবং .key ফাইলটিকে প্রাইভেট-কী স্লটে ড্র্যাগ করুন। Next-এ ক্লিক করে নিশ্চিত করুন।
আপলোড করার সময় যদি আপনি একটি Internal server error দেখেন, তাহলে সম্ভবত আপনার স্থানীয় Heroku CLI পুরনো হয়ে গেছে। heroku update দিয়ে এটি আপডেট করুন এবং আবার চেষ্টা করুন। Heroku-এর জন্য RSA কী প্রয়োজন; ECDSA কী বর্তমানে ম্যানুয়াল আপলোডের জন্য সমর্থিত নয়।
পদক্ষেপ ৩। DNS-কে Heroku DNS টার্গেটের দিকে পরিচালিত করুন
প্রোভিশনিং পদ্ধতি যাই হোক না কেন, কাস্টম ডোমেইনের DNS Heroku-এর দিকে রিজলভ হলেই সার্টিফিকেট লাইভ হয়। আপনার ডোমেইনগুলো লিস্ট করুন এবং Heroku যে DNS টার্গেট ফিরিয়ে দিয়েছে তা কপি করুন:
heroku domains -a your-app-name
প্রতিটি ডোমেইনের পাশে আপনি quiet-fire-1234.herokudns.com-এর মতো একটি মান দেখতে পাবেন। আপনার DNS প্রদানকারীর কাছে, প্রতিটি ডোমেইনের জন্য একটি রেকর্ড তৈরি করুন:
- সাবডোমেইন (যেমন www.example.com): Heroku DNS টার্গেটের দিকে নির্দেশ করে একটি CNAME রেকর্ড তৈরি করুন।
- Apex / রুট ডোমেইন (যেমন example.com): DNS স্পেসিফিকেশন অনুযায়ী apex-এ CNAME অনুমোদিত নয়, তাই সেই একই Heroku DNS টার্গেটের দিকে নির্দেশ করে একটি ALIAS, ANAME, বা ফ্ল্যাটেনড-CNAME রেকর্ড (নির্দিষ্ট নামটি আপনার DNS প্রদানকারীর উপর নির্ভর করে) ব্যবহার করুন। আপনার DNS প্রদানকারী এসবের কোনোটিই সমর্থন না করলে, এমন কোনো প্রদানকারীর কাছে DNS হোস্ট করুন যা এটি সমর্থন করে (Cloudflare, DNSimple, Route 53, NS1, easyDNS, ইত্যাদি)।
DNS-কে your-app-name.herokuapp.com বা কোনো *.herokussl.com হোস্টনেমের দিকে পরিচালিত করবেন না: ACM এর মাধ্যমে সার্টিফিকেট যাচাই করতে পারবে না, এবং একটি ম্যানুয়াল বাইন্ডিংও সঠিকভাবে রুট করবে না। সর্বদা Heroku দ্বারা নির্ধারিত প্রতি-ডোমেইন DNS টার্গেট ব্যবহার করুন।
DNS পরিবর্তন প্রচারিত হতে কয়েক মিনিট থেকে কয়েক ঘণ্টা সময় লাগতে পারে। Heroku আপডেট হওয়া রেকর্ড দেখতে পাওয়ার সাথে সাথে ACM স্বয়ংক্রিয়ভাবে যাচাই সম্পূর্ণ করে (বা আপনার ম্যানুয়াল সার্টিফিকেট ট্র্যাফিক পরিবেশন করা শুরু করে)।
পদক্ষেপ ৪। সার্টিফিকেট লাইভ কিনা যাচাই করুন
CLI থেকে ইনস্টলেশন নিশ্চিত করুন:
heroku certs:info -a your-app-name
আউটপুটে সার্টিফিকেট, ইস্যুকারী CA, মেয়াদ শেষ হওয়ার তারিখ এবং এটি যে ডোমেইনগুলো কভার করে তা তালিকাভুক্ত থাকে। তারপর ব্রাউজারে আপনার সাইট https://-এর মাধ্যমে খুলুন এবং প্যাডলক আছে কিনা যাচাই করুন, এবং সার্টিফিকেট চেইন সম্পূর্ণ কিনা ও প্রোটোকলগুলো সঠিকভাবে কনফিগার করা আছে কিনা তা নিশ্চিত করতে আমাদের SSL Checker দিয়ে একটি গভীর বাহ্যিক স্ক্যান চালান।
সচরাচর জিজ্ঞাসিত প্রশ্নাবলী
না। পুরাতন SSL Endpoint অ্যাড-অনটি ২০২১ সালে বন্ধ করে দেওয়া হয়েছে (নতুন প্রোভিশনিং ১৪ মে, ২০২১ তারিখে বন্ধ হয়েছে) এবং সেই বছরের পরেই এর সেবাজীবন শেষ হয়ে যায়। প্রতিটি নতুন অ্যাপ SNI সহ Heroku SSL ব্যবহার করে, যা প্রতিটি পেইড ডাইনো টিয়ারে বিনামূল্যে অন্তর্ভুক্ত থাকে। দীর্ঘদিন চলমান অ্যাপগুলোতে বিদ্যমান SSL Endpoint কাজ করে চলবে, তবে Heroku এগুলোকে Heroku SSL-এ মাইগ্রেট করার পরামর্শ দেয়।
নির্দিষ্ট কোনো কারণ না থাকলে ACM ব্যবহার করুন। এটি বিনামূল্যে, মেয়াদ শেষ হওয়ার প্রায় এক মাস আগে প্রতিটি সার্টিফিকেট স্বয়ংক্রিয়ভাবে রিনিউ করে এবং আপনার টিমের রিনিউয়াল ক্যালেন্ডারের ঝামেলা দূর করে। ম্যানুয়াল আপলোড তখনই নির্বাচন করুন যখন আপনার একটি নির্দিষ্ট CA থেকে Domain Validated, Organization Validated, বা Extended Validation সার্টিফিকেট, একটি ওয়াইল্ডকার্ড সার্টিফিকেট, বা একাধিক ডোমেইন (SAN) সার্টিফিকেট প্রয়োজন হয় যা সব হোস্টনেম এই Heroku অ্যাপে নেই।
না। ফ্রি ডাইনো ২৮ নভেম্বর, ২০২২ তারিখে বাতিল করা হয়েছে। কাস্টম ডোমেইন এবং SSL (ACM ও ম্যানুয়াল উভয়) এর জন্য একটি পেইড প্ল্যান প্রয়োজন: Eco, Basic, Standard, বা Performance। নভেম্বর ২০২৫ পর্যন্ত, ACM এবং ম্যানুয়াল সার্টিফিকেট উভয়ই Eco ডাইনোতে সমর্থিত, যা কাস্টম ডোমেইনে HTTPS পাওয়ার সবচেয়ে কম খরচের পথ।
দুটি সাধারণ কারণ। প্রথমত, DNS এখনও Heroku দ্বারা নির্ধারিত প্রতি-ডোমেইন DNS টার্গেটের (যেমন quiet-fire-1234.herokudns.com) পরিবর্তে *.herokuapp.com-এর দিকে নির্দেশ করছে। আপনার DNS প্রদানকারীর কাছে রেকর্ডটি পুনরায় পরীক্ষা করে আপডেট করুন। দ্বিতীয়ত, DNS পরিবর্তন হয়েছে তবে প্রচার এখনও সম্পূর্ণ হয়নি; কয়েক মিনিট থেকে কয়েক ঘণ্টা অপেক্ষা করুন, তারপর নিশ্চিত করার জন্য heroku certs:info -a your-app-name চালান।
ACM-এর সাথে, আপনার কিছু করার প্রয়োজন নেই: Heroku মেয়াদ শেষ হওয়ার প্রায় এক মাস আগে Let’s Encrypt থেকে স্বয়ংক্রিয়ভাবে সার্টিফিকেট পুনরায় ইস্যু করে। ম্যানুয়াল সার্টিফিকেটের ক্ষেত্রে, রিনিউয়ালের অর্ডার দিন (নতুন CSR তৈরি করে), একটি নতুন ফুলচেইন ফাইল তৈরি করুন এবং heroku certs:update server.crt server.key -a your-app-name চালান। certs:add-এর পরিবর্তে certs:update ব্যবহার করলে বিদ্যমান DNS টার্গেট সংরক্ষিত থাকে, ফলে আপনাকে আবার DNS নিয়ে কিছু করতে হয় না। বর্তমানে পাবলিক SSL/TLS সার্টিফিকেটের মেয়াদ প্রায় এক বছর পর্যন্ত সীমিত, তাই আপনি যদি ম্যানুয়াল আপলোডেই থাকেন, তবে বছরে একবার এই প্রক্রিয়াটি পুনরাবৃত্তি করার পরিকল্পনা করুন, অথবা ACM-এ পরিবর্তন করে Heroku-কে এটি পরিচালনা করতে দিন।
প্রায় সবসময়ই এটি একটি পুরনো Heroku CLI-এর কারণে হয়। সর্বশেষ সংস্করণে আপগ্রেড করতে heroku update চালান, তারপর কমান্ডটি আবার চালান। সমস্যা থেকেই গেলে, নিশ্চিত করুন যে সার্টিফিকেট ফাইলটি PEM ফরম্যাটে একটি ফুলচেইন (এন্ড-এনটিটি প্রথমে, তারপর ইন্টারমেডিয়েটগুলো) এবং প্রাইভেট কী-টি আপনি CA-এর কাছে জমা দেওয়া CSR-এর সাথে মিলিত একটি RSA কী।
আজ অর্ডার করার সময় SSL শংসাপত্রে 10% সংরক্ষণ করুন!
দ্রুত ইস্যু, শক্তিশালী এনক্রিপশন, 99.99% ব্রাউজার বিশ্বাস, নিবেদিত সমর্থন, এবং 25 দিনের অর্থ ফেরত গ্যারান্টি। কুপন কোড: SAVE10


