پیکربندی «امنیت لایه انتقال» برای API BaaS

Edge for Private Cloud نسخه ۴.۱۶.۰۹

«امنیت لایه انتقال» (TLS، که نسخه قبلی آن SSL است) فناوری امنیتی استانداردی برای اطمینان از پیام‌رسانی امن و رمزگذاری‌شده در سراسر محیط میانای برنامه‌سازی کاربردی شما است. می‌توانید TLS را در گره‌های «درگاه API BaaS» و «پشته API BaaS» پیکربندی کنید.

تصویر زیر نمودار استقرار معمولی را برای API BaaS با یک گره BaaS Portal و سه گره API BaaS Stack نشان می‌دهد.

توسعه‌دهندگان از مرورگر برای ارسال درخواست به «درگاه» استفاده می‌کنند. به‌طور پیش‌فرض، درخواست‌ها از پروتکل HTTP در درگاه ۹۰۰۰ گره «درگاه» استفاده می‌کنند.

این استقرار شامل یک ترازکننده بار بین گره‌های «پورتال» و «پشته» است. در این پیکربندی، «پورتال» درخواست‌های HTTP را به ترازکننده بار ارسال می‌کند و سپس ترازکننده بار درخواست‌ها را به یکی از گره‌های Stack هدایت می‌کند. این محیط استقرار توصیه‌شده برای سیستم تولید است.

گزینه‌های پیکربندی «امنیت لایه انتقال»

هنگام پیکربندی TLS برای API BaaS، چندین گزینه دارید:

  • «امنیت لایه انتقال» را در «پورتال» و در متعادل‌کننده بار برای گره‌های Stack پیکربندی کنید

    در این پیکربندی، توسعه‌دهندگان از پروتکل HTTPS برای دسترسی به «پورتال» استفاده می‌کنند و «پورتال» درحال اجرا در مرورگر از HTTPS برای درخواست به گره‌های Stack ازطریق متعادل‌کننده بار استفاده می‌کند. ترازکننده بار از HTTP برای دسترسی به گره‌های Stack استفاده می‌کند.
  • پیکربندی TLS در درگاه، متعادل‌کننده بار، و گره‌های Stack

    برای امنیت بیشتر، متعادل‌کننده بار را پیکربندی کنید تا از TLS برای دسترسی به گره‌های Stack استفاده کند.
  • پیکربندی TLS در «پورتال» و در یک گره «پشته»

    در محیط‌های کوچک، مثل محیط آزمایشی یا توسعه، ممکن است فقط یک گره «پشته» داشته باشید، یعنی نیازی به گنجاندن متعادل‌کننده بار نیست. در این پیکربندی، TLS را هم در گره‌های «پورتال» و هم در گره‌های Stack پیکربندی کنید.
  • پیکربندی TLS در ترازکننده بار برای «درگاه»

    یک گزینه که در بالا نشان داده نشده است استفاده از ترازکننده بار در جلوی گره «درگاه» است. در آن پیکربندی، می‌توانید TLS را در ترازکننده بار، و به‌صورت اختیاری در اتصال بین ترازکننده بار و «پورتال» پیکربندی کنید.

مطمئن شوید درگاه TLS باز است

روال‌های زیر TLS را در درگاه پیش‌فرض «پورتال» (۹۰۰۰) و گره Stack‏ (۸۰۸۰) پیکربندی می‌کند. اما درصورت تمایل می‌توانید این درگاه را تغییر دهید.

صرف‌نظر از درگاهی که استفاده می‌کنید، باید مطمئن شوید که درگاه در گره باز است. برای مثال، می‌توانید از فرمان زیر برای باز کردن درگاه ۸۴۴۳ استفاده کنید:

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose

پیکربندی TLS در پشته API BaaS

به‌طور پیش‌فرض، TLS برای API BaaS Stack غیرفعال است. سپس بااستفاده از نشانی IP یا نام ساناد گره Stack و درگاه ۸۰۸۰، ازطریق HTTP به BaaS API دسترسی پیدا می‌کنید. برای مثال:

