CoAP بر روی DTLS

ThingsBoard امکان اجرای سرور CoAP را از طریق DTLS فراهم می کند. هر دو نوع یکطرفه و دوطرفه DTLS پشتیبانی می شود. راه اندازی DTLS نیاز به گواهی ECDSA معتبر دارد. کلیدهای ECDSA کوچکتر از کلیدهای RSA هستند و به همین دلیل برای دستگاه‌های محدود منابع مورد ترجیح قرار می‌گیرند. برای اطلاعات بیشتر، مقاله مقایسه را ببینید. ما توصیه می کنیم از گواهی‌های SSL معتبری که با استفاده از مراجع CA معتبر تولید شده‌اند استفاده کنید و از وقت گذاشتن برای حل مشکلات مربوط به گواهی‌های امضا شده توسط خوددست خوددست خوددست خوددست خوددست خوددست خوددست خوددست خوددست خوددست خوددست خوددست خوددست خوددست خوددست بپرهیزید. دستورالعمل‌های زیر را برای پیکربندی SSL برای گواهی‌های ذخیره شده به صورت فایل PEM یا Keystore جاوا ببینید.

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

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

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

...
export COAP_DTLS_ENABLED=true
export COAP_DTLS_CREDENTIALS_TYPE=PEM
export COAP_DTLS_PEM_CERT=server.pem
export COAP_DTLS_PEM_KEY=server_key.pem
export COAP_DTLS_PEM_KEY_PASSWORD=secret
...

جایی که:

  • COAP_DTLS_ENABLED – فعال/غیرفعال کردن پشتیبانی SSL.
  • COAP_DTLS_CREDENTIALS_TYPE – نوع اعتبار سرور. PEM – فایل گواهی pem. KEYSTORE – فروشگاه کلید جاوا؛
  • COAP_DTLS_PEM_CERT – مسیر فایل گواهی سرور. گواهی سرور یا زنجیره گواهی را نگه می دارد، همچنین ممکن است شامل کلید خصوصی سرور باشد.
  • COAP_DTLS_PEM_KEY – مسیر فایل کلید خصوصی گواهی سرور. به صورت پیش فرض اختیاری است. اگر کلید خصوصی در فایل گواهی سرور وجود نداشته باشد، الزامی است.
  • COAP_DTLS_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;

 

 

تنظیمات پیکربندی اضافی

شما می‌توانید تنظیمات محیطی اضافی زیر را از طریق فایل پیکربندی، داکر کامپوز یا اسکریپت‌های کوبرنتیس تنظیم کنید.

COAP_DTLS_BIND_ADDRESS – آدرس بایند برای سرور CoAP امن. مقدار پیش‌فرض 0.0.0.0 به معنی تمام رابط‌ها است؛
COAP_DTLS_BIND_PORT – پورت بایند برای سرور CoAP امن. مقدار پیش‌فرض 5684 است؛
TB_COAP_X509_DTLS_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT – رد کردن بررسی اعتبار گواهی برای گواهی‌های مشتری. مقدار پیش‌فرض false است.
TB_COAP_X509_DTLS_SESSION_INACTIVITY_TIMEOUT – حداکثر زمان عدم فعالیت جلسه DTLS به میلی‌ثانیه. مقدار پیش‌فرض 86400000 است که معادل یک روز است.
TB_COAP_X509_DTLS_SESSION_REPORT_TIMEOUT – فرکانس پاکسازی دوره‌ای جلسات غیرفعال. مقدار پیش‌فرض 1800000 است که معادل 30 دقیقه است.

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

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

فایل گواهی 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

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

پارامتر روزها (365) را می‌توانید با هر عدد دیگری جایگزین کنید تا تاریخ انقضا را تغییر دهید. در این صورت، برای مواردی مانند “نام کشور” به شما سوال خواهد شد، اما شما می‌توانید فقط دکمه Enter را بزنید و پیش‌فرض‌ها را قبول کنید.

از -subj ‘/CN=localhost’ استفاده کنید تا سوالات مربوط به محتوای گواهی را کاهش دهید (localhost را با دامنه مورد نظر خود جایگزین کنید).

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

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

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

عناوین هر بخش