تنظیمات احراز هویت در بروکر MQTT
در این آموزش با تنظیمات بیشتر برای احراز هویت در mqtt broker آشنا میشیم .
سلام .
در ادامه آموزش های mqtt بعد از نصب MQTT broker در لینوکس و استفاده به صورت ساده میرسیم به تنظیمات بیشتر برای احراز هویت در سرور mqtt که با استفاده از اسکریپت mosquitto_passwd انجام میشه .
در حالت عادی بعد از نصب کامل بروکر و اجرای اون میتونیم به صورت ساده از سرور خودمون استفاده کنیم و پیام ها رو رد و بدل کنیم اما برای استفاده درست از سرور نیاز داریم تا احراز هویت انجام بشه که هر کسی که درخواست فرستاد نتونه به سرور متصل بشه و پیام های ما رو بخونه پس باید دسترسی به سرور رو محدودتر کنیم .
در آموزش قبلی به صورت خلاصه فرآیند رو توضیح دادم اما در این آموزش با جزئیات بیشتری تنظیمات MQTT broker authentication رو دنبال میکنیم .
مرحله اول – بروکر MQTT رو غیر فعال کنید :
با دستور زیر میتونید متوجه بشید که سرور شما با چه شماره ای در حال پردازش هست
۱ |
sudo pidof mosquitto |
بعد از اجرای دستور بالا اگر روی سرور شما بروکر MQTT در حال اجرا باشه یک یا چند عدد رو به شما نشون میده که باید با دستور kill بروکر رو ببندید . فرض کنید بعد از اجرا دستور بالا عدد ۲۵۶۶۷ رو به من نشون داد .
۱ |
sudo kill ۲۵۶۶۷ |
مرحله دوم – استفاده از اسکریپت mosquitto_passwd برای ساخت اکانت ها در بروکر :
برای اینکه بتونیم نام کاربری و رمز عبور های مورد نظر ذخیره کنیم از اسکریپت mosquitto_passwd استفاده میکنیم . نحوه استفاده از اسکریپت به صورت زیر هست :
۱ ۲ ۳ ۴ ۵ |
mosquitto_passwd [ -H hash ] [ -c | -D ] passwordfile username mosquitto_passwd [ -H hash ] -b passwordfile username password mosquitto_passwd -U passwordfile |
دستور mosquitto_passwd یه سری گزینه ها داره که به شرح زیر هست .
گزینه های قابل استفاده در mosquitto_passwd :
b- : در صورت استفاده از این گزینه میتوانید پسورد رو به صورت کامند در همون خط وارد کنید
c- : ساخت فایل رمز جدید . اگر فایل از قبل وجود داشته باشد اطلاعات جایگزین اطلاعات قبلی میشود .
D- : حذف نام کاربری مشخص از فایل رمز ها
H- : انتخاب ذخیره سازی رمز ها به صورت رمزنگاری شده (Hash) ، قابلیت انتخاب به صورت : sha512-pbkdf2 و sha512 به صورت پیش فرض [sha512-pbkdf2] استفاده میشود .
U- : برای ارتفا یا تبدیل فایل رمز
passwordfile : محل ذخیره سازی فایل رمز
username : نام کاربری مورد نظر برای ساختن /به روز رسانی / حذف
password : زمانی که از b- استفاده میکنید رمز عبور رو باید به این صورت وارد کنید
حالا برای اینکه بهتر درک کنید مطلب رو چند مثال رو با هم ببینیم :
۱ : اگر بخوایم برای اولین بار نام کاربری meties با رمز عبور ۱۲۳۴۵۶ رو بسازیم به صورت زیر عمل میکنیم :
۱ |
sudo mosquitto_passwd -c -b /etc/mosquitto/passwd meties ۱۲۳۴۵۶ |
۲ : اگر بخواهیم روی همین فایل رمز یه نام کاربری دیگه تعرف کنیم که رمز رو به صورت مرحله ای از ما بگیره
۱ |
sudo mosquitto_passwd /etc/mosquitto/passwd meties2 |
۳ : اگر بخواهیم نام کاربری meties2 رو حذف کنیم :
۱ |
sudo mosquitto_passwd -D /etc/mosquitto/passwd meties2 |
مرحله سوم – قطع دسترسی سرور MQTT Broker به کاربران ناشناس :
خوب الان که نام کاربری و رمز عبور های مورد نظر خودمون رو ساختیم باید سرور رو تنظیم کنیم تا افراد ناشناس و فاقد نام کاربری و رمز عبور اجازه دسترسی و ارسال / دریافت پیام به سرور رو نداشته باشن .
اگر تنظیمات پیش فرض رو از قبل ساختید میتونید این تنظیمات رو در همون فایل اعمال کنید در غیر این صورت به دستور زیر فایل تنظیمات پیش فرض برای سرور mqtt بسازید
۱ |
sudo nano /etc/mosquitto/conf.d/default.conf |
با دستور بالا فایلی با نام default.conf ساختیم که به صورت پیش فرض بعد از اجرای بروکر mqtt توسط سرور خوانده و اعمال میشه . حالا باید تنظیمات زیر رو داخل فایلی که باز شده وارد کنیم و فایل رو ذخیره کنیم .
۱ ۲ |
allow_anonymous false password_file /etc/mosquitto/passwd |
توضیحات دستورات بالا :
allow_anonymous : اجازه دسترسی به کاربران ناشناس که false رو وارد میکنیم که به معنی خیر هست .
password_file : محل ذخیره سازی فایل رمز ما .
مرحله چهارم – اجرای سرور MQTT Broker :
خوب حالا که همه تنظیمات رو وارد کردیم ابتدا با دستور زیر سرویس بروکر سرور خودمون رو مجدد راه اندازی میکنیم
۱ |
sudo systemctl restart mosquitto |
و در آخر سرور رو دوباره اجرا میکنیم .
۱ |
sudo mosquitto -d |
حالا میتونید سرور و چک کنید و میبینید که فقط نام کاربری و رمز عبور هایی که ساخته شده اجازه دسترسی ، ارسال و دریافت پیام رو دارن .
اگر سوالی بود حتما بپرسید . موفق و پیروز باشید
منبع : سایت رسمی
سلام. وقت بخیر.
ممنون میشم جواب سوال من رو بدید. چون واقعا چند وقتی هست که درگیرم.
من فقط از طریق نود رد میتونم به بروکرم متصل بشم. یعنی حتی با mqttx که روی همان سیستم نصب است هم نمیتونم. امتحان کردم هم اینکه آی پی سرور رو بزنم و هم اینکه localhost بزنم. در هیچ صورتی وصل نمیشه.
اخطار ECONNREFUSED میده.
خدا خیرتون بده که وقت میگذارید…
سلام .
لطفاً بیشتر توضیح بدید که بتونم راهنماییتون کنم . بروکر روی چه محیطی نصب شده ؟ رزبری پای یا سرور مجازی ؟