http://stack_IP:8080

یا می‌توانید دسترسی TLS به BaaS API را پیکربندی کنید تا بتوانید به آن در فرم دسترسی داشته باشید:

https://stack_IP:8080

در این مثال، دسترسی TLS را برای استفاده از درگاه ۸۰۸۰ پیکربندی می‌کنید. اما درگاه ۸۰۸۰ الزامی نیست - می‌توانید Stack را برای استفاده از درگاه دیگری پیکربندی کنید. تنها شرط این است که دیوار آتش شما ترافیک را ازطریق درگاه مشخص‌شده مجاز کند.

«پشته» فقط می‌تواند از یک نوع درخواست (HTTP یا HTTPS) در یک درگاه پشتیبانی کند. بنابراین، اگر دسترسی HTTPS را در درگاه ۸۰۸۰ پیکربندی کنید، نمی‌توانید از HTTP برای دسترسی به درگاه ۸۰۸۰ استفاده کنید. اگر «پشته» را برای استفاده از درگاه ۸۴۴۳ با HTTPS پیکربندی کنید، «پشته» دیگر به درگاه ۸۰۸۰ گوش نخواهد داد.

از روش زیر برای پیکربندی دسترسی TLS به Stack استفاده کنید:

  1. فایل JKS مخزن کلید را که حاوی گواهی TLS و کلید خصوصی شما است تولید کنید. برای اطلاعات بیشتر، پیکربندی TLS/SSL برای Edge On Premises را ببینید.
    توجه: مطمئن شوید که گذرواژه ذخیره‌گاه کلید و کلید یکسان باشند.
  2. فایل JKS مخزن کلید را در دایرکتوری‌ای در گره Stack، مثلاً /opt/apigee/customer/application، کپی کنید. دایرکتوری باید برای کاربر «apigee» دسترس‌پذیر باشد.
  3. مالکیت فایل JKS را به کاربر «apigee» تغییر دهید:
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    که در آن keystore.jks نام فایل keystore شما است.
  4. فایل /opt/apigee/customer/application/usergrid.properties را ویرایش کنید تا ویژگی‌های زیر را تنظیم کنید، ازجمله مسیر فایل JKS و گذرواژه در keystore و کلید. اگر این فایل وجود ندارد، آن را ایجاد کنید:
    tomcat-server_scheme=https
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
    tomcat-server_keystore.password=password
    tomcat-server_keyalias=keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # به‌طور پیش‌فرض، دسترسی TLS از درگاه ۸۰۸۰ استفاده می‌کند.
    # Use this property to specify a different port.
    # tomcat-server_port=8080


    هشدار: مقدار گذرواژه باید به‌صورت نوشتار واضح باشد. بنابراین باید از usergrid.properties دربرابر دسترسی غیرمجاز محافظت کنید.

    از ویژگی tomcat-server_keyalias برای مشخص کردن نام مستعار keystore استفاده کنید. نام مستعار کلید را هنگام ایجاد کلید تنظیم می‌کنید. برای مثال، می‌توانید آن را بااستفاده از گزینه -alias در فرمان keytool تنظیم کنید.

    از tomcat-server_ssl.protocols برای تنظیم پروتکل‌های TLS پشتیبانی‌شده توسط Stack استفاده کنید. برای مشاهده فهرست پروتکل‌های پشتیبانی‌شده توسط Java 8، به http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename مراجعه کنید.
  5. گره «پشته» را پیکربندی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  6. تغییرات را در Tomcat پیاده‌سازی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy
  7. پشته BaaS را بازراه‌اندازی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  8. با اجرای فرمان cURL زیر در گره Stack بااستفاده از HTTPS، تأیید کنید که TLS کار می‌کند:
    > curl -k https://localhost:8080/status -v

    اگر TLS به‌درستی پیکربندی شده باشد، باید پاسخی حاوی اطلاعات وضعیت ببینید.

    اگر دسترسی TLS را ازطریق درگاهی غیراز ۸۰۸۰ پیکربندی کرده‌اید، فرمان بالا را برای استفاده از درگاه صحیح اصلاح کنید.
  9. برای همه گره‌های Stack تکرار کنید.
  10. اگر ترازکننده بار در جلوی گره‌های Stack دارید، ترازکننده بار را پیکربندی کنید تا درخواست‌ها را ازطریق HTTPS به گره‌های Stack ارسال کند. برای اطلاعات بیشتر، به اسناد مربوط به متعادل‌کننده بار مراجعه کنید.

    اگر «درگاه» درخواست‌های مستقیم به «پشته» ارسال می‌کند، «درگاه» را پیکربندی کنید تا ازطریق HTTPS به «پشته» دسترسی داشته باشد، همان‌طور که در بخش زیر شرح داده شده است.
  11. از روال زیر در «پیکربندی گره‌های پشته API BaaS برای TLS در پشته یا پورتال» استفاده کنید تا مطمئن شوید گره پشته هنگام تولید پاسخ‌های کاربر، نشانی‌های وب TLS صحیح را دارد.

