bg-tutorials

JBoss সার্ভারে কীভাবে SSL সার্টিফিকেট ইনস্টল করবেন

এই টিউটোরিয়ালে দেখানো হয়েছে কীভাবে JBoss EAP এবং WildFly-এ একটি SSL সার্টিফিকেট ইনস্টল করবেন keytool এবং Elytron সিকিউরিটি সাবসিস্টেম ব্যবহার করে। যদি আপনার কাছে এখনও আপনার সার্টিফিকেট ফাইলগুলো না থাকে, প্রথম অংশে CSR তৈরি করার প্রক্রিয়া দেখানো হয়েছে।

সংস্করণ সম্পর্কিত নোট: আধুনিক JBoss EAP (7.1 এবং তার পরের সংস্করণ, EAP 8 সহ) এবং সাম্প্রতিক WildFly রিলিজগুলো Undertow-এর https-listener-এর সাথে সংযুক্ত elytron সাবসিস্টেমের মাধ্যমে HTTPS কনফিগার করে। পুরনো security-realm পদ্ধতি এবং লিগ্যাসি Tomcat বা Jetty কানেক্টর এখন ব্যবহারবহির্ভূত, তাই এই গাইডে বর্তমান পদ্ধতি অনুসরণ করা হয়েছে।

আমরা সম্পূর্ণ প্রক্রিয়াটি দেখানোর জন্য একটি ভিডিও রেকর্ড করেছি। আপনি ভিডিওটি দেখতে, নির্দেশনাগুলো পড়তে, বা দুটোই করতে পারেন। নিচে ভিডিওটি দেখুন।

JBoss-এ একটি CSR কোড তৈরি করুন

একটি CSR (Certificate Signing Request) হলো এনকোড করা টেক্সটের একটি ব্লক, যা আপনি সার্টিফিকেট অর্ডার করার সময় সার্টিফিকেট অথরিটি (CA)-কে পাঠান। এতে আপনার ডোমেইন এবং প্রতিষ্ঠানের বিবরণ থাকে, যা CA অনুরোধটি যাচাই করতে ব্যবহার করে। CSR তৈরি করার সময় সংশ্লিষ্ট প্রাইভেট কী-ও তৈরি হয়, যা আপনার সার্ভারে থেকে যায় এবং ইনস্টলেশনের সময় প্রয়োজন হয়।

আপনার কাছে দুটি অপশন রয়েছে:

JBoss-এ CSR তৈরি করা হয় keytool দিয়ে, একটি .jks বা .p12 কীস্টোর থেকে। আপনি এখন যে অ্যালিয়াস এবং কীস্টোর নাম বেছে নিয়েছেন সেটা মনে রাখুন: পরে সাইন করা সার্টিফিকেটটি আপনাকে সেই একই অ্যালিয়াসে ইমপোর্ট করতে হবে। অর্ডার করার সময় CSR-টি CA-তে জমা দিন, এবং সার্টিফিকেট ইস্যু হওয়ার পর নিচের ইনস্টলেশন প্রক্রিয়াটি চালিয়ে যান।

JBoss সার্ভারে একটি SSL সার্টিফিকেট ইনস্টল করুন

ধাপ ১: আপনার সার্টিফিকেট ফাইলগুলো প্রস্তুত করুন

যাচাইকরণের পর, CA আপনাকে ইমেইলের মাধ্যমে সার্টিফিকেট ফাইলগুলো পাঠায়, সাধারণত একটি ZIP আর্কাইভের মধ্যে। এটি এক্সট্র্যাক্ট করুন। আপনার কাছে থাকা উচিত:

  • আপনার প্রাথমিক সার্টিফিকেট (একটি .crt, .cer, বা .pem ফাইল)।
  • ইন্টারমিডিয়েট সার্টিফিকেটগুলো, যা প্রায়ই একটি .ca-bundle ফাইল হিসেবে দেওয়া হয় (CA বান্ডল)। কিছু CA রুট সার্টিফিকেটও অন্তর্ভুক্ত করে।
  • CSR তৈরি করার সময় যে কীস্টোর (.jks বা .p12) আপনি তৈরি করেছিলেন, যা CSR তৈরির সময় বেছে নেওয়া অ্যালিয়াসের অধীনে আপনার প্রাইভেট কী ধারণ করে।

এই ফাইলগুলো একসাথে রাখুন, এবং সেগুলো সার্ভারে কপি করুন, যেমন JBoss কনফিগারেশন ডিরেক্টরিতে ($JBOSS_HOME/standalone/configuration/)। যদি কোনো ফাইল টেক্সট হিসেবে খোলে, আপনি নিশ্চিত করতে পারেন যে এতে প্রত্যাশিত BEGIN CERTIFICATE এবং END CERTIFICATE লাইনগুলো রয়েছে।

