پیکربندی TLS از Edge به Backend (Cloud و Private Cloud)

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

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

TargetEndpoint معادل خروجی ProxyEndpoint است. یک TargetEndpoint به عنوان یک کلاینت HTTP از Edge به یک سرویس backend عمل می‌کند. هنگام ایجاد یک پروکسی API، می‌توانید آن را طوری پیکربندی کنید که از صفر یا چند TargetEndpoint استفاده کند.

بیشتر بدانید:

پیکربندی یک TargetEndpoint یا TargetServer

برای پیکربندی یک TargetEndpoint، شیء XML که TargetEndpoint را تعریف می‌کند، ویرایش کنید. می‌توانید TargetEndpoint را با ویرایش فایل XML که TargetEndpoint را در پروکسی API شما تعریف می‌کند، ویرایش کنید، یا آن را در رابط کاربری مدیریت Edge ویرایش کنید.

برای استفاده از رابط کاربری مدیریت Edge برای ویرایش TargetEndpoint:

  1. به رابط کاربری مدیریت Edge در آدرس https://enterprise.apigee.com وارد شوید.
  2. نام پروکسی API را برای به‌روزرسانی انتخاب کنید.
  3. برگه توسعه را انتخاب کنید.
  4. در قسمت Target Endpoints ، گزینه default را انتخاب کنید.
  5. در قسمت کد، تعریف TargetEndpoint، مشابه زیر، ظاهر می‌شود:
    <TargetEndpoint name="default">
      <Description/>
      <FaultRules/>
      <Flows/>
      <PreFlow name="PreFlow">
        <Request/>
        <Response/>
      </PreFlow>
      <PostFlow name="PostFlow">
        <Request/>
        <Response/>
      </PostFlow>
      <HTTPTargetConnection>
        <Properties/>
        <SSLInfo>
          <Enabled>true</Enabled>
          <TrustStore>ref://myTrustStoreRef</TrustStore>
        </SSLInfo>
        <URL>https://mocktarget.apigee.net</URL>
      </HTTPTargetConnection>
    </TargetEndpoint>
  6. یک truststore را همانطور که در ادامه در بخش «درباره پیکربندی TLS با backend» توضیح داده شده است، پیکربندی کنید.
  7. هرگونه تغییری ایجاد کنید و پروکسی را ذخیره کنید. اگر پروکسی API مستقر شده باشد، ذخیره آن، آن را با تنظیمات جدید مجدداً مستقر می‌کند.

توجه داشته باشید که تعریف TargetEndpoint شامل یک ویژگی name است. شما از مقدار ویژگی name برای پیکربندی تعریف ProxyEndpoint یک پروکسی API برای استفاده از TargetEndpoint استفاده می‌کنید. برای اطلاعات بیشتر به مرجع پیکربندی پروکسی API مراجعه کنید.

نقاط هدف (TargetEndpoints) را می‌توان طوری پیکربندی کرد که به جای آدرس اینترنتی (URL) هدف صریح، به یک سرور هدف (TargetServer) ارجاع دهند. پیکربندی TargetServer، آدرس‌های اینترنتی (URL) نقاط پایانی واقعی را از پیکربندی‌های TargetEndpoint جدا می‌کند. سرورهای هدف برای پشتیبانی از متعادل‌سازی بار و failover در چندین نمونه سرور backend استفاده می‌شوند.

در زیر نمونه‌ای از تعریف TargetServer نشان داده شده است:

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>80</Port>
  <IsEnabled>true</IsEnabled>
</TargetServer> 

یک TargetServer با نام در عنصر <HTTPTargetConnection> در تعریف TargetEndpoint ارجاع داده می‌شود. می‌توانید یک یا چند TargetServer با نام را پیکربندی کنید، همانطور که در زیر نشان داده شده است.

<TargetEndpoint name="default">
  ...
  <HTTPTargetConnection>
    <LoadBalancer>
      <Server name="target1" />
      <Server name="target2" />
    </LoadBalancer>
    <Path>/test</Path>
  </HTTPTargetConnection>
  ...
</TargetEndpoint>

برای اطلاعات بیشتر به متعادل‌سازی بار در سرورهای backend مراجعه کنید.

