প্রকল্প সম্পর্কে

Boulder হল একটি ACME-ভিত্তিক সার্টিফিকেট অথরিটি (CA) এর বাস্তবায়ন, এবং এটি সেই সফটওয়্যার যা Let's Encrypt চালায়। ACME প্রোটোকল একটি CA-কে স্বয়ংক্রিয়ভাবে যাচাই করতে দেয় যে একজন সার্টিফিকেট আবেদনকারী প্রকৃতপক্ষে একটি আইডেন্টিফায়ার নিয়ন্ত্রণ করে, এবং গ্রাহকদের তাদের নিয়ন্ত্রিত আইডেন্টিফায়ারগুলির জন্য সার্টিফিকেট ইস্যু ও বাতিল করতে দেয়। স্থাপত্য Boulder নিরাপত্তা প্রসঙ্গ দ্বারা পৃথকীকৃত উপাদানে বিভক্ত: - ওয়েব ফ্রন্ট এন্ড (প্রতি API সংস্করণে একটি) - রেজিস্ট্রেশন অথরিটি - ভ্যালিডেশন অথরিটি - সার্টিফিকেট অথরিটি - স্টোরেজ অথরিটি - পাবলিশার - CRL আপডেটার ওয়েব ফ্রন্ট এন্ড, ভ্যালিডেশন অথরিটি, CRL স্টোরার এবং পাবলিশারের ইন্টারনেট অ্যাক্সেস প্রয়োজন এবং তাই আপসের ঝুঁকি বেশি। রেজিস্ট্রেশন অথরিটি ইন্টারনেট সংযোগ ছাড়াই কাজ করতে পারে কিন্তু ওয়েব ফ্রন্ট এন্ড এবং ভ্যালিডেশন অথরিটির সাথে কথা বলে। সার্টিফিকেট অথরিটি শুধুমাত্র রেজিস্ট্রেশন অথরিটি থেকে নির্দেশ পায়। সমস্ত উপাদান স্থায়িত্বের জন্য স্টোরেজ অথরিটি ব্যবহার করে, যা MariaDB দ্বারা সমর্থিত। উপাদানগুলি gRPC-এর মাধ্যমে যোগাযোগ করে; দূরবর্তী উপাদানগুলি ক্লায়েন্ট/সার্ভার জোড়া হিসাবে ইনস্ট্যান্টিয়েট হয়, যেখানে ক্লায়েন্ট উপাদানটির Go ইন্টারফেস বাস্তবায়ন করে এবং সার্ভার প্রকৃত লজিক ধারণ করে। অভ্যন্তরীণভাবে সিস্টেমটি পাঁচটি অবজেক্ট টাইপের চারপাশে সংগঠিত যা সরাসরি ACME রিসোর্সে ম্যাপ করে: অ্যাকাউন্ট, অথরাইজেশন, চ্যালেঞ্জ, অর্ডার এবং সার্টিফিকেট। ACME ক্লায়েন্টদের থেকে অনুরোধ নতুন অবজেক্ট তৈরি করে এবং বিদ্যমানগুলিকে পরিবর্তন করে, এবং স্টোরেজ অথরিটি বর্তমান অবজেক্ট সেটের স্থায়ী কপি রাখে। ডেভেলপমেন্ট সেটআপ Boulder একটি Dockerfile সহ আসে এবং সমস্ত নির্ভরতা ইনস্টল ও কনফিগার করতে Docker Compose ব্যবহার করে। এটি ডেভেলপমেন্ট এবং পরীক্ষা-নিরীক্ষার জন্য এটি চালানোর জন্য রক্ষণাবেক্ষণকারীদের প্রস্তাবিত উপায়, এবং এটি স্পষ্টভাবে প্রোডাকশন পরিবেশ হিসাবে উপযুক্ত নয়। প্রকল্পটি Pebble-এর পরামর্শ দেয়, Boulder-এর একটি ক্ষুদ্র সংস্করণ, ক্রমাগত ইন্টিগ্রেশন এবং ACME ক্লায়েন্ট ডেভেলপারদের দ্রুত পরীক্ষা-নিরীক্ষার জন্য। সাধারণ কর্মপ্রবাহ: - রিপোজিটরি ক্লোন করুন এবং নিশ্চিত করুন যে Docker Engine 1.13.0+ এবং Docker Compose 1.10.0+ ইনস্টল করা আছে; Docker হোস্টের জন্য কমপক্ষে 2GB RAM সুপারিশ করা হয়। - লিন্ট, ইউনিট এবং ইন্টিগ্রেশন পরীক্ষার মানক ব্যাটারির জন্য ./t.sh চালান; ইউনিট পরীক্ষার জন্য ./t.sh -u, ইন্টিগ্রেশন পরীক্ষার জন্য ./t.sh -i, এবং সম্ভাব্য ভবিষ্যত অবস্থার প্রতিনিধিত্বকারী "config-next" কনফিগারেশনের জন্য ./tn.sh চালান। - test/certs-এ সার্টিফিকেট লেখার জন্য একবার docker compose run bsetup চালান, তারপর Boulder শুরু করতে docker compose up চালান। - docker-compose.yml চেকআউটটি /boulder-এ মাউন্ট করে যাতে হোস্ট সম্পাদনাগুলি অবিলম্বে কন্টেইনারে প্রতিফলিত হয়। ডিফল্টরূপে Boulder একটি জাল DNS রিসলভার ব্যবহার করে যা সমস্ত হোস্টনেম 127.0.0.1-এ রিজলভ করে, যা কন্টেইনারের ভিতরে ইন্টিগ্রেশন পরীক্ষার জন্য উপযুক্ত। একটি হোস্ট-ভিত্তিক ক্লায়েন্টকে Boulder-এর সাথে যোগাযোগ করতে দিতে, হোস্টের Docker IP খুঁজুন এবং সেই অনুযায়ী FAKE_DNS পরিবেশ পরিবর্তনশীল সেট করুন; স্টাবড রিসলভার (sd-test-srv) তখন সমস্ত A কোয়েরির উত্তর সেই ঠিকানায় দেয়। হোস্ট-ভিত্তিক ফায়ারওয়ালগুলিকে প্রয়োজনীয় ভ্যালিডেশন পোর্টে Docker ইনস্ট্যান্স থেকে হোস্টে সংযোগের অনুমতি দিতে হবে। ACME ক্লায়েন্টদের সাথে কাজ করা ডেভেলপমেন্ট পরিবেশ চলমান থাকলে, ACME এন্ডপয়েন্টগুলি হোস্টে http://localhost:4001/directory (ACME v2, HTTP) এবং https://localhost:4431/directory (ACME v2, HTTPS) এ উন্মুক্ত হয়। HTTPS এন্ডপয়েন্ট ব্যবহার করার জন্য test/certs/ipki/minica.pem CA সার্টিফিকেট সম্বলিত একটি ট্রাস্টস্টোর দিয়ে ক্লায়েন্ট কনফিগার করা প্রয়োজন। যেহেতু জাল রিসলভার যেকোনো কোয়েরির জন্য 127.0.0.1 ফেরত দেয়, যেকোনো ডোমেনের জন্য সার্টিফিকেট ইস্যু করা যেতে পারে যেন এটি লোকালহোস্টে রিজলভ করে; FAKE_DNS পরিবর্তন করলে ফেরত দেওয়া ঠিকানা পরিবর্তন হয়, এবং এটি প্রায়শই ACME ক্লায়েন্ট চালানো হোস্ট মেশিনে সেট করা হয়। README একটি কাস্টম SERVER পরিবেশ পরিবর্তনশীল এবং --standalone বিকল্প সহ একটি স্থানীয় Boulder-এর বিরুদ্ধে Certbot চালানো দেখায়। প্রোডাকশন নোট প্রকল্পটি বলে যে Boulder Let's Encrypt-এর জন্য কাস্টম তৈরি এবং শুধুমাত্র ওয়েব PKI এবং CA/Browser ফোরামের বেসলাইন প্রয়োজনীয়তা সমর্থন করার উদ্দেশ্যে। এটি নোট করে যে Boulder প্রায়শই প্রোডাকশনের জন্য মূল্যায়নকারী সংস্থাগুলির জন্য সঠিক ফিট নয়, এবং ACME ডোমেন অথরাইজেশন ছাড়া একটি কেন্দ্রীয়ভাবে পরিচালিত PKI সাধারণত একটি ভাল পছন্দ। প্রয়োজনীয় কাজ এবং নিরাপত্তা বিবেচনা বর্ণনা করে একটি ডিপ্লয়মেন্ট এবং ইমপ্লিমেন্টেশন গাইড দেওয়া হয়। Docker-ভিত্তিক ডেভেলপমেন্ট পরিবেশ স্পষ্টভাবে প্রোডাকশনের জন্য উপযুক্ত নয়: এটি সর্বজনীনভাবে উপলব্ধ প্রাইভেট কী উপাদান ব্যবহার করে, ডিবাগ পোর্ট উন্মুক্ত করে এবং উপাদান ব্যর্থতার প্রতি ভঙ্গুর। সমর্থন এবং উন্নয়ন Let's Encrypt-এর মিশনকে অগ্রাধিকার দেয়, তাই সময়মত সমর্থন বা পুল রিকোয়েস্ট যা প্রথম-লাইন লক্ষ্য থেকে উল্লেখযোগ্যভাবে বিচ্যুত হয় তা গ্রহণ করা নাও হতে পারে। অবদান এবং লাইসেন্স অবদান নির্দেশিকা, কোড পর্যালোচনা প্রক্রিয়া, আচরণবিধি এবং অন্যান্য টিপস CONTRIBUTING.md-এ রয়েছে; সম্প্রদায়ের আচরণবিধি Let's Encrypt কমিউনিটি ফোরামে উল্লেখ করা হয়েছে। প্রকল্পটি Mozilla Public License 2.0-এর অধীনে লাইসেন্সপ্রাপ্ত।