چگونه ssl را روی سرور بیگ بلوباتن خود تنظیم کنیم؟

نصب ssl روی بیگ بلوباتن

نرم افزار BigBlueButton، ابزاری بر پایه وب است که امکانات متنوعی را برای برگزاری کلاس آنلاین و وبینار ارائه می­کند. از اشتراک گذاری صدا و تصویر گرفته، تا اشتراک گذاری مرورگر و صفحه نمایش بدون نیاز به نصب نرم افزار و پلاگین جانبی از امکانات نسخه جدید این نرم افزار است.

بیگ بلو باتن، در نسخه جدید خود، از HTML5 بصورت کامل پشتیبانی می­کند، همین مساله باعث شده که برای برگزاری کلاسهای آنلاین دیگر نیازی به نصب نرم افزار نباشد. در ادامه مقاله، به توضیح چگونگی نصبSSL  بر روی سرور بیگ بلو باتن می­پردازیم. همچنین با ارائه مراحل به صورت مفصل شما را در راه اندازی آسان بیگ بلو باتن یاری می­کنیم.

همچنین شما می­توانید طرز نصب بیگ بلو باتن را در لینک زیر مشاهده فرمایید:

آموزش نصب بیگ بلو باتن (BigBlueButton)

چگونه SSL را روی سرور بیگ بلو باتن خود تنظیم کنیم؟

برای امنیت بیشتر لازم است SSL support را به بیگ بلو باتن خود اضافه کنید، همچنین به عنوان Chrome 47، کاربران Chrome قادر خواهند بود که میکروفون خود را از طریق WebRTC به اشتراک بگذارند، مگر اینکه بیگ بلو باتن از طریق HTTPS لود شود.

بیگ بلو باتن را برای استفاده از نام دامنه تنظیم کنید

لطفا تمام دستور ها را در این قسمت به عنوان root راه اندازی کنید.

به منظور کسب یک SSL certificate  معتبر برای سرور، شما باید تاکنون برای بیگ بلو باتن خود، یک دامنه در نظر گرفته باشید.

به منظور سند سازی، ما از دامنه  “roomeet.ir”  استفاده خواهیم کرد که با bigbluebutton.roomeet.ir میزبانی شده است.

اگر قبلا شما یک دامنه داشته اید و آن را با DNS host تنظیم کرده اید، یک record pointing به سرور خود اضافه کنید. سپس شما می­توانید دستور  bbb-conf setip command  برای تنظیم بیگ بلو باتن برای  domain name، به کار ببرید

$ sudo bbb-conf --setip bigbluebutton.roomeet.ir

یک SSL certificate بدست آورید

قبل از اینکه بتوانید nginx روی سرور بیگ بلو باتن باHTTPS  تنظیم کنید، شما نیاز دارید که یک valid SSL certificate معتبر داشته باشید. یک دامنه معتبر با 4096 bit RSA key و SHA-256 checksum که حداقل پیشنهاد حال حاضر است و باید راضی کننده باشد.

تعداد زیادی ارائه دهنده وجود دارد که شما می­توانید از آن ها certificate کسب کنید. شرکت هایی که دامنه می­فروشند، مجوز هم ارائه می­کنند.

تعدادی از عرضه کنندگان SSL وجود دارند: مانند شرکت های ارائه دهنده سرور به علاوه، SSL رایگان هم در بسیاری از سایت ها قابل دسترس است.

هر عرضه کننده به شما مجموعه ای از مجوزهای ssl می­دهد، اما آنها به طور عادی private keyو certificate request locally تولید می­کنند.

برای نصب certificate در بیگ بلو باتن، شما به فایل هایی برای certificate نیاز خواهید داشت، همچنین برای کلید شخصی و واسطه certificates در PEM format.

اگر شما تاکنون  SSL certificate تهیه نکرده اید و سرور شما روی اینترنت است، شما می­­توانید از Let’s Encrypt  برای دریافت SSL certificate استفاده کنید. اگر شما می­خواهید از Let’s Encrypt استفاده کنید، مرحله setup using Let’s Encrypt را رد کنید.

Nginx برای استفاده از HTTPS تنظیم کنید

بسته به certificate authority (CA) شما، شما باید 2 یا فایلهای بیشتری مانند زیر داشته باشید:

  • Certificate (گواهی)
  • Private key
  • Intermediate certificate ( ممکن است بیشتر یکی باشد)

گام بعدی، نصب فایل ها بر روی سرور است:

فهرست راهنما ایجاد کنید /etc/nginx/ssl :

$ sudo mkdir /etc/nginx/ssl

حالا private key file برای nginx ایجاد کنید. به علاوه، دسترسی را طوری تنظیم کنید که تنها root  بتواند private key را بخواند:

# cat >/etc/nginx/ssl/bigbluebutton.roomeet.ir.key <<'END'