درباره پیکربندی TLS با backend

قبل از پیکربندی دسترسی TLS به backend، باید دو نکته مهم را درک کنید:

  1. به طور پیش‌فرض، Edge گواهی backend را اعتبارسنجی نمی‌کند. شما باید یک truststore ایجاد کنید تا Edge را برای اعتبارسنجی گواهی پیکربندی کنید.
  2. از یک مرجع برای مشخص کردن keystore یا truststore مورد استفاده توسط Edge استفاده کنید.

هر دو ملاحظه در زیر شرح داده شده است.

تعریف یک فروشگاه اعتماد برای فعال کردن اعتبارسنجی گواهی

هنگام ارسال درخواست TLS از طریق TargetEndpoint یا TargetServer، Edge به طور پیش‌فرض گواهی TLS دریافتی از سرور backend را اعتبارسنجی نمی‌کند . این بدان معناست که Edge موارد زیر را اعتبارسنجی نمی‌کند :

  • این گواهی توسط یک مرجع صدور گواهی معتبر امضا شده است.
  • گواهی منقضی نشده است.
  • این گواهی یک نام مشترک ارائه می‌دهد. اگر نام مشترکی وجود داشته باشد، Edge اعتبارسنجی نمی‌کند که نام مشترک با نام میزبان مشخص شده در URL مطابقت داشته باشد.

برای پیکربندی Edge جهت اعتبارسنجی گواهی backend، باید:

  1. یک فروشگاه اعتماد در Edge ایجاد کنید.
  2. گواهی سرور یا زنجیره گواهی را در truststore آپلود کنید. اگر گواهی سرور توسط شخص ثالثی امضا شده باشد، باید زنجیره کامل گواهی، از جمله گواهی CA ریشه، را در truststore آپلود کنید. هیچ CA به طور ضمنی مورد اعتماد وجود ندارد.
  3. truststore را به تعریف TargetEndpoint یا TargetServer اضافه کنید.

برای اطلاعات بیشتر به Keystores و Truststores مراجعه کنید.

برای مثال:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

استفاده از ارجاع به یک فروشگاه کلید یا فروشگاه اعتماد

مثال زیر نحوه پیکربندی یک TargetEndpoint یا TargetServer برای پشتیبانی از TLS را نشان می‌دهد. به عنوان بخشی از پیکربندی TLS، شما یک truststore و keystore را به عنوان بخشی از تعریف TargetEndpoint یا TargetServer مشخص می‌کنید.

شرکت Apigee اکیداً توصیه می‌کند که در تعریف TargetEndpoints یا TargetServer از یک مرجع به keystore و truststore استفاده کنید. مزیت استفاده از یک مرجع این است که شما فقط باید مرجع را به‌روزرسانی کنید تا به یک keystore یا truststore متفاوت اشاره کند و گواهی TLS را به‌روزرسانی کنید.

ارجاعات به keystoreها و truststoreها در تعریف TargetEndpoints یا TargetServer به همان روشی که برای میزبان‌های مجازی انجام می‌شود، عمل می‌کنند.

تبدیل یک TargetEndpoint یا TargetServer برای استفاده از یک مرجع

ممکن است تعاریف TargetEndpoint یا TargetServer موجود داشته باشید که از نام تحت‌اللفظی keystore و truststore استفاده می‌کنند. برای تبدیل تعریف TargetEndpoint یا TargetServer به استفاده از ارجاعات:

  1. تعریف TargetEndpoint یا TargetServer را برای استفاده از یک مرجع به‌روزرسانی کنید.
  2. پردازنده‌های پیام لبه را مجدداً راه‌اندازی کنید:
    • برای مشتریان فضای ابری عمومی ، برای راه‌اندازی مجدد پردازشگرهای پیام، با پشتیبانی Apigee Edge تماس بگیرید.
    • برای مشتریان ابر خصوصی ، پردازنده‌های پیام لبه را یکی یکی مجدداً راه‌اندازی کنید.
  3. تأیید کنید که TargetEndpoint یا TargetServer شما به درستی کار می‌کند.

پیکربندی TLS یک طرفه برای سرور backend