ধাপ ২: CA চেইনটি কীস্টোরে ইমপোর্ট করুন

প্রথমে ইন্টারমিডিয়েট (এবং রুট, যদি দেওয়া থাকে) সার্টিফিকেটগুলো ইমপোর্ট করুন, যাতে keytool একটি সম্পূর্ণ ট্রাস্ট চেইন তৈরি করতে পারে। যে কীস্টোরে আপনার প্রাইভেট কী রয়েছে, সেই একই কীস্টোর ব্যবহার করুন, এবং প্রতিটি CA সার্টিফিকেটের জন্য আলাদা অ্যালিয়াস দিন:

keytool -import -trustcacerts -alias root -file root.crt -keystore your_keystore.jks

keytool -import -trustcacerts -alias intermediate -file intermediate.crt -keystore your_keystore.jks

যদি আপনার CA একটি একক .ca-bundle ফাইল সরবরাহ করে, তাহলে এটি একটি অ্যালিয়াসের অধীনে ইমপোর্ট করুন (যেমন -alias intermediate)। প্রম্পট আসলে কীস্টোর পাসওয়ার্ড দিন এবং ট্রাস্ট নিশ্চিত করুন। এই এন্ট্রিগুলো ট্রাস্টেড-সার্টিফিকেট এন্ট্রি, কী এন্ট্রি নয়, তাই এগুলো আপনার প্রাইভেট কী-তে প্রভাব ফেলে না।

ধাপ ৩: সাইন করা সার্টিফিকেটটি আপনার কী অ্যালিয়াসে ইমপোর্ট করুন

এখন আপনার সাইন করা সার্টিফিকেটটি (CA থেকে প্রাপ্ত রিপ্লাই) CSR তৈরির সময় ব্যবহার করা একই অ্যালিয়াস-এ ইমপোর্ট করুন। যেহেতু সেই অ্যালিয়াসে ইতিমধ্যেই প্রাইভেট কী রয়েছে, keytool এটিকে একটি সার্টিফিকেট রিপ্লাই হিসেবে বিবেচনা করে এবং সাময়িক সেলফ-সাইনড সার্টিফিকেটটিকে CA-সাইনড চেইন দিয়ে প্রতিস্থাপন করে, কী অক্ষত রেখে:

keytool -import -trustcacerts -alias your_csr_alias -file your_domain.crt -keystore your_keystore.jks

your_csr_alias-কে আপনার CSR তৈরির সময় ব্যবহার করা অ্যালিয়াস দিয়ে এবং your_keystore.jks-কে আপনার কীস্টোর দিয়ে প্রতিস্থাপন করুন। সফল হলে keytool Certificate reply was installed in keystore প্রিন্ট করবে।

গুরুত্বপূর্ণ: এখানে নতুন অ্যালিয়াস তৈরি করবেন না। নতুন অ্যালিয়াসের অধীনে রিপ্লাই ইমপোর্ট করলে একটি ট্রাস্টেড-সার্টিফিকেট এন্ট্রি তৈরি হয় যাতে কোনো প্রাইভেট কী থাকে না, চেইনটি হারিয়ে যায়, এবং সার্ভার TLS হ্যান্ডশেক সম্পন্ন করতে পারে না। যদি আপনি Failed to establish chain from reply দেখতে পান, তার অর্থ ধাপ ২-এর ইন্টারমিডিয়েট বা রুট কীস্টোরে অনুপস্থিত।

আপনি ফলাফলটি যাচাই করতে পারেন, অ্যালিয়াসটি এখন ১-এর চেয়ে বেশি দৈর্ঘ্যের একটি সার্টিফিকেট চেইন দেখাবে:

keytool -list -v -alias your_csr_alias -keystore your_keystore.jks

ধাপ ৪: Elytron সাবসিস্টেমে HTTPS কনফিগার করুন

কীস্টোরটি $JBOSS_HOME/standalone/configuration/-এ রাখুন, তারপর একটি Elytron key-store, key-manager, এবং server-ssl-context নির্ধারণ করুন। সবচেয়ে দ্রুত পদ্ধতি হলো ম্যানেজমেন্ট CLI। সার্ভার চালু করুন, jboss-cli.sh --connect দিয়ে সংযোগ করুন, এবং একটি ব্যাচ চালান যাতে পরিবর্তনগুলো একসাথে প্রয়োগ হয়:

batch

/subsystem=elytron/key-store=httpsKS:add(path=your_keystore.jks, relative-to=jboss.server.config.dir, credential-reference={clear-text=your_keystore_password}, type=JKS)

/subsystem=elytron/key-manager=httpsKM:add(key-store=httpsKS, credential-reference={clear-text=your_keystore_password})

