এই টিউটোরিয়ালে, আপনি শিখবেন কীভাবে Apache Tomcat-এ একটি SSL সার্টিফিকেট ইনস্টল করবেন জাভা keytool ইউটিলিটি ব্যবহার করে, তারপর server.xml-এ HTTPS কানেক্টর কনফিগার করবেন। আপনি যদি এখনো আপনার CSR তৈরি না করে থাকেন, প্রথম বিভাগে তা কীভাবে করবেন দেখানো হয়েছে।
আমরা একটি ভিডিও-ও তৈরি করেছি যা পুরো প্রক্রিয়াটি ধাপে ধাপে দেখায়। আপনি ভিডিও দেখতে পারেন, নির্দেশাবলী পড়তে পারেন, অথবা দুটোই করতে পারেন। নিচে ভিডিওটি দেখুন।
Tomcat-এর জন্য একটি CSR কোড তৈরি করুন
CSR মানে Certificate Signing Request, যা আপনার ডোমেইন এবং প্রতিষ্ঠান সম্পর্কে বর্তমান বিবরণ সম্বলিত একটি টেক্সট ব্লক। একটি কমার্শিয়াল SSL সার্টিফিকেটের প্রতিটি ক্রেতাকে ভ্যালিডেশন পাস করতে এবং সার্টিফিকেট পেতে অবশ্যই একটি CSR সার্টিফিকেট অথরিটির (SSL প্রোভাইডার) কাছে জমা দিতে হবে। যদি CSR-এ ভুল বিবরণ থাকে, তাহলে CA তা সাইন করবে না।
Tomcat-এ, CSR একটি জাভা কীস্টোর থেকে keytool দিয়ে তৈরি করা হয়, এবং সেই একই কীস্টোরে প্রাইভেট কী থাকে যা আপনি ইনস্টলেশনের সময় পুনরায় ব্যবহার করবেন। আপনার কাছে দুটি বিকল্প রয়েছে:
- CSR স্বয়ংক্রিয়ভাবে তৈরি করতে আমাদের CSR Generator ব্যবহার করুন।
- Tomcat-এ কীভাবে CSR তৈরি করবেন সে সম্পর্কে আমাদের ধাপে ধাপে টিউটোরিয়াল অনুসরণ করুন।
গুরুত্বপূর্ণ: CSR তৈরি করার সময় আপনি যে কীস্টোর ফাইল এবং এলিয়াস ব্যবহার করেছিলেন তার হিসাব রাখুন। পরে আপনি ঠিক সেই এলিয়াসেই আপনার সাইন করা সার্টিফিকেট আমদানি করবেন, কারণ সেখানেই ম্যাচিং প্রাইভেট কী থাকে।
সার্টিফিকেট অথরিটি আপনার অনুরোধ যাচাই করে SSL ফাইলগুলো পাঠানোর পর, নিচের ইনস্টলেশন প্রক্রিয়া চালিয়ে যান।
Tomcat-এ একটি SSL সার্টিফিকেট ইনস্টল করুন
একটি Tomcat ইনস্টলেশনের দুটি ধাপ রয়েছে: প্রথমে আপনি সার্টিফিকেট চেইন এবং আপনার সাইন করা সার্টিফিকেট আগে থেকেই আপনার প্রাইভেট কী থাকা কীস্টোরে আমদানি করেন, তারপর আপনি সেই কীস্টোর ব্যবহার করতে server.xml-এ HTTPS কানেক্টর কনফিগার করেন।
ধাপ ১: আপনার SSL সার্টিফিকেট ফাইলগুলো প্রস্তুত করুন
আপনার সার্টিফিকেট অথরিটি আপনার দেওয়া ঠিকানায় ফাইলগুলো ইমেইল করে, সাধারণত একটি ZIP আর্কাইভ হিসেবে। এটি এক্সট্র্যাক্ট করুন। CA-র উপর নির্ভর করে, ফাইলগুলো নিম্নলিখিত দুটি ফরম্যাটের যেকোনো একটিতে আসে:
- PKCS#7: একটি একক .p7b (বা .cer) ফাইল যাতে আপনার সার্টিফিকেট রুট এবং ইন্টারমিডিয়েট সার্টিফিকেটের সাথে একত্রে বান্ডল করা থাকে।
- PEM: আলাদা ফাইল, সাধারণত আপনার সার্ভার সার্টিফিকেটের জন্য একটি .crt এবং পৃথক root.crt এবং intermediate.crt ফাইল।
এক্সট্র্যাক্ট করা ফাইলগুলো সার্ভারে আপলোড করুন, ঠিক সেই ডিরেক্টরিতে যেখানে আপনি CSR তৈরি করেছিলেন সেই কীস্টোর রয়েছে (নিচে যাকে example.jks হিসেবে উল্লেখ করা হয়েছে)। আপনার ফরম্যাট চিহ্নিত করুন এবং সংশ্লিষ্ট নির্দেশাবলী অনুসরণ করুন।
অন্য কোথাও CSR তৈরি করেছেন, তাই আপনার প্রাইভেট কী example.jks-এ একটি এন্ট্রি না হয়ে আলাদা একটি ফাইল? keytool এড়িয়ে যান: সার্টিফিকেট, চেইন এবং কী একটি .p12-এ বান্ডল করতে PEM থেকে PKCS#12-এ রূপান্তর করুন, তারপর ধাপ ৩-এ certificateKeystoreType=”PKCS12″ দিয়ে সেই ফাইলটি রেফারেন্স করুন।
ধাপ ২: আপনার কীস্টোরে সার্টিফিকেট আমদানি করুন
PKCS#7 ফরম্যাট। যেহেতু একটি .p7b ফাইলে ইতিমধ্যে সম্পূর্ণ চেইন থাকে, একটি একক কমান্ড আপনার বিদ্যমান প্রাইভেট-কী এলিয়াসে একসাথে সবকিছু আমদানি করে:
keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.p7b
ssldragon এর জায়গায় আপনার নিজের এলিয়াস এবং example এর জায়গায় আপনার ফাইলের নাম বসান। এলিয়াসটি অবশ্যই সেটি হতে হবে যেখানে ইতিমধ্যে আপনার প্রাইভেট কী রয়েছে (CSR ধাপের এলিয়াস)। যখন আপনি Certificate reply was installed in keystore বার্তাটি দেখবেন, আমদানি সফল হয়েছে। কীস্টোরের বিষয়বস্তু যাচাই করুন এভাবে:
keytool -list -v -keystore example.jks
এমন একটি এন্ট্রি খুঁজুন যার টাইপ PrivateKeyEntry এবং যার সার্টিফিকেট চেইনের দৈর্ঘ্য ১-এর বেশি। এটি নিশ্চিত করে যে সাইন করা সার্টিফিকেট এখন আপনার প্রাইভেট কীর সাথে সংযুক্ত হয়েছে।
PEM ফরম্যাট। সার্টিফিকেটগুলো আলাদাভাবে, চেইন ক্রম অনুসারে আমদানি করুন: প্রথমে রুট, তারপর যেকোনো ইন্টারমিডিয়েট, এবং সবশেষে আপনার ডোমেইন সার্টিফিকেট। প্রথমে চেইন আমদানি করলে keytool আপনার কীতে রিপ্লাই সংযুক্ত করার আগে একটি সম্পূর্ণ ট্রাস্ট পাথ তৈরি করতে পারে। রুট সার্টিফিকেট আমদানি করুন:
keytool -import -trustcacerts -alias root -keystore example.jks -file root.crt
তারপর ইন্টারমিডিয়েট সার্টিফিকেট আমদানি করুন:
keytool -import -trustcacerts -alias intermediate -keystore example.jks -file intermediate.crt
আপনার CA যদি একাধিক ইন্টারমিডিয়েট সার্টিফিকেট সরবরাহ করে, তাহলে সেগুলো একে অপরকে সাইন করার ক্রম অনুসরণ করে (রুট থেকে আপনার ডোমেইন সার্টিফিকেটের দিকে) প্রতিটি নিজস্ব ট্রাস্টেড এলিয়াসের অধীনে আমদানি করুন। উদাহরণস্বরূপ, একটি Sectigo Sectigo PositiveSSL সার্টিফিকেট একাধিক ইন্টারমিডিয়েটসহ আসে, তাই ডোমেইন সার্টিফিকেটের আগে সেগুলো ক্রমানুসারে আমদানি করুন।
শেষে, আপনার প্রাথমিক সার্টিফিকেট (আপনার ডোমেইনের জন্য ইস্যু করা সার্টিফিকেট) বিদ্যমান প্রাইভেট-কী এলিয়াসে আমদানি করুন, ঠিক সেই এলিয়াস যা আপনি CSR তৈরির সময় ব্যবহার করেছিলেন:
keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.crt
এখানে, ssldragon অবশ্যই আপনার বিদ্যমান প্রাইভেট-কী এলিয়াস হতে হবে। যেহেতু সেই এলিয়াসে ইতিমধ্যে একটি কী রয়েছে, keytool এই আমদানিটিকে একটি সার্টিফিকেট রিপ্লাই হিসেবে বিবেচনা করে এবং সাইন করা সার্টিফিকেটটি কীর সাথে সংযুক্ত করে। এই ধাপটিই HTTPS কাজ করার মূল কারণ।
গুরুত্বপূর্ণ সতর্কতা: সাইন করা সার্টিফিকেটটি একেবারে নতুন কোনো এলিয়াসের অধীনে আমদানি করবেন না। যদি এলিয়াসে কোনো বিদ্যমান প্রাইভেট কী না থাকে, keytool সার্টিফিকেটটিকে কোনো কী সংযুক্ত না করেই একটি স্বতন্ত্র ট্রাস্টেড এন্ট্রি হিসেবে সংরক্ষণ করবে, এবং TLS ব্যর্থ হবে। আপনি যদি নিশ্চিত না হন কোন এলিয়াসে আপনার কী রয়েছে, তাহলে keytool -list -v -keystore example.jks চালান এবং যে এলিয়াসের টাইপ PrivateKeyEntry সেটি ব্যবহার করুন।
ধাপ ৩: server.xml-এ HTTPS কানেক্টর কনফিগার করুন
সার্টিফিকেট আপনার কীস্টোরে থাকা অবস্থায়, Tomcat-এর HTTPS কানেক্টরকে সেটির দিকে নির্দেশ করুন। কানেক্টরটি server.xml-এ সংজ্ঞায়িত থাকে, যা আপনার Tomcat ইনস্টলেশনের conf ফোল্ডারে অবস্থিত (উদাহরণস্বরূপ $CATALINA_HOME/conf/server.xml)। একটি টেক্সট এডিটরে ফাইলটি খুলুন।
বর্তমান Tomcat সংস্করণগুলোতে (৯, ১০, এবং ১১), প্রস্তাবিত রূপে একটি SSLHostConfig এলিমেন্ট নেস্ট করা থাকে, যার মধ্যে একটি Certificate এলিমেন্ট থাকে যা আপনার কীস্টোরকে রেফারেন্স করে। নিরাপদ কানেক্টরটি এভাবে যোগ করুন বা আপডেট করুন:
<Connector
port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true">
<SSLHostConfig>
<Certificate
certificateKeystoreFile="/your_path/example.jks"
certificateKeystorePassword="your_keystore_password"
certificateKeystoreType="JKS"
certificateKeyAlias="ssldragon"
type="RSA" />
</SSLHostConfig>
</Connector>
- certificateKeystoreFile: আপনার কীস্টোর ফাইলের সম্পূর্ণ পাথ।
- certificateKeystorePassword: কীস্টোর পাসওয়ার্ড।
- certificateKeystoreType: একটি .jks কীস্টোরের জন্য JKS, অথবা একটি .p12 / .pfx কীস্টোরের জন্য PKCS12।
- certificateKeyAlias: যে এলিয়াসে আপনার প্রাইভেট কী এবং সাইন করা সার্টিফিকেট রয়েছে (এখানে, ssldragon)। এটি Tomcat-কে জানায় কীস্টোরে একাধিক এন্ট্রি থাকলে কোনটি ব্যবহার করতে হবে।
নোট: উপরে ব্যবহৃত পোর্ট 443 হলো স্ট্যান্ডার্ড HTTPS পোর্ট; Tomcat-এর নিজস্ব উদাহরণগুলো ডিফল্টভাবে 8443 ব্যবহার করে, তাই আপনার পরিবেশ যেটি প্রত্যাশা করে সেটি ব্যবহার করুন। এটি যদি আপনার প্রথম HTTPS সেটআপ হয়, তাহলে server.xml-এ নিরাপদ কানেক্টরটি কমেন্ট করা থাকতে পারে। কানেক্টরটি সক্রিয় করতে চারপাশের কমেন্ট মার্কার সরিয়ে ফেলুন, এবং নিশ্চিত করুন যে অন্য কোনো কানেক্টর একই পোর্টে ইতিমধ্যে বাঁধা নেই।
পুরনো রূপ (পুরনো Tomcat)। পুরনো গাইডগুলোতে কীস্টোরের বিবরণ সরাসরি কানেক্টরে keystoreFile এবং keystorePass অ্যাট্রিবিউট হিসেবে দেওয়া থাকে। সেই শৈলীটি উপরে দেখানো SSLHostConfig এবং Certificate এলিমেন্ট দ্বারা প্রতিস্থাপিত হয়েছে, যা সমর্থিত Tomcat রিলিজগুলোতে ব্যবহার করার রূপ।
ধাপ ৪: server.xml সংরক্ষণ করুন এবং Tomcat পুনরায় চালু করুন
server.xml সংরক্ষণ করুন, তারপর Tomcat পুনরায় চালু করুন যাতে এটি কনফিগারেশন পুনরায় লোড করে। Linux-এ, বান্ডিল করা স্ক্রিপ্টগুলো ব্যবহার করুন:
$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh
যদি Tomcat একটি সার্ভিস হিসেবে চলে, তাহলে এর পরিবর্তে আপনার সার্ভিস ম্যানেজারের মাধ্যমে এটি পুনরায় চালু করুন (উদাহরণস্বরূপ Linux-এ systemctl restart tomcat, অথবা Windows-এ Services প্যানেল)। অভিনন্দন, আপনার SSL সার্টিফিকেট এখন আপনার Tomcat সার্ভারে ইনস্টল করা হয়েছে।
আপনার Tomcat SSL ইনস্টলেশন পরীক্ষা করুন
সার্টিফিকেট ইনস্টল করার পর, ছোটখাটো ত্রুটি অলক্ষ্যে থেকে যেতে পারে এবং ব্রাউজার আপনার সাইটকে কীভাবে বিবেচনা করে তা প্রভাবিত করতে পারে। ইনস্টলেশন পরীক্ষা করার অভ্যাস গড়ে তুলুন। মিসিং ইন্টারমিডিয়েট সার্টিফিকেট বা অবিশ্বস্ত চেইনের মতো সমস্যা প্রকাশ করে এমন তাৎক্ষণিক স্ক্যানের জন্য আমাদের SSL Checker চালান।
সচরাচর জিজ্ঞাসিত প্রশ্নাবলী
সাধারণ কারণ হলো ইতিমধ্যে আপনার প্রাইভেট কী থাকা এলিয়াসের পরিবর্তে সাইন করা সার্টিফিকেটটি একটি নতুন এলিয়াসের অধীনে আমদানি করা। তখন keytool এটিকে কোনো কী ছাড়াই একটি ট্রাস্টেড সার্টিফিকেট এন্ট্রি হিসেবে সংরক্ষণ করে, তাই Tomcat একটি TLS হ্যান্ডশেক সম্পূর্ণ করতে পারে না। সাইন করা রিপ্লাইটি বিদ্যমান প্রাইভেট-কী এলিয়াসে (আপনার CSR-এর সেটি) পুনরায় আমদানি করুন। keytool -list -v -keystore example.jks চালিয়ে এবং এলিয়াসটি এক সার্টিফিকেটের বেশি চেইনসহ PrivateKeyEntry হিসেবে দেখাচ্ছে কিনা যাচাই করে এটি কাজ করেছে কিনা নিশ্চিত করুন।
প্রথমে চেইন আমদানি করুন। রুট এবং যেকোনো ইন্টারমিডিয়েট সার্টিফিকেট ক্রমানুসারে ট্রাস্টেড এন্ট্রি হিসেবে যোগ করুন, তারপর আপনার ডোমেইন সার্টিফিকেটটি সবশেষে প্রাইভেট-কী এলিয়াসে আমদানি করুন। এটি keytool-কে আপনার কীতে রিপ্লাই সংযুক্ত করার আগে একটি সম্পূর্ণ ট্রাস্ট পাথ তৈরি করতে দেয়। একটি PKCS#7 (.p7b) ফাইলের ক্ষেত্রে চেইনটি ইতিমধ্যেই বান্ডল করা থাকে, তাই একটি একক আমদানিতেই সবকিছু সম্পন্ন হয়।
HTTPS কানেক্টর server.xml-এ সংজ্ঞায়িত থাকে, যা আপনার Tomcat ইনস্টলেশনের conf ডিরেক্টরিতে অবস্থিত (উদাহরণস্বরূপ $CATALINA_HOME/conf/server.xml)। বর্তমান Tomcat সংস্করণগুলোতে, কানেক্টরে সরাসরি না করে একটি নেস্টেড SSLHostConfig এবং Certificate এলিমেন্টের মাধ্যমে কীস্টোরকে রেফারেন্স করা হয়।
হ্যাঁ। Tomcat উভয়কেই সমর্থন করে। একটি .p12 বা .pfx কীস্টোরের জন্য certificateKeystoreType-কে PKCS12-এ সেট করুন, অথবা একটি .jks কীস্টোরের জন্য JKS-এ সেট করুন, এবং সংশ্লিষ্ট ফাইলের দিকে certificateKeystoreFile নির্দেশ করুন। PKCS12 হলো স্ট্যান্ডার্ড, পোর্টেবল কীস্টোর ফরম্যাট, তাই এটি নতুন কীস্টোরের জন্য একটি ভালো ডিফল্ট।
Tomcat-এর নমুনা কনফিগারেশন নিরাপদ কানেক্টরের জন্য পোর্ট 8443 ব্যবহার করে। ব্রাউজারগুলো ডিফল্টভাবে ব্যবহার করে এমন স্ট্যান্ডার্ড পোর্টে HTTPS পরিবেশন করতে, কানেক্টরের port-কে 443-এ সেট করুন এবং নিশ্চিত করুন যে অন্য কোনো কানেক্টর বা সার্ভিস ইতিমধ্যে এটি ব্যবহার করছে না।
বান্ডিল করা স্ক্রিপ্ট $CATALINA_HOME/bin/shutdown.sh চালান এবং তারপর $CATALINA_HOME/bin/startup.sh চালান, অথবা আপনার সার্ভিস ম্যানেজারের মাধ্যমে Tomcat সার্ভিসটি পুনরায় চালু করুন (উদাহরণস্বরূপ Linux-এ systemctl restart tomcat, অথবা Windows-এ Services প্যানেল)। server.xml-এর পরিবর্তনগুলো কার্যকর হতে একটি পুনরায় চালু করা প্রয়োজন।
আজ অর্ডার করার সময় SSL শংসাপত্রে 10% সংরক্ষণ করুন!
দ্রুত ইস্যু, শক্তিশালী এনক্রিপশন, 99.99% ব্রাউজার বিশ্বাস, নিবেদিত সমর্থন, এবং 25 দিনের অর্থ ফেরত গ্যারান্টি। কুপন কোড: SAVE10


