پیکربندی SNI بین Edge Message Processor و سرور Backend

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

نشانگر نام سرور (SNI) به چندین سرور پشتی HTTPS اجازه می‌دهد تا از یک آدرس IP و پورت یکسان سرویس‌دهی شوند، بدون اینکه لازم باشد آن سرورهای پشتی از یک گواهی TLS یکسان استفاده کنند. این یک افزونه از پروتکل TLS است. هنگامی که SNI روی یک کلاینت فعال می‌شود، کلاینت نام میزبان سرور پشتی را به عنوان بخشی از فرآیند اولیه TLS handshake ارسال می‌کند. این به سرور TLS اجازه می‌دهد تا تعیین کند که از کدام گواهی TLS باید برای اعتبارسنجی درخواست کلاینت استفاده شود.

به طور پیش‌فرض، SNI در مؤلفه‌ی پردازشگر پیام در Edge برای Private Cloud غیرفعال است تا سازگاری با سرورهای backend موجود تضمین شود. اگر سرور backend شما برای پشتیبانی از SNI پیکربندی شده است، باید SNI را در مؤلفه‌ی پردازشگر پیام فعال کنید. در غیر این صورت، درخواست‌های API که از Apigee Edge عبور می‌کنند با خطای TLS Handshake Failures مواجه می‌شوند.

این سند نحوه انجام موارد زیر را توضیح می‌دهد:

قبل از اینکه شروع کنی

شناسایی سرور فعال‌شده با SNI

این بخش نحوه تشخیص فعال بودن یا نبودن SNI در سرور backend را شرح می‌دهد.

  1. دستور openssl اجرا کنید و سعی کنید بدون وارد کردن نام سرور، به نام میزبان سرور مربوطه (روتر لبه‌ای یا سرور backend) متصل شوید، همانطور که در زیر نشان داده شده است:
    openssl s_client -connect hostname:port
  2. ممکن است گواهینامه‌ها را دریافت کنید و گاهی اوقات ممکن است در دستور openssl با خطای handshake مواجه شوید، همانطور که در زیر نشان داده شده است:
    CONNECTED(00000003) 9362:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_clnt.c:593
  3. دستور openssl اجرا کنید و سعی کنید با وارد کردن نام سرور مطابق شکل زیر، به نام میزبان سرور مربوطه (روتر Edge یا سرور backend) متصل شوید:
    openssl s_client -connect hostname:port -servername hostname
  4. اگر در مرحله ۱ با خطای handshake مواجه شدید یا در مرحله ۱ و مرحله ۲ گواهی‌های متفاوتی دریافت کردید، نشان می‌دهد که سرور مشخص شده SNI فعال است.
  5. اگر می‌خواهید این موضوع را برای بیش از یک سرور backend تأیید کنید، باید مراحل بالا را برای هر سرور backend تکرار کنید.

اگر متوجه شدید که یک یا چند سرور backend دارید که SNI در آنها فعال است، باید SNI را در کامپوننت Message Processor همانطور که در زیر توضیح داده شده است فعال کنید. در غیر این صورت، درخواست‌های API که از Apigee Edge عبور می‌کنند با خطای TLS Handshake Failures مواجه می‌شوند.

فعال کردن SNI بین پردازنده‌های پیام لبه و سرور backend

این بخش نحوه فعال‌سازی SNI بین پردازنده پیام Edge و سرور backend را توضیح می‌دهد. SNI را می‌توان از طریق ویژگی jsse.enableSNIExtension در مؤلفه پردازنده پیام فعال کرد. برای پیکربندی هر ویژگی در پردازنده پیام، از توکن مطابق با سینتکس شرح داده شده در نحوه پیکربندی Edge استفاده کنید.

برای فعال کردن SNI در پردازنده‌های پیام، مراحل زیر را انجام دهید:

  1. توکن مربوط به ویژگی jsse.enableSNIExtension را پیدا کنید.
  2. فعال کردن SNI در پردازشگر پیام

توکن مربوط به ویژگی jsse.enableSNIExtension را پیدا کنید.

مراحل زیر نحوه‌ی یافتن توکن برای ویژگی jsse.enableSNIExtension را شرح می‌دهد:

  1. با استفاده از دستور زیر، ویژگی jsse.enableSNIExtension را در دایرکتوری منبع Message Processor /opt/apigee/edge-message-processor/source جستجو کنید:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
  2. خروجی این دستور، توکن مربوط به ویژگی jsse.enableSNIExtension از پردازنده پیام را به شرح زیر نشان می‌دهد:
    /opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}

    که در آن رشته بین تگ‌های {T}{/T} نام توکنی است که می‌توانید در فایل .properties پردازنده پیام تنظیم کنید.

    بنابراین، توکن مربوط به ویژگی jsse.enableSNIExtension به شرح زیر است:

    conf_system_jsse.enableSNIExtension

فعال کردن SNI در پردازشگر پیام

