پیکربندی دسترسی TLS به یک API برای Private Cloud

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

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

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

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

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

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

  • نام دامنه عمومی میزبان مجازی. به عنوان مثال، باید بدانید که آیا نام عمومی آن api.myCompany.com ، myapi.myCompany.com و غیره است. این اطلاعات هنگام ایجاد میزبان مجازی و همچنین هنگام ایجاد رکورد DNS برای میزبان مجازی استفاده می شود.
  • برای TLS یک طرفه ، باید یک keystore ایجاد کنید که در آن keystore شامل موارد زیر باشد:
    • گواهی TLS - یا گواهی امضا شده توسط یک مرجع گواهی (CA)، یا زنجیره ای از گواهی ها که در آن آخرین گواهی توسط یک CA امضا شده است.
    • کلید خصوصی - Edge از اندازه کلید تا 2048 بیت پشتیبانی می کند. عبارت عبور اختیاری است.
  • برای TLS دو طرفه ، به یک فروشگاه کلید نیاز دارید و به یک Truststore برای نگهداری گواهی مشتری و به صورت اختیاری، زنجیره CA گواهی نیاز دارید. شما به Truststore نیاز دارید حتی اگر گواهی توسط یک CA امضا شده باشد.

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

پیکربندی میزبان مجازی برای TLS

برای ایجاد یک میزبان مجازی، یک شی XML ایجاد کنید که میزبان مجازی را تعریف کند. شی XML زیر از عنصر <SSLInfo> برای تعریف میزبان مجازی برای پیکربندی TLS یک طرفه از طریق 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> برای فعال کردن TLS یک طرفه روی true تنظیم شده است، و عناصر <KeyStore> و KeyAlias> ذخیره کلید و کلید مورد استفاده توسط اتصال TLS را مشخص می کنند.

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

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

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

مزیت استفاده از مرجع این است که می توانید مقدار مرجع را تغییر دهید تا ذخیره کلید مورد استفاده میزبان مجازی را تغییر دهید، معمولاً به این دلیل که گواهی در فروشگاه کلید فعلی در آینده نزدیک منقضی می شود. تغییر مقدار مرجع نیازی به راه اندازی مجدد Edge Router ندارد.

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

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

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

  • تنها در صورتی می‌توانید از منابع ذخیره کلید و Truststore در میزبان‌های مجازی استفاده کنید که از SNI پشتیبانی کنید و SSL را در روترهای Apigee خاتمه دهید.
  • اگر در جلوی روترهای Apigee یک Load Balanser دارید و TLS را در Load Balanser خاتمه می‌دهید، پس نمی‌توانید از منابع keystore و truststore در میزبان‌های مجازی استفاده کنید.

تغییر یک میزبان مجازی موجود برای استفاده از ارجاعات به keystore و truststore

Apigee اکیداً توصیه می‌کند که میزبان‌های مجازی از ارجاع به keystores و truststores استفاده کنند. مراجع به شما امکان می‌دهند که keystore و truststore مورد استفاده توسط میزبان مجازی را بدون نیاز به راه‌اندازی مجدد روترهای Edge تغییر دهید.

اگر هاست های مجازی شما در حال حاضر برای استفاده از نام تحت اللفظی keystore یا truststore پیکربندی شده اند، می توانید آنها را به استفاده از منابع تبدیل کنید. برای انجام این کار، میزبان مجازی را برای استفاده از مراجع به روز کنید و سپس Edge Routers را مجددا راه اندازی کنید.

تنظیم رمزها و پروتکل های TLS برای Edge 4.15.07 و نسخه های قبلی

اگر از 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> از نام جاوا و JSSE رمز استفاده می کند. برای مثال، برای جاوا 8 به http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites مراجعه کنید.

مشخص کردن رمزها و پروتکل های TLS برای Edge 4.16.01 تا 4.16.09

در Edge 4.16.01 تا 4.16.09، رمزها و پروتکل‌های پیش‌فرض را برای میزبان‌های مجازی در سطح جهانی روی روتر تنظیم می‌کنید. سپس این پیش‌فرض‌ها برای همه میزبان‌های مجازی اعمال می‌شود.

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

  • برای تعیین پروتکل های پیش فرض، از توکن 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 TLS پشتیبانی می کند. یک لیست با فاصله محدود از مقادیر به نشانه مشخص کنید.

مقدار پیش فرض توکن 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

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

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

برای اطلاعات در مورد نحو و مقادیر مجاز این نشانه، رمزهای OpenSSL را ببینید. توجه داشته باشید که این نشانه از نام‌های رمز OpenSSL مانند AES128-SHA256 استفاده می‌کند و نه از نام‌های رمز جاوا/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. راه‌اندازی مجدد Edge Router:
    /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

تنظیم پارامترهای میزبان مجازی TLS برای Edge نسخه 4.17.01 و بالاتر

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

به عنوان مثال:

<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 استفاده می‌کند و نه از نام‌های رمز جاوا/JSSE، مانند TLS_RSA_WITH_AES_128_CBC_SHA256.

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

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

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

  1. با استفاده از روشی که در اینجا توضیح داده شده است، یک keystore به نام myTestKeystores ایجاد و پیکربندی کنید: Keystores و Truststores . اطمینان حاصل کنید که فروشگاه کلید از نام مستعار myKeyAlias ​​برای گواهی و کلید خصوصی استفاده می کند.
  2. از فراخوانی POST API زیر برای ایجاد مرجعی به نام keystoreref به 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="keystoreref">
        <Refers>myTestKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
      </ResourceReference>'
      -u email:password
    

    مرجع نام keystore و نوع مرجع را KeyStore مشخص می کند.

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

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
    
  3. میزبان مجازی را با استفاده از Create a Virtual Host 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. یک رکورد DNS برای میزبان مجازی ایجاد کنید که با نام مستعار میزبان مطابقت داشته باشد.
  5. اگر پروکسی های API موجود دارید، میزبان مجازی را به عنصر <HTTPConnection> در ProxyEndpoint اضافه کنید. میزبان مجازی به طور خودکار به تمام پراکسی های API جدید اضافه می شود.

    به روز رسانی یک پروکسی API پس از ایجاد یک میزبان مجازی در درباره میزبان های مجازی را ببینید.

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

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

به عنوان مثال:

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

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

می‌توانید به‌صورت اختیاری میزبان مجازی را طوری پیکربندی کنید که به جای آن از یک مرجع به keystore یا truststore استفاده کند. مزیت استفاده از مرجع این است که می‌توانید مرجع را به‌روزرسانی کنید تا به یک فروشگاه کلید یا Truststore دیگر برای به‌روزرسانی گواهی 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>

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

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

برای اینکه بعداً مرجع را تغییر دهید تا به یک فروشگاه کلید دیگر اشاره کند، و مطمئن شوید که نام مستعار همان نام است، از فراخوانی 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