پیکربندی «درگاه» برای دسترسی به Stack ازطریق TLS

«درگاه BaaS» که در مرورگر اجرا می‌شود با برقراری تماس‌های API با «پشته BaaS» کار می‌کند. اگر «پشته BaaS» را برای استفاده از TLS پیکربندی کنید، باید «درگاه» را نیز پیکربندی کنید تا آن تماس‌ها را ازطریق HTTPS برقرار کند.

نصب API BaaS معمولاً برای یکی از موارد زیر پیکربندی می‌شود:

  • از ترازکننده بار بین گره‌های «پورتال» و «پشته» استفاده کنید

    ترازکننده بار را پیکربندی کنید تا درخواست‌ها را ازطریق HTTPS به گره‌های «پشته» ارسال کند. برای اطلاعات بیشتر، به مستندات مربوط به متعادل‌کننده بار مراجعه کنید.

    در این پیکربندی، «درگاه» می‌تواند ازطریق HTTP یا HTTPS به ترازکننده بار دسترسی داشته باشد، بسته به اینکه چگونه ترازکننده بار را پیکربندی کنید. اگر ترازکننده بار از TLS استفاده می‌کند، از روال زیر برای پیکربندی «پورتال» استفاده کنید تا درخواست‌ها را به ترازکننده بار HTTPS ارسال کند.
  • از «درگاه» بخواهید درخواست‌های مستقیم به Stack ارسال کند

    «درگاه» را پیکربندی کنید تا ازطریق HTTPS به Stack دسترسی داشته باشد، همان‌طور که در زیر شرح داده شده است.

از روش زیر برای پیکربندی API BaaS Portal برای برقراری تماس‌های API ازطریق HTTPS استفاده کنید:

  1. دسترسی TLS را در BaaS Stack همان‌طور که در بالا توضیح داده شد، یا در متعادل‌کننده بار برای گره‌های Stack همان‌طور که در اسناد متعادل‌کننده بار شما توضیح داده شده است، پیکربندی کنید.
  2. /opt/apigee/customer/application/portal.properties را ویرایش کنید تا ویژگی زیر را تنظیم کنید. اگر آن فایل وجود ندارد، آن را ایجاد کنید:
    baas.portal.config.overrideUrl=https://stackIP:port

    نشانی IP یا نام ساناد و درگاه گره پشته API را به‌عنوان مقدار این ویژگی مشخص کنید برای نصب گره تکی، یا متعادل‌کننده بار اگر متعادل‌کننده بار در جلوی گره‌های پشته API BaaS دارید.
  3. Configure the Portal node:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. «پورتال» را بااستفاده از این فرمان بازراه‌اندازی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  5. اگر هنگام پیکربندی دسترسی TLS به Stack بالا از گواهی خودامضا استفاده کرده‌اید، ممکن است مرورگرتان اجازه ارسال درخواست به Stack را از «پورتال» ندهد. اگر خطایی در مرورگر مشاهده کردید که دسترسی HTTPS به Stack مجاز نیست، نشانی وب زیر را در مرورگرتان درخواست کنید، و استثنای امنیتی اضافه کنید تا دسترسی مجاز شود:
    https://stackIP:port/status

    نشانی IP یا نام ساناد و درگاه گره API Stack یا متعادل‌کننده بار را مشخص کنید.

