انتقال HTTP از طریق SSL

ThingsBoard امکان اجرای یک سرور HTTP را فراهم می‌کند که تماس‌های API از دستگاه‌ها را از طریق SSL پردازش می‌کند. این راهنما در واقع یک نسخه از راهنمای فعالسازی HTTPS است.

بیشتر محیط‌های ThingsBoard از ترمینیشن پوینت لود بالانسر برای اتصال SSL بین دستگاه و پلتفرم استفاده می‌کنند. به عبارت دیگر، ترافیک اینترنتی بین دستگاه و لود بالانسر رمزگذاری می‌شود، اما بین لود بالانسر و سرویس‌های پلتفرم رمزگشایی می‌شود. مزیت چنین گزینه‌ای تنظیمات ساده‌ای است. بیشتر لود بالانسرهای ابری (AWS، Google cloud و غیره) ابزارهای تولید گواهی و مستندات جامعی برای پیکربندی SSL دارند.

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

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

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

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

...
export SSL_ENABLED=true
export SSL_CREDENTIALS_TYPE=PEM
export SSL_PEM_CERT=server.pem
export SSL_PEM_KEY=server_key.pem
export SSL_PEM_KEY_PASSWORD=secret
...

که:

  • SSL_ENABLED – فعال / غیرفعال کردن پشتیبانی از SSL
  • SSL_CREDENTIALS_TYPE – نوع مدارک سرور. PEM – فایل گواهی pem؛ KEYSTORE – مخزن جاوا
  • SSL_PEM_CERT – مسیر فایل گواهی سرور. شامل گواهی سرور یا زنجیره گواهی سرور می باشد و ممکن است شامل کلید خصوصی سرور نیز باشد.
  • SSL_PEM_KEY – مسیر فایل کلید خصوصی گواهی سرور. به طور پیش فرض اختیاری است. در صورت عدم وجود کلید خصوصی در فایل گواهی سرور، این فیلد الزامی است.
  • SSL_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؛

 

 

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

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

فایل گواهی 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 (مخفف no DES) را اضافه کنید اگر نمی‌خواهید کلید خصوصی خود را با عبارت عبور محافظت کنید. در غیر این صورت، به شما برای “حداقل 4 کاراکتر” رمز عبور درخواست می‌دهد.

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

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

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

مثال‌های مشتری

برای مشاهدهٔ اتصال SSL یک‌طرفهٔ مبتنی بر توکن دسترسی، به عنوان مثال به اتصال یک‌طرفه SSL مراجعه کنید.

 

عناوین هر بخش