HTTP از طریق SSL

ThingsBoard امکان اجرای یک سرور HTTP را فراهم می‌کند که رابط کاربری وب را میزبانی کرده و تماس‌های REST API را از طریق SSL ارائه می‌دهد.

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

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

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

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

برای تنظیم متغیرهای محیطی زیر از طریق فایل پیکربندی، داکر کامپوز یا اسکریپت‌های کوبرنتیز، عمل کنید. برای مثال، از فایل 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 – فایل 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

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

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

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

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

عناوین هر بخش