/subsystem=elytron/server-ssl-context=httpsSSC:add(key-manager=httpsKM, protocols=["TLSv1.3","TLSv1.2"])

run-batch

এরপর, Undertow-এর https-listener-কে নতুন ssl-context-এর দিকে নির্দেশ করুন। Undertow একইসাথে একটি লিগ্যাসি security-realm এবং একটি Elytron ssl-context রেফারেন্স করতে পারে না, তাই পুরনো রেফারেন্সটি সরিয়ে ফেলুন এবং একটি একক ব্যাচে নতুনটি সেট করুন:

batch

/subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm)

/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context, value=httpsSSC)

run-batch

যদি আপনি সরাসরি standalone.xml সম্পাদনা করতে পছন্দ করেন (সার্ভার বন্ধ থাকা অবস্থায়), তাহলে সমতুল্য কনফিগারেশনটি elytron সাবসিস্টেমের মধ্যে এমন দেখাবে:

<tls>
    <key-stores>
        <key-store name="httpsKS">
            <credential-reference clear-text="your_keystore_password"/>
            <implementation type="JKS"/>
            <file path="your_keystore.jks" relative-to="jboss.server.config.dir"/>
        </key-store>
    </key-stores>
    <key-managers>
        <key-manager name="httpsKM" key-store="httpsKS">
            <credential-reference clear-text="your_keystore_password"/>
        </key-manager>
    </key-managers>
    <server-ssl-contexts>
        <server-ssl-context name="httpsSSC" key-manager="httpsKM" protocols="TLSv1.3 TLSv1.2"/>
    </server-ssl-contexts>
</tls>

এবং undertow সাবসিস্টেমের সংশ্লিষ্ট লিসেনার সেই ssl-context রেফারেন্স করে:

<https-listener name="https" socket-binding="https" ssl-context="httpsSSC" enable-http2="true"/>

protocols-কে TLS 1.3 এবং TLS 1.2-এ সীমাবদ্ধ করলে পুরনো TLS 1.0 এবং 1.1 নিষ্ক্রিয় হয়ে যায়। ডিফল্ট HTTPS পোর্ট হলো 8443; যদি আপনার স্ট্যান্ডার্ড পোর্ট প্রয়োজন হয়, তাহলে একটি লোড ব্যালেন্সার বা পোর্ট রিডাইরেক্ট দিয়ে এটি 443-এ ম্যাপ করুন।

ধাপ ৫: JBoss পুনরায় চালু করুন

যদি আপনি হাতে standalone.xml সম্পাদনা করে থাকেন, নতুন কনফিগারেশন লোড করার জন্য সার্ভার পুনরায় চালু করুন। যদি আপনি উপরের CLI ব্যাচগুলো ব্যবহার করে থাকেন, তাহলে পরিবর্তনগুলো তৎক্ষণাৎ প্রয়োগ হয়, তবে একটি রিলোড একটি পরিচ্ছন্ন স্টার্টআপ নিশ্চিত করে:

jboss-cli.sh --connect --command=:reload

স্টার্টআপের সময় সার্ভার লগে SSL বা Elytron সংক্রান্ত ত্রুটির জন্য পর্যবেক্ষণ করুন। এটি পরিচ্ছন্নভাবে বুট হয়ে গেলে, আপনার SSL সার্টিফিকেট JBoss-এ ইনস্টল হয়ে গেছে।

আপনার SSL ইনস্টলেশন পরীক্ষা করুন

