پیکربندی دسترسی «امنیت لایه انتقال» به میانای برنامه‌سازی کاربردی برای «ابر خصوصی»

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

میزبان مجازی در Edge دامنه‌ها و درگاه‌هایی را که یک پراکسی API در آن‌ها نمایان می‌شود تعریف می‌کند و، به‌تبع آن، نشانی وب که برنامه‌ها برای دسترسی به پراکسی API استفاده می‌کنند.

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

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

آنچه برای ایجاد میزبان مجازی نیاز دارید

قبل‌از ایجاد میزبان مجازی، باید اطلاعات زیر را داشته باشید:

  • نام دامنه میزبان مجازی که به‌صورت عمومی قابل‌دسترسی است. برای مثال، باید بدانید که آیا نام عمومی api.myCompany.com، myapi.myCompany.com، و غیره است. این اطلاعات هنگام ایجاد میزبان مجازی و همچنین هنگام ایجاد گزارش ساناد برای میزبان مجازی استفاده می‌شود.
  • برای «امنیت لایه انتقال» یک‌طرفه، باید یک انبار کلید ایجاد کنید که انبار کلید حاوی موارد زیر باشد:
    • گواهینامه TLS - یا گواهینامه‌ای که توسط مرجع صدور گواهی (CA) امضا شده است، یا زنجیره‌ای از گواهینامه‌ها که آخرین گواهینامه توسط مرجع صدور گواهی امضا شده است.
    • کلید خصوصی - Edge از اندازه‌های کلید تا ۲۰۴۸ بیت پشتیبانی می‌کند. استفاده از گذرعبارت اختیاری است.
  • برای TLS دوطرفه، به یک keystore و یک truststore برای نگهداری گواهینامه کارخواه و، به‌صورت اختیاری، زنجیره CA گواهینامه نیاز دارید. حتی اگر گواهی توسط مرجع صدور گواهی امضا شده باشد، به مخزن اعتماد نیاز دارید.

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

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

برای ایجاد میزبان مجازی، یک شیء XML ایجاد کنید که میزبان مجازی را تعریف می‌کند. شیء XML زیر از عنصر <SSLInfo> برای تعریف میزبان مجازی برای پیکربندی یک‌طرفه «امنیت لایه انتقال» ازطریق HTTPS استفاده می‌کند:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <OCSPStapling>off</OCSPStapling>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

در این مثال، عنصر <Enabled> روی درست تنظیم شده است تا «امنیت لایه انتقال» یک‌طرفه را فعال کند، و عناصر <KeyStore> و <KeyAlias> انبار کلید و کلید استفاده‌شده توسط اتصال «امنیت لایه انتقال» را مشخص می‌کنند.

برای فعال کردن «امنیت لایه انتقال» دوطرفه، عنصر <ClientAuthEnabled> را روی true تنظیم کنید و بااستفاده از عنصر <TrustStore> یک فروشگاه اطمینان مشخص کنید. «انبار اعتماد» گواهینامه کارخواه و، درصورت تمایل، زنجیره «مرجع صدور گواهی» گواهینامه را در خود نگه می‌دارد.

تصمیم‌گیری درباره نحوه مشخص کردن نام انبار کلید و انبار اعتماد در میزبان مجازی

در مثال میزبان مجازی بالا، بااستفاده از مرجع، انبار کلید را مشخص کردید. مرجع متغیری است که حاوی نام انبار کلید است، نه اینکه نام انبار کلید را مستقیماً مشخص کند.

مزیت استفاده از مرجع این است که می‌توانید مقدار مرجع را تغییر دهید تا انبار کلید استفاده‌شده توسط میزبان مجازی تغییر کند، معمولاً به این دلیل که گواهینامه در انبار کلید فعلی در آینده نزدیک منقضی می‌شود. تغییر مقدار مرجع نیازی به بازراه‌اندازی «مسیریاب لبه» ندارد.