مراحل زیر نحوه فعال کردن SNI را در کامپوننت پردازشگر پیام Apigee شرح می‌دهد.

  1. در دستگاه پردازشگر پیام، فایل زیر را در یک ویرایشگر باز کنید. اگر از قبل وجود ندارد، آن را ایجاد کنید.
    /opt/apigee/customer/application/message-processor.properties

    برای مثال، برای باز کردن فایل با استفاده از vi ، دستور زیر را وارد کنید:

    vi /opt/apigee/customer/application/message-processor.properties
  2. یک خط با فرمت زیر به فایل properties اضافه کنید:
    conf_system_jsse.enableSNIExtension=true
  3. تغییرات خود را ذخیره کنید.
  4. مطمئن شوید که این فایل ویژگی‌ها متعلق به کاربر apigee است، همانطور که در زیر نشان داده شده است:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. پردازشگر پیام را مطابق شکل زیر مجدداً راه‌اندازی کنید:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. بررسی کنید که پیکربندی SNI در پردازنده پیام به‌روزرسانی شده باشد.
  7. اگر بیش از یک پردازنده پیام دارید، مراحل بالا را روی همه پردازنده‌های پیام تکرار کنید.

غیرفعال کردن SNI بین پردازنده‌های پیام لبه و سرور backend

معمولاً پس از فعال کردن SNI نباید هیچ مشکلی مشاهده کنید. با این حال، اگر پس از فعال کردن SNI، هرگونه مشکل اتصال بین Edge Message Processor و سرور backend مشاهده کردید، همیشه می‌توانید SNI را با انجام مراحل زیر غیرفعال کنید.

SNI را می‌توان با تنظیم مجدد ویژگی jsse.enableSNIExtension به false در کامپوننت Message Processor غیرفعال کرد.

غیرفعال کردن SNI در پردازنده‌های پیام

مراحل زیر نحوه غیرفعال کردن SNI در پردازنده‌های پیام Apigee را شرح می‌دهد.

  1. در دستگاه پردازشگر پیام، فایل زیر را در یک ویرایشگر باز کنید. اگر از قبل وجود ندارد، آن را ایجاد کنید.
    /opt/apigee/customer/application/message-processor.properties

    برای مثال، برای باز کردن فایل با استفاده از vi ، دستور زیر را وارد کنید:

    vi /opt/apigee/customer/application/message-processor.properties
  2. اگر خط conf_system_jsse.enableSNIExtension=true در /opt/apigee/customer/application/message-processor.properties وجود دارد، آن را به صورت زیر تغییر دهید:
    conf_system_jsse.enableSNIExtension=false
  3. تغییرات خود را ذخیره کنید.
  4. مطمئن شوید که این فایل ویژگی‌ها متعلق به کاربر apigee است، همانطور که در زیر نشان داده شده است:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. پردازشگر پیام را مطابق شکل زیر مجدداً راه‌اندازی کنید:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. بررسی کنید که پیکربندی SNI در پردازنده پیام به‌روزرسانی شده باشد.
  7. اگر بیش از یک پردازشگر پیام دارید، مراحل بالا را روی همه پردازشگرهای پیام تکرار کنید.

تأیید پیکربندی SNI در پردازنده‌های پیام

این بخش نحوه تأیید به‌روزرسانی موفقیت‌آمیز پیکربندی SNI در پردازنده‌های پیام را توضیح می‌دهد.

حتی اگر از توکن conf_system_jsse.enableSNIExtension برای پیکربندی SNI در پردازنده پیام استفاده می‌کنید، باید تأیید کنید که ویژگی واقعی jsse.enableSNIExtension با مقدار جدید تنظیم شده است.

  1. در دستگاه پردازشگر پیام، در دایرکتوری /opt/apigee/edge-message-processor/conf به دنبال ویژگی jsse.enableSNIExtension بگردید و بررسی کنید که آیا مطابق شکل زیر با مقدار جدید تنظیم شده است یا خیر:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
  2. اگر پیکربندی SNI با موفقیت در پردازنده پیام به‌روزرسانی شود، دستور بالا مقدار جدید را در فایل system.properties نشان می‌دهد.

    نتیجه نمونه از دستور بالا پس از فعال کردن SNI در پردازنده پیام به شرح زیر است:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=true

    به طور مشابه، نتیجه نمونه از دستور بالا پس از غیرفعال کردن SNI در پردازنده پیام به شرح زیر است:

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=false

    در خروجی مثال بالا، توجه داشته باشید که ویژگی jsse.enableSNIExtension در system.properties به مقدار جدید true یا false به‌روزرسانی شده است. این نشان می‌دهد که SNI با موفقیت در پردازنده پیام فعال یا غیرفعال شده است.

  3. اگر هنوز مقدار قدیمی ویژگی jsse.enableSNIExtension را مشاهده می‌کنید، تأیید کنید که تمام مراحل ذکر شده در بخش مربوطه را برای فعال یا غیرفعال کردن SNI به درستی دنبال کرده‌اید. اگر هر مرحله‌ای را از دست داده‌اید، تمام مراحل را دوباره به درستی تکرار کنید.
  4. اگر هنوز قادر به فعال/غیرفعال کردن SNI نیستید، با پشتیبانی Apigee Edge تماس بگیرید.