گواهیهای X.509 برای تنظیم احراز هویت متقابل (دو طرفه) برای MQTT از طریق TLS استفاده میشوند. این شبیه به احراز هویت توکن است، اما به جای توکن از گواهی X.509 استفاده می کند.
دستورالعملهای زیر نحوه اتصال کلاینت MQTT با استفاده از گواهی X.509 به ابر ویرالینک را توضیح میدهد.
مرحله 1. گواهی سرور را دانلود کنید #
تیم ویرالینک قبلاً یک گواهی معتبر برای ابر ویرالینک ارائه کرده است.
پس از دانلود از این لینک فایل را از حالت فشرده خارج نمایید.
مرحله 2. گواهی دستگاه را ایجاد کنید #
برای تولید کلید خصوصی و گواهی x509 از یکی از روش های زیر استفاده کنید. این دستورات که بر اساس ابزار openssl است به احتمال زیاد قبلاً روی سیستم شما نصب شده است:
وارد سایت certificatetools.com شوید.
در قسمت CSR Options مقدار CSR Only را به Self-Sign تغییر دهید.
Submit را بزنید
محتویات Private Key همان فایل key.pem و Certificate همان فایل cert.pem می باشد.
برای تولید کلید و گواهی مبتنی بر RSA، از موارد زیر استفاده کنید:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes
برای تولید کلید و گواهی مبتنی بر EC، از موارد زیر استفاده کنید:
openssl ecparam -out key.pem -name secp256r1 -genkey
openssl req -new -key key.pem -x509 -nodes -days 365 -out cert.pem
خروجی دستور یک فایل کلید خصوصی key.pem و یک گواهی عمومی cert.pem خواهد بود. در مراحل بعدی از آنها استفاده خواهیم کرد.
مرحله 3. کلید عمومی دستگاه را به عنوان اعتبارنامه دستگاه ارائه کنید #
به مسیر کنسول ویرالینک -> دستگاهها -> دستگاه مورد نظر -> مدیریت اعتبارنامهها بروید.
گزینه X.509 Certificate را انتخاب کنید، محتویات فایل cert.pem را وارد کنید و روی ذخیره کلیک کنید.همچنین، همین کار را می توان از طریق REST API انجام داد.
مرحله 4. اتصال را تست کنید #
دستور زیر را برای ارسال دما به ویرالینک با استفاده از کانال امن اجرا کنید:
mosquitto_pub --cafile viralink-server-chain.pem -d -q 1 -h "console.viralink.io" -p "8883" \
-t "v1/devices/me/telemetry" --key key.pem --cert cert.pem -m {"temperature":25}