یا می‌توانید از نام فروشگاه کلید تحت‌اللفظی در میزبان مجازی استفاده کنید. بااین‌حال، اگر میزبان مجازی را برای تغییر نام انبار کلید تغییر دهید، باید «مسیریاب‌های Edge» را بازراه‌اندازی کنید.

محدودیت‌های استفاده از ارجاع به keystore و truststore

هنگام استفاده از ارجاع به keystore و truststore باید محدودیت زیر را درنظر بگیرید:

  • فقط درصورتی می‌توانید از مرجع‌های keystore و truststore در میزبان‌های مجازی استفاده کنید که از SNI پشتیبانی کنید و SSL را در «مسیریاب‌های Apigee» خاتمه دهید.
  • اگر در مقابل «مسیرهای Apigee» ترازکننده بار دارید و «امنیت لایه انتقال» را در ترازکننده بار خاتمه می‌دهید، نمی‌توانید از مرجع‌های انبار کلید و انبار اعتماد در میزبان‌های مجازی استفاده کنید.

اصلاح میزبان مجازی موجود برای استفاده از ارجاع به keystore و truststore

‫Apigee قویاً توصیه می‌کند که میزبان‌های مجازی از ارجاع به keystore و truststore استفاده کنند. مرجع‌ها به شما امکان می‌دهند بدون نیاز به راه‌اندازی مجدد «مسیریاب‌های Edge»، فروشگاه کلید و فروشگاه اطمینان مورد استفاده میزبان مجازی را تغییر دهید.

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

تنظیم کردن رمزها و پروتکل‌های «امنیت لایه انتقال» برای Edge نسخه ۴.۱۵.۰۷ و نسخه‌های قدیمی‌تر

اگر از Edge نسخه 4.15.07 و نسخه‌های قدیمی‌تر استفاده می‌کنید، پروتکل TLS و رمزهای مورد استفاده میزبان مجازی را بااستفاده از برچسب‌های فرزند <Ciphers> و <Protocols> از برچسب <SSLInfo> تنظیم می‌کنید. این برچسب‌ها در جدول زیر شرح داده شده‌اند.

برای مثال:

    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>myTestKeystore</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
        <SSLInfo>
            <Enabled>true</Enabled>
            <ClientAuthEnabled>false</ClientAuthEnabled>
            <KeyStore>myTestKeystore</KeyStore>
            <KeyAlias>myKeyAlias</KeyAlias>
            <Ciphers>
                <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</Cipher>
                <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</Cipher>
            </Ciphers>
            <Protocols>
                <Protocol>TLSv1.2</Protocol>
            </Protocols>
        </SSLInfo>
   </SSLInfo>

برچسب <Cipher> از نام Java و JSSE رمزنگاری استفاده می‌کند. برای مثال، برای Java 8 به http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites مراجعه کنید.

مشخص کردن پروتکل‌ها و رمزهای TLS برای Edge نسخه ۴.۱۶.۰۱ تا ۴.۱۶.۰۹

در Edge نسخه ۴.۱۶.۰۱ تا ۴.۱۶.۰۹، رمزها و پروتکل‌های پیش‌فرض را برای میزبان‌های مجازی به‌صورت سراسری در «مسیریاب» تنظیم می‌کنید. این پیش‌فرض‌ها سپس برای همه میزبان‌های مجازی اعمال می‌شود.

از نشانه‌ها برای مشخص کردن پروتکل‌ها و رمزهای پیش‌فرض استفاده کنید:

  • برای مشخص کردن پروتکل‌های پیش‌فرض، از نشان conf_load_balancing_load.balancing.driver.server.ssl.protocols استفاده کنید
  • برای مشخص کردن رمزهای پیش‌فرض برای «مسیریاب»، از نشانه conf_load_balancing_load.balancing.driver.server.ssl.ciphers استفاده کنید

مقدار پیش‌فرض نشان conf_load_balancing_load.balancing.driver.server.ssl.protocols این است:

conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2

این تنظیم مشخص می‌کند که «مسیریاب» از نسخه‌های 1.0،‏ 1.1، و 1.2 «امنیت لایه انتقال» پشتیبانی می‌کند. فهرستی از مقادیر با جداساز فاصله را برای نشان مشخص کنید.

مقدار پیش‌فرض نشان conf_load_balancing_load.balancing.driver.server.ssl.ciphers این است:

conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES

این تنظیم مشخص می‌کند:

  • طول کلید ۱۲۸ بیت یا بیشتر الزامی است (HIGH).
  • حذف کردن رمزهای بدون اصالت‌سنجی (!aNULL)
  • مجموعه‌های رمزگذاری بااستفاده از MD5 را مستثنا کنید (!MD5)
  • مجموعه‌های رمز بااستفاده از DH (ازجمله DH ناشناس، DH موقت، و DH ثابت) و «دس سه‌گانه» (!DH+3DES) مستثنی شود
  • مجموعه‌های رمز را بااستفاده از تبادل کلید RSA و DES سه‌گانه مستثنا کنید (!RSA+3DES)

برای کسب اطلاعات درباره دستورگان و مقادیر مجاز این نشانه، به رمزهای OpenSSL مراجعه کنید. توجه داشته باشید که این کد از نام‌های رمز OpenSSL، مانند AES128-SHA256، استفاده می‌کند و نه از نام‌های رمز Java/JSSE، مانند TLS_RSA_WITH_AES_128_CBC_SHA256.

برای تنظیم کردن کد برای «رهیاب»:

  1. فایل /opt/apigee/customer/application/router.properties را ویرایش کنید. اگر آن فایل وجود ندارد، آن را ایجاد کنید.
  2. کد conf_load_balancing_load.balancing.driver.server.ssl.ciphers را تنظیم کنید. برای مثال، برای مشخص کردن فقط TLSv1.2 و کنار گذاشتن مجموعه‌های رمز بااستفاده از کلیدهای پیش‌هم‌رسانی‌شده، !PSK را اضافه کنید:
    conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2
    conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES:!PSK
  3. مطمئن شوید که فایل router.properties متعلق به apigee باشد:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  4. بازراه‌اندازی «رهیاب لبه»:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  5. مقدار کد را بررسی کنید:
    /opt/apigee/apigee-service/bin/apigee-service edge-router configure -search conf_load_balancing_load.balancing.driver.server.ssl.ciphers

تنظیم پارامترهای میزبان مجازی «امنیت لایه انتقال» برای Edge نسخه ۴.۱۷.۰۱ و نسخه‌های جدیدتر

اگر از Edge نسخه 4.17.01 و نسخه‌های جدیدتر استفاده می‌کنید، می‌توانید برخی‌از ویژگی‌های «امنیت لایه انتقال» را برای میزبان مجازی تک‌نفره، مثل پروتکل «امنیت لایه انتقال» و رمز، بااستفاده از برچسب فرزند <Properties> برچسب <VirtualHost> تنظیم کنید. این برچسب‌ها در مرجع دارایی میزبان مجازی توضیح داده شده‌اند.

برای مثال:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <OCSPStapling>off</OCSPStapling>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
    <Properties>
        <Property name="proxy_read_timeout">50</Property>
        <Property name="keepalive_timeout">300</Property>
        <Property name="proxy_request_buffering">off</Property>
        <Property name="proxy_buffering">off</Property>
        <Property name="ssl_protocols">TLSv1.2 TLSv1.1</Property>
        <Property name="ssl_ciphers">HIGH:!aNULL:!MD5:!DH+3DES:!kEDH</Property>
    </Properties>
</VirtualHost>