هنگام استفاده از تعریف TargetEndpoint، پیکربندی دسترسی یک‌طرفه TLS از Edge (کلاینت TLS) به سرور backend (سرور TLS) نیازی به هیچ پیکربندی اضافی در Edge ندارد. پیکربندی صحیح TLS به سرور backend بستگی دارد.

شما فقط باید مطمئن شوید که عنصر <URL> در تعریف TargetEndpoint به سرویس backend توسط پروتکل HTTPS ارجاع می‌دهد و TLS را فعال کرده‌اید:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

اگر از TargetServer برای تعریف سرویس backend استفاده می‌کنید، TLS را در تعریف TargetServer فعال کنید:

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
  </SSLInfo> 
</TargetServer> 

با این حال، اگر می‌خواهید Edge گواهی backend را تأیید کند، باید یک truststore ایجاد کنید که شامل گواهی backend یا زنجیره گواهی باشد. سپس truststore را در تعریف TargetEndpoint مشخص می‌کنید:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

یا در تعریف TargetServer:

<TargetServer name="target1">
  <Host>mockserver.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
    <TrustStore>ref://myTrustStoreRef</TrustStore>
  </SSLInfo> 
</TargetServer>

برای پیکربندی TLS یک طرفه:

  1. اگر می‌خواهید گواهی backend را اعتبارسنجی کنید ، یک truststore در Edge ایجاد کنید و همانطور که در Keystores و Truststores توضیح داده شده است، گواهی backend یا زنجیره CA را آپلود کنید. برای این مثال، اگر مجبور به ایجاد یک truststore هستید، نام آن را myTrustStore بگذارید.
  2. اگر یک truststore ایجاد کرده‌اید، از فراخوانی POST API زیر برای ایجاد مرجعی با نام myTrustStoreRef به truststore که در بالا ایجاد کرده‌اید، استفاده کنید:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
      -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
      </ResourceReference>' -u email:password
    
  3. از رابط کاربری مدیریت Edge برای به‌روزرسانی تعریف TargetEndpoint برای پروکسی API استفاده کنید (یا اگر پروکسی API را در XML تعریف می‌کنید، فایل‌های XML مربوط به پروکسی را ویرایش کنید):
    1. از طریق آدرس https://enterprise.apigee.com وارد رابط کاربری مدیریت Edge شوید.
    2. در منوی رابط کاربری مدیریت Edge، APIها را انتخاب کنید.
    3. نام پروکسی API را برای به‌روزرسانی انتخاب کنید.
    4. برگه توسعه را انتخاب کنید.
    5. در قسمت Target Endpoints ، گزینه default را انتخاب کنید.
    6. در قسمت کد، عنصر <HTTPTargetConnection> را ویرایش کنید تا عنصر <SSLInfo> اضافه شود. مطمئن شوید که مرجع truststore صحیح را مشخص کرده و <Enabled> روی true تنظیم کنید:
      <TargetEndpoint name="default">
        …
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <TrustStore>ref://myTrustStoreRef</TrustStore>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        …
      </TargetEndpoint>
    7. پروکسی API را ذخیره کنید. اگر پروکسی API مستقر شده باشد، ذخیره آن، آن را با تنظیمات جدید مجدداً مستقر می‌کند.

پیکربندی TLS دوطرفه برای سرور backend

اگر می‌خواهید از TLS دوطرفه بین Edge (کلاینت TLS) و سرور backend (سرور TLS) پشتیبانی کنید:

  • یک keystore در Edge ایجاد کنید و گواهی Edge و کلید خصوصی را آپلود کنید.
  • اگر می‌خواهید گواهی backend را اعتبارسنجی کنید، یک truststore در Edge ایجاد کنید که شامل زنجیره گواهی و CA دریافتی از سرور backend باشد.
  • برای پیکربندی دسترسی TLS، TargetEndpoint هر پروکسی API که به سرور backend ارجاع می‌دهد را به‌روزرسانی کنید.

استفاده از نام مستعار کلید برای مشخص کردن گواهی فروشگاه کلید

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

