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

Edge for Private Cloud نسخه 4.16.09

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

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

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

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

گزینه های پیکربندی TLS

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

  • TLS را در پورتال و بار متعادل کننده گره های Stack پیکربندی کنید

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

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

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

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

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

رویه‌های زیر TLS را روی پورت پورتال پیش‌فرض 9000 و Stack node 8080 پیکربندی می‌کند. با این حال، در صورت تمایل می‌توانید این پورت را تغییر دهید.

صرف نظر از پورتی که استفاده می کنید، باید مطمئن شوید که پورت روی گره باز است. به عنوان مثال، می توانید از دستور زیر برای باز کردن پورت 8443 استفاده کنید:

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

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

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

http://stack_IP:8080

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

https://stack_IP:8080

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

پشته فقط می تواند از یک نوع درخواست (HTTP یا HTTPS) روی یک پورت پشتیبانی کند. بنابراین، اگر دسترسی HTTPS را در پورت 8080 پیکربندی کنید، نمی‌توانید از HTTP برای دسترسی به پورت 8080 استفاده کنید. اگر Stack را برای استفاده از پورت 8443 با HTTPS پیکربندی کنید، پس Stack دیگر به پورت 8080 گوش نمی‌دهد.

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

  1. فایل JKS فروشگاه کلید حاوی گواهینامه TLS و کلید خصوصی خود را ایجاد کنید. برای اطلاعات بیشتر به پیکربندی TLS/SSL برای Edge On Premises مراجعه کنید.
    توجه : مطمئن شوید که رمز عبور موجود در keystore و for key یکسان است.
  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 و رمز عبور در فروشگاه کلید و کلید. اگر آن فایل وجود ندارد، آن را ایجاد کنید:
    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= رمز عبور
    tomcat-server_keyalias= keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # به طور پیش فرض، دسترسی TLS از پورت 8080 استفاده می کند.
    # از این ویژگی برای تعیین پورت متفاوت استفاده کنید.
    # tomcat-server_port=8080


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

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

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

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

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

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

پیکربندی پورتال برای دسترسی به پشته از طریق TLS

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

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

  • از یک متعادل کننده بار بین گره های Portal و Stack استفاده کنید

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

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

    همانطور که در زیر توضیح داده شده است، پورتال را برای دسترسی به پشته از طریق HTTPS پیکربندی کنید.

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

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

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

    آدرس IP یا نام DNS و پورت گره API Stack یا load balancer را مشخص کنید.

پیکربندی TLS در پورتال API BaaS

به‌طور پیش‌فرض، کاربران با درخواست‌های HTTP رمزگذاری نشده روی پورت 9000 روی سرور پورتال، به پورتال دسترسی پیدا می‌کنند. می‌توانید پورتال را طوری پیکربندی کنید که از HTTPS برای رمزگذاری داده‌های ارسالی به و از پورتال استفاده کند.

به طور پیش فرض، با استفاده از آدرس IP یا نام DNS گره پورتال و پورت 9000، از طریق HTTP به پورتال دسترسی دارید. به عنوان مثال:

http://portal_IP:9000

همچنین، می‌توانید دسترسی TLS به پورتال را پیکربندی کنید تا بتوانید به شکل زیر به آن دسترسی داشته باشید:

https://portal_IP:9443

در این مثال، شما دسترسی TLS را برای استفاده از پورت 9443 پیکربندی می‌کنید. با این حال، پورت 9443 مورد نیاز نیست - می‌توانید پورتال را برای استفاده از پورت دیگری پیکربندی کنید.

پورتال فقط می تواند یک نوع درخواست (HTTP یا HTTPS) را روی یک پورت پشتیبانی کند. بنابراین، اگر دسترسی HTTPS را روی پورت 9000 پیکربندی کنید، نمی‌توانید از HTTP برای دسترسی به پورت 9000 استفاده کنید. اگر پورتال را برای استفاده از پورت 9443 با HTTPS پیکربندی کنید، پورتال دیگر به پورت 9000 گوش نمی‌دهد.

برای پیکربندی TLS برای پورتال:

  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=روشن
    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
    # به طور پیش فرض، دسترسی TLS از پورت 9000 استفاده می کند.
    # از این ویژگی برای تعیین پورت متفاوت استفاده کنید.
    # 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. پیکربندی گره پورتال:
    > /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 Stack nodes for TLS on the Stack or Portal" استفاده کنید تا مطمئن شوید که گره Stack URL TLS صحیح را برای پورتال دارد.

گره های API BaaS را برای TLS در پشته یا پورتال پیکربندی کنید

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

  • شامل یک URL در پاسخ‌ها در درخواست‌های 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 را با URL متعادل کننده بار جایگزین کنید. اگر متعادل کننده بار برای استفاده از TLS پیکربندی شده است، از پروتکل HTTPS استفاده کنید. اگر از یک پورت غیر استاندارد استفاده می کنید، فقط باید پورت را اضافه کنید، به این معنی که چیزی غیر از پورت 80 برای HTTP و پورت 443 برای HTTPS.

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

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

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

اگر از یک متعادل کننده بار در مقابل گره Portal استفاده می کنید یا 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 را با URL متعادل کننده بار جایگزین کنید. اگر متعادل کننده بار برای استفاده از TLS پیکربندی شده است، از پروتکل HTTPS استفاده کنید. اگر از یک پورت غیر استاندارد استفاده می کنید، فقط باید پورت را اضافه کنید، به این معنی که چیزی غیر از پورت 80 برای HTTP و پورت 443 برای HTTPS.

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

  1. گره Stack را پیکربندی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid پیکربندی
  2. اعمال تغییرات در Tomcat:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy
  3. پشته BaaS را مجددا راه اندازی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid راه اندازی مجدد
  4. اگر portal.properties را تغییر دادید، گره Portal را پیکربندی کنید:
    > /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