ضبط أذونات وصول بروتوكول أمان طبقة النقل إلى واجهة برمجة التطبيقات للسحابة الإلكترونية الخاصة

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

يحدّد المضيف الافتراضي على Edge النطاقات والمنافذ التي يظهر عليها الخادم الوكيل لواجهة برمجة التطبيقات، وبالتالي، عنوان URL الذي تستخدمه التطبيقات للوصول إلى الخادم الوكيل لواجهة برمجة التطبيقات.

يحدّد المضيف الافتراضي أيضًا ما إذا كان يمكن الوصول إلى الخادم الوكيل لواجهة برمجة التطبيقات باستخدام بروتوكول HTTP أو بروتوكول HTTPS المشفّر الذي يستخدم بروتوكول أمان طبقة النقل. عند إعداد مضيف افتراضي لاستخدام HTTPS وبروتوكول أمان طبقة النقل (TLS)، أنشئ مضيفًا افتراضيًا على Edge وتضبط المضيف الافتراضي لاستخدام ملف تخزين المفاتيح ومتجر موثوق به.

مزيد من المعلومات:

متطلبات إنشاء مضيف افتراضي

قبل إنشاء مضيف افتراضي، يجب أن تتوفر لديك المعلومات التالية:

  • اسم النطاق العام للمضيف الظاهري. على سبيل المثال، عليك معرفة ما إذا كان الاسم المعروض للجميع هو api.myCompany.com أو myapi.myCompany.com أو ما إلى ذلك. وتُستخدَم هذه المعلومات عند إنشاء المضيف الافتراضي وأيضًا عند إنشاء سجلّ نظام أسماء النطاقات للمضيف الافتراضي.
  • بالنسبة إلى بروتوكول أمان طبقة النقل (TLS) الأحادي، يجب إنشاء ملف تخزين مفاتيح يتضمن ما يلي:
    • شهادة TLS: إما شهادة موقَّعة من مرجع تصديق (CA)، أو سلسلة من الشهادات وقّع فيها مرجع تصديق آخر شهادة.
    • المفتاح الخاص: يتوافق متصفّح Edge مع أحجام مفاتيح تصل إلى 2,048 بت. عبارة المرور اختيارية.
  • بالنسبة إلى بروتوكول أمان طبقة النقل (TLS) الثنائي، تحتاج إلى ملف تخزين مفاتيح وتحتاج إلى ملف تخزين موثوق به للاحتفاظ بشهادة العميل وسلسلة مرجع التصديق (CA) للشهادة إذا أردت. ويجب استخدام متجر Truststore حتى إذا كانت الشهادة موقَّعة من قِبل مرجع تصديق.

راجع ملفات تخزين المفاتيح ومخازن الثقة للحصول على مزيد من المعلومات حول إنشاء ملفات تخزين المفاتيح والصناديق الموثوق بها.

ضبط المضيف الافتراضي لبروتوكول أمان طبقة النقل (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) الأحادي الجانب، ويحدّد العنصران <KeyStore> و<KeyAlias> ملف تخزين المفاتيح والمفتاح اللذان يستخدمهما اتصال بروتوكول أمان طبقة النقل (TLS).

لتفعيل بروتوكول أمان طبقة النقل (TLS) الثنائي، يجب ضبط العنصر <ClientAuthEnabled> على true، وتحديد متجر موثوق به باستخدام العنصر <TrustStore>. يحتفظ مخزن الثقة بشهادة العميل، وسلسلة مرجع التصديق (CA) الخاصة بالشهادة بشكل اختياري.

تحديد كيفية تحديد اسم ملف تخزين المفاتيح واسم ملف الثقة في المضيف الافتراضي

في مثال المضيف الظاهري أعلاه، حددت ملف تخزين المفاتيح باستخدام مرجع. والمرجع هو متغيّر يحتوي على اسم ملف تخزين المفاتيح، بدلاً من تحديد اسم ملف تخزين المفاتيح مباشرةً.

وتتمثّل ميزة استخدام المرجع في أنّه يمكنك تغيير قيمة المرجع لتغيير ملف تخزين المفاتيح الذي يستخدمه المضيف الافتراضي، وعادةً ما يكون ذلك لأنّ الشهادة المتوفّرة في ملف تخزين المفاتيح الحالي ستنتهي صلاحيتها في المستقبل القريب. ولا يتطلب تغيير قيمة المرجع إعادة تشغيل جهاز توجيه Edge.

بدلاً من ذلك، يمكنك استخدام اسم ملف تخزين حرفي في المضيف الظاهري. ومع ذلك، إذا سبق لك تعديل المضيف الافتراضي لتغيير اسم ملف تخزين المفاتيح، يجب إعادة تشغيل أجهزة Edge Router.