پیکربندی TLS در درگاه API BaaS

به‌طور پیش‌فرض، کاربران با ایجاد درخواست‌های HTTP رمزگذاری‌نشده ازطریق درگاه ۹۰۰۰ در سرور «درگاه»، به «درگاه» دسترسی پیدا می‌کنند. می‌توانید پورتال را طوری پیکربندی کنید که از HTTPS برای رمزگذاری داده‌های ارسالی به و از پورتال استفاده کند.

به‌طور پیش‌فرض، بااستفاده از نشانی IP یا نام ساناد گره «پورتال» و درگاه ۹۰۰۰، ازطریق HTTP به «پورتال» دسترسی پیدا می‌کنید. برای مثال:

http://portal_IP:9000

یا می‌توانید دسترسی TLS به «درگاه» را پیکربندی کنید تا بتوانید به آن در این قالب دسترسی داشته باشید:

https://portal_IP:9443

در این مثال، دسترسی «امنیت لایه انتقال» را برای استفاده از درگاه ۹۴۴۳ پیکربندی می‌کنید. بااین‌حال، درگاه ۹۴۴۳ الزامی نیست - می‌توانید «درگاه» را برای استفاده از درگاه دیگری پیکربندی کنید.

«درگاه» فقط می‌تواند از یک نوع درخواست (HTTP یا HTTPS) در یک درگاه پشتیبانی کند. بنابراین، اگر دسترسی HTTPS را در درگاه ۹۰۰۰ پیکربندی کنید، نمی‌توانید از HTTP برای دسترسی به درگاه ۹۰۰۰ استفاده کنید. اگر «درگاه» را برای استفاده از درگاه ۹۴۴۳ با HTTPS پیکربندی کنید، «درگاه» دیگر به درگاه ۹۰۰۰ گوش نخواهد داد.

برای پیکربندی «امنیت لایه انتقال» برای «درگاه»:

  1. فایل کلید و فایل گواهی را در قالب PEM ایجاد کنید.
    توجه: مطمئن شوید که هیچ گذرواژه/گذرعبارتی روی کلید یا گواهی وجود ندارد.
  2. فایل‌های PEM را در دایرکتوری‌ای در گره «درگاه»، مثلاً /opt/apigee/customer/application، کپی کنید. دایرکتوری باید برای کاربر «apigee» دسترس‌پذیر باشد.
  3. مالکیت فایل‌های PEM را به کاربر «apigee» تغییر دهید:
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. فایل /opt/apigee/customer/application/portal.properties را ویرایش کنید تا ویژگی‌های زیر را تنظیم کنید. اگر آن فایل وجود ندارد، آن را ایجاد کنید:
    baas.portal.ssl=on
    baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # By default, TLS access uses port 9000.
    # Use this property to specify a different port.
    # baas.portal.listen=9000


    از baas.portal.ssl.protocols برای تنظیم پروتکل‌های TLS پشتیبانی‌شده توسط «پورتال» استفاده کنید. برای مشاهده فهرست پروتکل‌های پشتیبانی‌شده، فهرست نام‌های پروتکل SSL را که توسط Nginx تعریف شده است ببینید: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols.
  5. Configure the Portal node:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  6. پیکربندی را مستقر کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy
  7. «درگاه» را بازراه‌اندازی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart
  8. از روال زیر در «پیکربندی گره‌های پشته API BaaS برای TLS در پشته یا پورتال» استفاده کنید تا مطمئن شوید گره پشته نشانی وب TLS صحیح را برای پورتال دارد.

پیکربندی گره‌های API BaaS برای TLS در Stack یا Portal

