এই টিউটোরিয়ালে, আপনি জানবেন কীভাবে Apache Tomcat-এ SSL সার্টিফিকেট ইনস্টল করবেন জাভা keytool ইউটিলিটি ব্যবহার করে, তারপর server.xml-এ HTTPS কানেক্টর কনফিগার করবেন। যদি আপনি এখনও আপনার CSR তৈরি না করে থাকেন, প্রথম বিভাগে দেখানো হয়েছে কীভাবে এটি করবেন।
আমরা একটি ভিডিও রেকর্ড করেছি যা আপনাকে সম্পূর্ণ প্রক্রিয়াটি ধাপে ধাপে দেখায়। আপনি ভিডিও দেখতে পারেন, নির্দেশনা পড়তে পারেন, বা দুটোই করতে পারেন। নিচে ভিডিওটি দেখুন।
Tomcat-এর জন্য একটি CSR কোড তৈরি করুন
CSR-এর পূর্ণরূপ হলো Certificate Signing Request, যা আপনার ডোমেইন এবং প্রতিষ্ঠানের বর্তমান বিবরণ সমেত একটি টেক্সট ব্লক। কমার্শিয়াল SSL সার্টিফিকেটের প্রতিটি ক্রেতাকে ভ্যালিডেশন পাস করে সার্টিফিকেট পাওয়ার জন্য সার্টিফিকেট অথোরিটির (SSL প্রদানকারী) কাছে একটি CSR জমা দিতে হয়। যদি 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 নামে উল্লেখিত) রয়েছে। আপনার ফরম্যাট চিহ্নিত করুন এবং সেই অনুযায়ী নির্দেশনা অনুসরণ করুন।
ধাপ ২: আপনার কীস্টোরে সার্টিফিকেট ইম্পোর্ট করুন
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