Paste the contents of your key file here

END

chmod 0600 /etc/nginx/ssl/bigbluebutton.roomeet.ir.key

و certificate file. به یاد داشته باشید که nginx  نیاز به server certificate دارد و لیستی از intermediate certificates در یک فایل:

# cat >/etc/nginx/ssl/bigbluebutton.roomeet.ir.crt <<'END'

Paste (in order) the contents of the following files:

  1. The signed certificate from the CA

  2. In order, each intermediate certificate provided by the CA (but do not include the root).

END

به علاوه، ما پارامتر های 4096-bit diffie-hellman  ایجاد می­کنیم  که به منظور ارتقاء امنیت بعضی از انواع ciphers این مراحل چندین دقیقه طول می­کشد تا کامل شود، مخصوصا اگر روی یک ماشین مجازی راه اندازی شود.

sudo mkdir -p /etc/nginx/ssl

sudo openssl dhparam -out /etc/nginx/ssl/dhp-4096.pem 4096

حالا ما می­توانیم nginx برای استفاده از SSL ویرایش کنیم. فایل  /etc/nginx/sites-available/bigbluebutton را ویرایش کنید. مطمئن شوید که شما از نام فایل ها  برای تطبیق certificate و key files استفاده می­کنید.

server {

  server_name bigbluebutton.roomeet.ir;

  listen 80;

  listen [::]:80;

  listen 443 ssl;

  listen [::]:443 ssl;

 

  ssl_certificate /etc/nginx/ssl/bigbluebutton.roomeet.ir.crt;

  ssl_certificate_key /etc/nginx/ssl/bigbluebutton.roomeet.ir.key;

  ssl_session_cache shared:SSL:10m;

  ssl_session_timeout 10m;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

  ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:

RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256";

  ssl_prefer_server_ciphers on;

  ssl_dhparam /etc/nginx/ssl/dhp-4096.pem;

این ssl تمامی مرورگرها را پشتیبانی می ­کند.

برای تست بیگ بلو باتن می­توانید از تست رایگان رومیت استفاده کنید.

FreeSWITCH را برای استفاده از SSL تنظیم کنید

اگر شما firewall روی سرور دارید و port 5066 را باز کرده اید، low را عوض کنید تا port 7443 باز شود. همچنین اگر روی سرور بیگ بلو باتن firewall داشته باشد، شما ممکن است نیاز به مشخص کردن value با یک IP address EXTERNAL_IP_ADDRESS:7443 داشته باشد تا از دریافت خطا  1002 جلوگیری شود.

سپس، websocket  را به nginx ارسال کنید. فایل /etc/bigbluebutton/nginx/sip.nginx را ویرایش کنید و پروتکل و پورت در   proxy_pass تغییر دهید:

location /ws {

  proxy_pass https://203.0.113.1:7443;

  proxy_http_version 1.1;

  proxy_set_header Upgrade $http_upgrade;

  proxy_set_header Connection "Upgrade";

  proxy_read_timeout 6h;

  proxy_send_timeout 6h;

  client_body_timeout 6h;

  send_timeout 6h;

}

بیگ بلو باتن را برای session via HTTPS تنظیم کنید

حالا nginx را برای استفاده از  SSL تنظیم کنید، مرحله بعد تنظیم FreeSWITCH برای استفاده HTTPS است.

/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties ویرایش کنید و bigbluebutton.web.serverURL برای استفاده HTTPS آپدیت کنید.

#----------------------------------------------------

# This URL is where the BBB client is accessible. When a user successfully

# enters a name and password, she is redirected here to load the client.

bigbluebutton.web.serverURL=https://bigbluebutton.roomeet.ir

سپس، فایل /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties را ویرایش کنید و jnlpUrl و jnlpFile را به روز رسانی کنید.

streamBaseUrl=rtmp://bigbluebutton.roomeet.ir/screenshare

jnlpUrl=https://bigbluebutton.roomeet.ir/screenshare

jnlpFile=https://bigbluebutton.roomeet.ir/screenshare/screenshare.jnlp

شما همچنین باید فایل var/www/bigbluebutton/client/conf/config.xml را آپدیت کنید. شما هم چنین می­توانید این کار را با استفاده از دستور زیر انجام دهید:

$ sudo sed -e 's|http://|https://|g' -i /var/www/bigbluebutton/client/conf/config.xml

اگر شما نیاز به برگرداندن این تغییرات دارید، می­توانید دستور برعکس به کار ببرید:

$ sudo sed -e 's|https://|http://|g' -i /var/www/bigbluebutton/client/conf/config.xml

/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml را باز کنید:

kurento:
    wsUrl: ws://bbb.roomeet.ir/bbb-webrtc-sfu

 برای

kurento:

    wsUrl: wss://bbb.roomeet.ir/bbb-webrtc-sfu

همچنین تغییر دهید:

note:

    enabled: true

    url: http://bbb.roomeet.ir/pad

به

note:

    enabled: true

    url: https://bbb.roomeet.ir/pad

سپس، تولید recordings را تغییر دهید تا با HTTPS ثبت شوند. /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml ویرایش کنید و value را برای playback_protocol تغییر دهید:

playback_protocol: https

اگر شما  API demos را در مرحله پنجم نصب کرده اید،  /var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp را ویرایش کنید و ارزش BigBlueButtonURL را با استفاده از HTTPS  تغییر دهید.

// This is the URL for the BigBlueButton server

String BigBlueButtonURL = "https://bigbluebutton.roomeet.ir/bigbluebutton/";

در آخر، برای به کار بردن تمام تغییراتی که انجام دادید، شما باید تمام محتوای بیگ بلو باتن را دوباره راه اندازی کنید:

$ sudo bbb-conf --restart

تنظیمات  HTTPS را آزمایش کنید

برای اینکه مطمئن شوید که هیچ گونه خطایی در گزارش های امنیتی صورت نگرفته است، لطفا تنظیمات HTTPS خود را تست کنید.

بعد از تست در سایت های تست اس اس ال،  تنظیمات نشان داده شده در صفحه باید به رنکینگ A در SSL Labs test pag برسد.

از Let’s Encrypt  استفاده کنید

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

ابتدا، ابزار تنظیمات رمزگشایی را نصب کنید. لطفا تمام دستورات زیر را در قسمت root به کار بگیرید.

$ sudo apt-get update

$ sudo apt-get install software-properties-common

$ sudo add-apt-repository universe

$ sudo add-apt-repository ppa:certbot/certbot

$ sudo apt-get install certbot

سپس، برای افزایش ایمنی کدها، 4096-bit diffie-hellman parameters ایجاد کنید.

sudo mkdir -p /etc/nginx/ssl

sudo openssl dhparam -out /etc/nginx/ssl/dhp-4096.pem 4096

قبل ایجاد روی سرور، نیازمند است BigBlueButton را برای استفاده از دامنه مورد نظر تنظیم کنید. اگر تا کنون این کار را انجام نداده اید، از دستور زیر استفاده کنید.

$ sudo bbb-conf --setip bigbluebutton.roomeet.ir

در مرحله بعد  bigbluebutton.roomeet.ir را با نام دامنه جایگزین کنید.

$ sudo certbot --webroot -w /var/www/bigbluebutton-default/ -d bigbluebutton.roomeet.ir certonly

IMPORTANT NOTES:

 - Congratulations! Your certificate and chain have been saved at

   /etc/letsencrypt/live/bigbluebutton.roomeet.ir/fullchain.pem. Your cert will

   expire on 20XX-YY-ZZ. To obtain a new version of the certificate in

   the future, simply run Let's Encrypt again.

 - If you like Let's Encrypt, please consider supporting our work by:

 

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate

   Donating to EFF:                    https://eff.org/donate-le

این کار خروجی زیر را تولید می کند:

$ ls /etc/letsencrypt/live/bigbluebutton.roomeet.ir/

cert.pem  chain.pem  fullchain.pem  privkey.pem

سپس، تنظیمات فایل nginx  را ویرایش کنید و خط زیر را اضافه کنید.

erver {

  server_name bigbluebutton.roomeet.ir;

  listen 80;

  listen [::]:80;

  listen 443 ssl;

  listen [::]:443 ssl;

  ssl_certificate /etc/letsencrypt/live/bigbluebutton.roomeet.ir/fullchain.pem;

  ssl_certificate_key /etc/letsencrypt/live/bigbluebutton.roomeet.ir/privkey.pem;

  ssl_session_cache shared:SSL:10m;

  ssl_session_timeout 10m;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

  ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256";

  ssl_prefer_server_ciphers on;

  ssl_dhparam /etc/nginx/ssl/dhp-4096.pem;

Let’s Encrypte certificates برای 90 رور خوب است و می­تواند به صورت خودکار تمدید شود. برای درخواست آپدیت خودکار هفتگی، فایل crontab را برای root ویرایش کنید:

$ sudo crontab -e

و دو خط زیر را در پایین اضافه کنید:

30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log

35 2 * * 1 /bin/systemctl reload nginx

مشکل یابی

اگر شما با هر مشکلی در حین نصب مواجه شدید،قسمت troubleshooting را ببینید.

برای تست این نرم افزار می­توانید از تست رایگان رومیت استفاده کنید و از دوهفته تست رایگان بهره ببرید. رومیت با ارائه یک فضای ساده و کاربردی شما را در تست این پلتفرم یاری می­دهد و با معرفی پکیج هایی با تنوع زیاد، نیاز شما را وابسته به هدفتان برطرف خواهد کرد.




نظرات