LwM2M روی DTLS

ThingsBoard توانایی اجرای سرور LwM2M را از طریق DTLS فراهم می کند. پلتفرم از Pre-Shared Key، Raw Public Key و گواهینامه X.509 از طریق DTLS پشتیبانی می کند. تهیه DTLS به گواهینامه های معتبر ECDSA نیاز دارد. کلیدهای ECDSA کوچکتر از کلیدهای RSA هستند و بنابراین برای دستگاه‌های محدود ترجیح داده می‌شوند. برای جزئیات بیشتر به مقاله مقایسه مراجعه کنید. توصیه می کنیم از گواهینامه های SSL معتبر تولید شده با استفاده از مقامات CA مورد اعتماد استفاده کنید و از صرف زمان برای حل مشکلات گواهی های خودامضا خودداری کنید. دستورالعمل های زیر را در مورد نحوه پیکربندی SSL برای گواهی های ذخیره شده در قالب فایل PEM یا Java Keystore مشاهده کنید.

پیکربندی DTLS با استفاده از فایل گواهی PEM

از نسخه TB 3.3.2 موجود است

متغیرهای محیط زیر را از طریق فایل پیکربندی، اسکریپت‌های docker-compose یا kubernetes پیکربندی کنید. برای مثال از thingsboard.conf استفاده خواهیم کرد:

...
export LWM2M_SERVER_CREDENTIALS_ENABLED=true
export LWM2M_SERVER_CREDENTIALS_TYPE=PEM
export LWM2M_SERVER_PEM_CERT=server.pem
export LWM2M_SERVER_PEM_KEY=server_key.pem
export LWM2M_SERVER_PEM_KEY_PASSWORD=secret
# To enable Bootstrap and Bootstrap over DTLS
export LWM2M_ENABLED_BS=true
export LWM2M_BS_CREDENTIALS_ENABLED=true
export LWM2M_BS_CREDENTIALS_TYPE=PEM
export LWM2M_BS_PEM_CERT=server.pem
export LWM2M_BS_PEM_KEY=server_key.pem
export LWM2M_BS_PEM_KEY_PASSWORD=secret
...

جایی که:

  • LWM2M_SERVER_CREDENTIALS_ENABLED – فعال/غیرفعال کردن پشتیبانی از گواهینامه/RPK X509.
  • LWM2M_SERVER_CREDENTIALS_TYPE – نوع اعتبار سرور. PEM – فایل گواهی pem. KEYSTORE – فروشگاه کلید جاوا؛
  • LWM2M_SERVER_PEM_CERT – مسیر فایل گواهی سرور. گواهی سرور یا زنجیره گواهی را نگه می دارد، همچنین ممکن است شامل کلید خصوصی سرور باشد.
  • LWM2M_SERVER_PEM_KEY – مسیر فایل کلید خصوصی گواهی سرور. به صورت پیش فرض اختیاری است. اگر کلید خصوصی در فایل گواهی سرور وجود نداشته باشد، الزامی است.
  • LWM2M_SERVER_PEM_KEY_PASSWORD – رمز عبور کلید خصوصی گواهی سرور اختیاری.

پس از تکمیل تنظیمات، سرور Thingsconnect را راه اندازی یا راه اندازی مجدد کنید.

 

  مطمئن شوید که فایل‌های گواهی با فرآیند Thingsconnect قابل دسترسی هستند:

  • لینوکس: از پوشه /etc/thingsboard/conf استفاده کنید. مطمئن شوید که فایل‌ها دارای مجوزهای مشابه thingsboard.conf هستند. از مسیر فایل نسبی استفاده کنید، به عنوان مثال. server.pem;
  • Docker Compose: مونت یا استفاده از حجم موجود در پوشه /config کانتینر. از مسیر فایل کامل استفاده کنید، به عنوان مثال. /config/server.pem;
  • K8S: حجم جداگانه را در /https-config یا پوشه مشابه قرار دهید. از مسیر فایل کامل استفاده کنید، به عنوان مثال. /https-config/server.pem;
  • ویندوز: از پوشه C:\Program Files (x86)\thingsboard\conf\ استفاده کنید. مطمئن شوید که فایل‌ها دارای مجوزهای مشابه thingsboard.conf هستند. از مسیر فایل نسبی استفاده کنید، به عنوان مثال. server.pem;

 

 

 

ویژگی های پیکربندی اضافی

شما می توانید متغیرهای محیط اضافی زیر را از طریق فایل پیکربندی، اسکریپت های docker-compose یا kubernetes پیکربندی کنید.

  • LWM2M_SECURITY_BIND_ADDRESS – آدرس bind برای سرور امن LwM2M. مقدار پیش‌فرض 0.0.0.0 همه رابط‌ها را نشان می‌دهد.
  • LWM2M_SECURITY_BIND_PORT – درگاه اتصال برای سرور امن LwM2M. مقدار پیش فرض 5686 است.
  • TB_LWM2M_SERVER_SECURITY_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT – از بررسی اعتبار گواهی برای گواهی های مشتری صرفنظر کنید. مقدار پیش فرض نادرست است.
  • LWM2M_BS_SECURITY_BIND_ADDRESS – آدرس bind برای سرور امن LwM2M Bootstrap. مقدار پیش‌فرض 0.0.0.0 همه رابط‌ها را نشان می‌دهد.
  • LWM2M_BS_SECURITY_BIND_PORT – او پورت را برای سرور امن LwM2M Bootstrap متصل می کند. مقدار پیش فرض 5688 است.

تولید گواهینامه های خودامضا

از دستورالعمل های زیر برای تولید فایل های گواهی خود استفاده کنید. برای آزمایش مفید است، اما زمان بر است و برای تولید توصیه نمی شود.

فایل گواهی PEM

توجه: این مرحله به سیستم عامل لینوکس با نصب openssl نیاز دارد.

برای تولید یک گواهینامه PEM و کلید خصوصی با امضای خود سرور، از دستور زیر استفاده کنید:

openssl ecparam -out server_key.pem -name secp256r1 -genkey
openssl req -new -key server_key.pem -x509 -nodes -days 365 -out server.pem

اگر نمی‌خواهید از کلید خصوصی خود با یک عبارت عبور محافظت کنید، می‌توانید گره‌های – (مخفف بدون DES) را نیز اضافه کنید. در غیر این صورت، رمز عبور حداقل 4 کاراکتری را از شما می خواهد.

پارامتر روز (365) را می توانید با هر عددی جایگزین کنید تا بر تاریخ انقضا تأثیر بگذارد. سپس مواردی مانند “Country Name” را از شما درخواست می کند، اما شما فقط می توانید Enter را بزنید و پیش فرض ها را بپذیرید.

-subj “/CN=localhost” را برای سرکوب سوالات در مورد محتوای گواهی اضافه کنید (Localhost را با دامنه مورد نظر خود جایگزین کنید).

گواهینامه های خودامضا شده با هیچ شخص ثالثی تأیید نمی شوند مگر اینکه قبلاً آنها را به مرورگرها وارد کرده باشید. اگر به امنیت بیشتری نیاز دارید، باید از گواهی امضا شده توسط یک مرجع گواهی (CA) استفاده کنید.

نمونه های مشتری

منابع زیر را ببینید:

  • دسترسی به احراز هویت مبتنی بر رمز به عنوان مثال اتصال SSL یک طرفه.
  • X.509 احراز هویت مبتنی بر گواهی برای مثال اتصال SSL دو طرفه.

عناوین هر بخش