ইনস্টলেশনের পর, সার্টিফিকেট এবং চেইনটি সঠিকভাবে পরিবেশন করা হচ্ছে কিনা তা নিশ্চিত করুন। HTTPS-এর মাধ্যমে আপনার সাইট খুলুন (যেমন https://www.yourdomain.com:8443) এবং প্যাডলক চিহ্নটি পরীক্ষা করুন, বা সার্টিফিকেট, চেইন এবং প্রোটোকল সমর্থন সম্পর্কে একটি সম্পূর্ণ রিপোর্টের জন্য আমাদের SSL Checker দিয়ে একটি বাহ্যিক স্ক্যান চালান। আপনি কমান্ড লাইন থেকেও পরীক্ষা করতে পারেন:

echo | openssl s_client -connect yourdomain.com:8443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates

এটি JBoss যে সার্টিফিকেটটি পরিবেশন করছে তার ইস্যুকারী এবং বৈধতার তারিখ প্রিন্ট করে। যদি ইস্যুকারী আপনার CA হয় (কোনো সেলফ-সাইনড এন্ট্রি নয়), তাহলে রিপ্লাইটি সঠিকভাবে ইমপোর্ট হয়েছে।

সচরাচর জিজ্ঞাসিত প্রশ্নাবলী

আমি কীভাবে জানব JBoss-এ একটি SSL সার্টিফিকেট ইনস্টল করা আছে কিনা?

OpenSSL দিয়ে HTTPS পোর্টে সংযোগ করুন এবং সার্ভার যে সার্টিফিকেট প্রদান করে সেটি পড়ুন:
echo | openssl s_client -connect yourdomain.com:8443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -subject -dates
যদি একটি সার্টিফিকেট ইনস্টল করা থাকে, এটি এর ইস্যুকারী, সাবজেক্ট এবং বৈধতার তারিখ প্রিন্ট করবে। আপনি keytool -list -v -keystore your_keystore.jks দিয়ে কীস্টোরটি পরিদর্শনও করতে পারেন, বা একটি ব্রাউজারে আপনার সাইট খুলে প্যাডলক চিহ্নটি পরীক্ষা করতে পারেন।

JBoss-এ SSL সার্টিফিকেটটি কোথায় রাখব?

সার্টিফিকেটটি একটি কীস্টোরের ভেতরে থাকে, এবং কীস্টোরটি Elytron key-store দ্বারা রেফারেন্স করা হয়। একটি সাধারণ অবস্থান হলো সার্ভার কনফিগারেশন ডিরেক্টরি, $JBOSS_HOME/standalone/configuration/, এবং Elytron key-store পথটি relative-to jboss.server.config.dir সেট করা থাকে। আপনি এটি অন্য কোথাও সংরক্ষণ করতে পারেন যতক্ষণ key-store পথটি সেটির দিকে নির্দেশ করে।

keytool কেন “Failed to establish chain from reply” বলছে?

keytool আপনার সার্টিফিকেট থেকে একটি বিশ্বস্ত রুট পর্যন্ত একটি পথ তৈরি করতে পারেনি। প্রথমে ইন্টারমিডিয়েট (এবং রুট, যদি সরবরাহ করা হয়ে থাকে) সার্টিফিকেটগুলো -trustcacerts সহ একই কীস্টোরে ইমপোর্ট করুন, তারপর সাইন করা রিপ্লাইটি আপনার CSR অ্যালিয়াসে ইমপোর্ট করুন। যদি আপনি রিপ্লাইটি একটি সম্পূর্ণ নতুন অ্যালিয়াসের অধীনে ইমপোর্ট করে থাকেন, তাহলে প্রাইভেট কী হারিয়ে যায়: সেই এন্ট্রিটি মুছে ফেলুন এবং পরিবর্তে মূল কী অ্যালিয়াসে পুনরায় ইমপোর্ট করুন।

JBoss-এ আমার SSL সার্টিফিকেট কখন মেয়াদ শেষ হবে তা কীভাবে পরীক্ষা করব?

keytool -list -v -keystore your_keystore.jks চালান এবং আপনার অ্যালিয়াসের জন্য Valid from লাইনটি পড়ুন, বা লাইভ সার্ভার যে তারিখগুলো রিপোর্ট করে তা দেখতে উপরের OpenSSL কমান্ডটি ব্যবহার করুন। CA/Browser Forum-এর নিয়ম অনুযায়ী পাবলিক TLS সার্টিফিকেটের মেয়াদ কমছে: ১৫ মার্চ, ২০২৬ থেকে সর্বোচ্চ মেয়াদ হবে ২০০ দিন, ২০২৭ সালে তা ১০০ দিনে এবং ২০২৯ সালে ৪৭ দিনে নেমে আসবে। রিনিউয়ালের তারিখগুলো ট্র্যাক করুন এবং মেয়াদ শেষ হওয়ার আগে রিনিউ করুন, বা আপনার CA যদি সমর্থন করে তাহলে ইস্যুয়েন্স স্বয়ংক্রিয় করুন।

আজ অর্ডার করার সময় SSL শংসাপত্রে 10% সংরক্ষণ করুন!

দ্রুত ইস্যু, শক্তিশালী এনক্রিপশন, 99.99% ব্রাউজার বিশ্বাস, নিবেদিত সমর্থন, এবং 25 দিনের অর্থ ফেরত গ্যারান্টি। কুপন কোড: SAVE10

উড়ন্ত একটি ড্রাগনের একটি বিস্তারিত চিত্র
লিখেছেন

SSL শংসাপত্রে বিশেষজ্ঞ অভিজ্ঞ বিষয়বস্তু লেখক। জটিল সাইবারসিকিউরিটি বিষয়গুলিকে পরিষ্কার, আকর্ষক সামগ্রীতে রূপান্তর করা। প্রভাবশালী বর্ণনার মাধ্যমে ডিজিটাল নিরাপত্তার উন্নতিতে অবদান রাখুন।