برای کسب اطلاعات درباره دستورگان و مقادیر مجاز توسط نشان ssl_ciphers، به رمزهای OpenSSL مراجعه کنید. توجه داشته باشید که این کد از نام‌های رمز OpenSSL، مانند AES128-SHA256، استفاده می‌کند و نه نام‌های رمز Java/JSSE، مانند TLS_RSA_WITH_AES_128_CBC_SHA256.

ایجاد میزبان مجازی که از HTTPS استفاده می‌کند

این مثال بااستفاده از مرجع، انبار کلید را برای میزبان مجازی مشخص می‌کند. استفاده از مرجع به شما امکان می‌دهد بدون نیاز به راه‌اندازی مجدد «مسیریاب‌ها»، انبار کلید را تغییر دهید.

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

  1. بااستفاده از رویه شرح‌داده‌شده در اینجا: Keystores و Truststores، یک keystore به‌نام myTestKeystore ایجاد و پیکربندی کنید. مطمئن شوید که محل ذخیره کلید از نام مستعار myKeyAlias برای گواهی و کلید خصوصی استفاده می‌کند.
  2. از فراخوانی API زیر با روش POST برای ایجاد مرجع با نام keystoreref برای مخزن کلیدی که در بالا ایجاد کردید استفاده کنید:

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

    مرجع نام فروشگاه کلید و نوع مرجع را به‌عنوان KeyStore مشخص می‌کند.

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

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
    
  3. میزبان مجازی را بااستفاده از API ایجاد میزبان مجازی ایجاد کنید، که در آن <ms-IP> نشانی IP یا نام دامنه گره «سرور مدیریت» است.

    حتماً مرجع keystore و نام مستعار کلید را به‌درستی مشخص کنید:

    curl -X POST -H "Content-Type:application/xml" \
      http://<ms-IP>:8080/v1/o/{org_name}/environments/{env_name}/virtualhosts \
      -d '<VirtualHost  name="newTLSTrustStore2">
        <HostAliases>
          <HostAlias>apiTLS.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>9005</Port>
        <OCSPStapling>off</OCSPStapling>
        <SSLInfo>
          <Enabled>true</Enabled>
          <ClientAuthEnabled>false</ClientAuthEnabled>
          <KeyStore>ref://keystoreref</KeyStore>
          <KeyAlias>myKeyAlias</KeyAlias>
        </SSLInfo>
      </VirtualHost>' \
      -u email:password
  4. گزارش سانادی برای میزبان مجازی بسازید که با نام مستعار میزبان مطابقت داشته باشد.
  5. اگر پراکسی‌های API موجود دارید، میزبان مجازی را به عنصر <HTTPConnection> در ProxyEndpoint اضافه کنید. میزبان مجازی به‌طور خودکار به همه پراکسی‌های جدید API اضافه می‌شود.

    در درباره میزبان‌های مجازی، به‌روزرسانی کارگزار میانای برنامه‌سازی کاربردی پس‌از ایجاد میزبان مجازی را ببینید.

پس‌از به‌روزرسانی کارگزار API برای استفاده از میزبان مجازی، و ایجاد گزارش ساناد برای نام مستعار میزبان، می‌توانید به کارگزار API دسترسی پیدا کنید، همان‌طور که در زیر نشان داده شده است:

https://apiTLS.myCompany.com/v1/{project-base-path}/{resource-path}

برای مثال:

https://apiTLS.myCompany.com/v1/weather/forecastrss?w=12797282

ایجاد و اصلاح کردن مرجع‌ها به انبار کلید یا انبار اعتماد

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

برای مثال، در زیر میزبان مجازی‌ای نشان داده شده است که از مرجعی برای انبار کلید استفاده می‌کند:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://keystoreref</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

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

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

مرجع نام فروشگاه کلید و نوع آن را مشخص می‌کند.

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

curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password

برای اینکه بعداً مرجع را تغییر دهید تا به انبار کلید دیگری اشاره کند، مطمئن شوید نام مستعار یکسان باشد، از تماس PUT زیر استفاده کنید:

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