اگر متعادل‌کننده بار را در جلوی گره‌های Stack یا Portal قرار دهید، یا اگر TLS را مستقیماً در گره Portal یا Stack فعال کنید، باید گره‌ها را با نشانی‌های وب صحیح برای دسترسی به Stack و Portal پیکربندی کنید. برای مثال، گره‌های Stack در شرایط زیر به این اطلاعات نیاز دارند:

  • گنجاندن نشانی وب در پاسخ‌ها در درخواست‌های BaaS API.
  • افزودن پیوند در الگوهای ایمیل هنگام بازنشانی گذرواژه یا ارسال اعلان‌های دیگر.
  • هدایت کاربران به صفحه‌های خاصی از «درگاه».

اگر از متعادل‌کننده بار در جلوی گره‌های Stack استفاده می‌کنید یا TLS را در گره Stack پیکربندی می‌کنید، ویژگی‌های زیر را در /opt/apigee/customer/application/usergrid.properties تنظیم کنید:

usergrid-deployment_swagger.basepath=http://localhost:8080
usergrid-deployment_usergrid.organization.activation.url=http://localhost:8080/management/organizations/%s/activate
usergrid-deployment_usergrid.admin.activation.url=http://localhost:8080/management/users/%s/activate
usergrid-deployment_usergrid.admin.resetpw.url=http://localhost:8080/management/users/%s/resetpw
usergrid-deployment_usergrid.admin.confirmation.url=http://localhost:8080/management/users/%s/confirm
usergrid-deployment_usergrid.user.activation.url=http://localhost:8080/%s/%s/users/%s/activate
usergrid-deployment_usergrid.user.confirmation.url=http://localhost:8080/%s/%s/users/%s/confirm
usergrid-deployment_usergrid.user.resetpw.url=http://localhost:8080/%s/%s/users/%s/resetpw

http://localhost:8080 را با نشانی وب متعادل‌کننده بار جایگزین کنید. اگر ترازکننده بار برای استفاده از TLS پیکربندی شده است، از پروتکل HTTPS استفاده کنید. فقط درصورتی باید درگاه را اضافه کنید که از درگاه غیراستاندارد استفاده می‌کنید، یعنی چیزی غیراز درگاه ۸۰ برای HTTP و درگاه ۴۴۳ برای HTTPS.

اگر از متعادل‌کننده بار در جلوی گره‌های Stack استفاده می‌کنید، باید ویژگی زیر را نیز در /opt/apigee/customer/application/portal.properties تنظیم کنید:

baas.portal.config.overrideUrl=http://localhost:8080

http://localhost:8080 را با نشانی وب متعادل‌کننده بار برای Stack جایگزین کنید.

اگر از متعادل‌کننده بار در جلوی گره «پورتال» استفاده می‌کنید یا TLS را در گره Stack پیکربندی می‌کنید، ویژگی‌های زیر را در usergrid.properties تنظیم کنید:

usergrid-deployment_usergrid.view.management.organizations.organization.activate=http://localhost:9000
usergrid-deployment_usergrid.view.management.organizations.organization.confirm=http://localhost:9000
usergrid-deployment_usergrid.view.management.users.user.activate=http://localhost:9000
usergrid-deployment_usergrid.view.management.users.user.confirm=http://localhost:9000

http://localhost:9000 را با نشانی وب ترازکننده بار جایگزین کنید. اگر ترازکننده بار برای استفاده از TLS پیکربندی شده است، از پروتکل HTTPS استفاده کنید. فقط اگر از درگاه غیراستاندارد استفاده می‌کنید باید درگاه را اضافه کنید، یعنی چیزی غیراز درگاه ۸۰ برای HTTP و درگاه ۴۴۳ برای HTTPS.

پس‌از ویرایش usergrid.properties:

  1. گره «پشته» را پیکربندی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. تغییرات را در Tomcat پیاده‌سازی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy
  3. پشته BaaS را بازراه‌اندازی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  4. اگر portal.properties را اصلاح کرده‌اید، گره «درگاه» را پیکربندی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  5. تغییرات را پیاده‌سازی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy
  6. «درگاه BaaS» را بازراه‌اندازی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal restart