قيود استخدام الإشارات إلى ملفات تخزين المفاتيح والمخزن الموثوق

يجب مراعاة القيود التالية عند استخدام مراجع لملفات تخزين المفاتيح ومخازن الثقة:

  • لا يمكنك استخدام مراجع ملف تخزين المفاتيح ومتجر الثقة إلا في الأجهزة المضيفة الافتراضية إذا كنت توفّر إشارة اسم الخادم (SNI) وألغيت طبقة المقابس الآمنة على أجهزة توجيه Apigee.
  • إذا كان لديك جهاز موازنة حمولة أمام أجهزة توجيه Apigee وتم إنهاء بروتوكول أمان طبقة النقل (TLS) في جهاز موازنة التحميل، لن تتمكن من استخدام مراجع ملف تخزين المفاتيح وملف Truststore في الأجهزة المضيفة الافتراضية.

تعديل المضيف الظاهري الحالي لاستخدام مراجع إلى ملف تخزين المفاتيح والمتجر الموثوق

تنصح Apigee بشدة باستخدام المضيفين الافتراضيين بالرجوع إلى ملفات تخزين المفاتيح ومخازن الثقة. تتيح لك المراجع تغيير ملف تخزين المفاتيح ومتجر الثقة اللذين يستخدمهما المضيف الافتراضي بدون الحاجة إلى إعادة تشغيل أجهزة توجيه Edge.

إذا تم إعداد الأجهزة المضيفة الافتراضية حاليًا لاستخدام الاسم الحرفي لملف تخزين المفاتيح أو ملف الثقة، يمكنك تحويلها إلى مراجع. لإجراء ذلك، عليك تحديث المضيف الافتراضي لاستخدام المراجع، ثم إعادة تشغيل أجهزة Edge Router.

إعداد رموز وبروتوكولات بروتوكول أمان طبقة النقل (TLS) للإصدار 4.15.07 من Edge والإصدارات الأقدم

إذا كنت تستخدم الإصدار 4.15.07 من Edge أو الإصدارات الأقدم، عليك ضبط بروتوكول أمان طبقة النقل (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 الخاصة بالإصدار 4.16.01 من Edge و4.16.09

في الإصدارات من 4.16.01 إلى 4.16.09 من 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 من بروتوكول أمان طبقة النقل (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، وليس أسماء رموز 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. أعِد تشغيل جهاز توجيه Edge:
    /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) في الإصدار 4.17.01 من Edge والإصدارات الأحدث

إذا كنت تستخدم الإصدار 4.17.01 من Edge والإصدارات الأحدث، يمكنك في هذه الحالة ضبط بعض خصائص TLS لمضيف افتراضي فردي، مثل بروتوكول TLS والترميز، باستخدام العلامة الفرعية <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. أنشِئ ملف تخزين مفاتيح باسم myTestKeystore واضبطه باستخدام الإجراء الموضّح هنا: ملفات تخزين المفاتيح وTruststores. تأكد من أن ملف تخزين المفاتيح يستخدم اسمًا مستعارًا لـ myKeyAlias للشهادة والمفتاح الخاص.
  2. استخدِم طلب 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
    

    يحدّد المرجع اسم ملف تخزين المفاتيح ونوع المرجع على أنّه 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 (إنشاء مضيف افتراضي)، حيث يكون <ms-IP> هو عنوان IP أو اسم النطاق لعقدة خادم الإدارة.

    تأكّد من تحديد المرجع الصحيح لملف تخزين المفاتيح والاسم المستعار للمفتاح:

    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. إذا كانت لديك أي خوادم وكيلة حالية لواجهة برمجة التطبيقات، أضِف المضيف الافتراضي إلى العنصر <HTTPConnection> في ProxyEndpoint. تتم إضافة المضيف الظاهري تلقائيًا إلى جميع الخوادم الوكيلة الجديدة لواجهة برمجة التطبيقات.

    راجِع القسم تحديث الخادم الوكيل لواجهة برمجة التطبيقات بعد إنشاء مضيف افتراضي في القسم لمحة عن المضيفين الافتراضيين.

بعد تحديث الخادم الوكيل لواجهة برمجة التطبيقات لاستخدام المضيف الافتراضي وإنشاء سجل نظام أسماء النطاقات للعنوان البديل للمضيف، يمكنك الوصول إلى الخادم الوكيل لواجهة برمجة التطبيقات كما هو موضّح أدناه:

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

مثلاً:

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

إنشاء وتعديل مراجع إلى ملف تخزين مفاتيح أو ملف موثوق به

يمكنك اختياريًا إعداد المضيف الافتراضي لاستخدام مرجع في ملف تخزين المفاتيح أو ملف 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>

استخدِم طلب 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