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 را راه اندازی یا راه اندازی مجدد کنید.
تنظیمات پیکربندی اضافی
شما میتوانید تنظیمات محیطی اضافی زیر را از طریق فایل پیکربندی، داکر کامپوز یا اسکریپتهای کوبرنتیس تنظیم کنید.
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 دو طرفه