به صورت اختیاری، می‌توانید Edge را طوری پیکربندی کنید که از گواهی مشخص شده توسط ویژگی <KeyAlias> استفاده کند. این به شما امکان می‌دهد یک keystore واحد برای چندین گواهی تعریف کنید، سپس گواهی مورد نظر خود را در تعریف TargetServer انتخاب کنید. اگر Edge نتواند گواهی با نام مستعاری که با <KeyAlias> مطابقت دارد پیدا کند، از اقدام پیش‌فرض انتخاب اولین گواهی در keystore استفاده می‌کند.

کاربران Edge برای فضای ابری عمومی باید برای فعال کردن این ویژگی با پشتیبانی Apigee Edge تماس بگیرند.

پیکربندی TLS دوطرفه

برای پیکربندی TLS دوطرفه:

  1. با استفاده از روشی که در اینجا توضیح داده شده است، یک keystore در Edge ایجاد کنید و کلید گواهی و خصوصی را آپلود کنید: Keystores and Truststores . برای این مثال، یک keystore با نام myTestKeystore ایجاد کنید که از نام مستعار myKey برای کلید گواهی و خصوصی استفاده می‌کند.
  2. از فراخوانی POST API زیر برای ایجاد مرجعی با نام myKeyStoreRef برای keystore که در بالا ایجاد کردید، استفاده کنید:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myKeyStoreRef">
        <Refers>myTestKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    

    این ارجاع، نام کلید ذخیره شده و نوع ارجاع را KeyStore مشخص می‌کند.

    برای مشاهده مرجع از فراخوانی API GET زیر استفاده کنید:

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/myKeyStoreRef /
    -u email:password
    
  3. اگر می‌خواهید گواهی backend را اعتبارسنجی کنید ، یک truststore در Edge ایجاد کنید و زنجیره گواهی و CA را همانطور که در اینجا توضیح داده شده است آپلود کنید: Keystores و Truststores . برای این مثال، اگر مجبور به ایجاد یک truststore هستید، نام آن را myTrustStore بگذارید.
  4. اگر یک truststore ایجاد کرده‌اید، از فراخوانی POST API زیر برای ایجاد مرجعی با نام myTrustStoreRef به truststore که در بالا ایجاد کرده‌اید، استفاده کنید:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    
  5. از رابط کاربری مدیریت Edge برای به‌روزرسانی تعریف TargetEndpoint برای پروکسی API استفاده کنید (یا اگر پروکسی API را در XML تعریف می‌کنید، فایل‌های XML مربوط به پروکسی را ویرایش کنید):
    1. به رابط کاربری مدیریت Edge در آدرس https://enterprise.apigee.com وارد شوید.
    2. در منوی رابط کاربری مدیریت Edge، APIها را انتخاب کنید.
    3. نام پروکسی API را برای به‌روزرسانی انتخاب کنید.
    4. برگه توسعه را انتخاب کنید.
    5. در قسمت Target Endpoints ، گزینه default را انتخاب کنید.
    6. در قسمت کد، عنصر <HTTPTargetConnection> را ویرایش کنید تا عنصر <SSLInfo> اضافه شود. مطمئن شوید که keystore و key alias صحیح را مشخص کرده‌اید و هر دو عنصر <Enabled> و <ClientAuthEnabled> را روی true تنظیم کنید:
      <TargetEndpoint name="default">
        ...
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <ClientAuthEnabled>true</ClientAuthEnabled>
            <KeyStore>ref://myKeyStoreRef</KeyStore>
            <KeyAlias>myKey</KeyAlias>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        ...
      </TargetEndpoint>
    7. پروکسی API را ذخیره کنید. اگر پروکسی API مستقر شده باشد، ذخیره آن، آن را با تنظیمات جدید مجدداً مستقر می‌کند.

برای اطلاعات بیشتر در مورد گزینه‌های موجود در <TargetEndpoint> ، از جمله استفاده از متغیرها برای تأمین مقادیر <SSLInfo> در TargetEndpoint، به مرجع پیکربندی پروکسی API مراجعه کنید.

فعال کردن SNI

Edge از استفاده از نشانگر نام سرور (SNI) از پردازنده‌های پیام برای هدف قرار دادن نقاط انتهایی در Apigee Edge برای ابر و برای استقرارهای ابر خصوصی پشتیبانی می‌کند.

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