إعداد بروتوكول بروتوكول أمان طبقة النقل (TLS) لجهاز التوجيه ومعالج الرسائل

في الإصدار 4.54.00 من Apigee Edge للسحابة الإلكترونية الخاصة، يفعِّل كلّ من جهاز التوجيه (Nginx) ومعالج الرسائل (Java 21) بروتوكولَي TLSv1.2 وTLSv1.3 تلقائيًا. بناءً على احتياجات مؤسستك وممارساتها الأمنية قد تحتاج إلى حظر البروتوكولات المسموح بها أو إعادة تفعيل البروتوكولات القديمة. يوضّح هذا المستند كيفية ضبط بروتوكولات أمان طبقة النقل (TLS) لحركة البيانات الواردة والصادرة على جهاز التوجيه ومعالج الرسائل.

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

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

ضبط بروتوكول أمان طبقة النقل (TLS) على جهاز التوجيه

تساعدك الخصائص التالية في ضبط بروتوكولات أمان طبقة النقل (TLS) المطلوبة على جهاز التوجيه للاتصال بالبيانات الواردة.

لضبط بروتوكول أمان طبقة النقل (TLS) على جهاز التوجيه، اضبط الخصائص في ملف router.properties:

  1. افتح ملف router.properties في أحد المحرّرات. إذا لم يكن الملف موجودًا، أنشِئه:
    vi /opt/apigee/customer/application/router.properties
  2. اضبط الخصائص حسب الحاجة:
    # Possible values are space-delimited list of: TLSv1 TLSv1.1 TLSv1.2 TLSv1.3
    conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2
  3. احفظ التغييرات.
  4. تأكَّد من أنّ ملف الخصائص مملوك للمستخدم apigee:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  5. أعِد تشغيل جهاز التوجيه:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. تأكَّد من تعديل البروتوكول بشكلٍ صحيح من خلال فحص ملف Nginx‏ /opt/nginx/conf.d/0-default.conf
    cat /opt/nginx/conf.d/0-default.conf

    تأكَّد من أنّ قيمة ssl_protocols هي TLSv1.2.

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

ضبط بروتوكول أمان طبقة النقل (TLS) على معالج الرسائل

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

لضبط بروتوكول أمان طبقة النقل (TLS) على معالج الرسائل، اضبط الخصائص في الملف message-processor.properties:

  1. افتح ملف message-processor.properties في أحد المحرّرات. إذا لم يكن الملف موجودًا، أنشِئه:
    vi /opt/apigee/customer/application/message-processor.properties
  2. اضبط الخصائص باستخدام البنية التالية:
    # Possible values are a comma-delimited list of TLSv1, TLSv1.1, TLSv1.2, and TLSv1.3
    conf/system.properties+https.protocols=[TLSv1][,TLSv1.1][,TLSv1.2][,TLSv1.3]
    # Possible values are a comma-delimited list of SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
    # SSLv3 is required
    conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3[,TLSv1][,TLSv1.1][,TLSv1.2][,TLSv1.3]
    
    # Specify the ciphers that the Message Processor supports. (You must separate ciphers with a comma.):
    conf_message-processor-communication_local.http.ssl.ciphers=cipher[,...]

    على سبيل المثال:

    conf/system.properties+https.protocols=TLSv1.2
    conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1
    conf_message-processor-communication_local.http.ssl.ciphers=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

    للاطّلاع على قائمة كاملة بالخصائص ذات الصلة، يُرجى الرجوع إلى مقالة ضبط بروتوكول أمان طبقة النقل (TLS) بين جهاز توجيه ومعالج رسائل.

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

استخدام رموز التشفير وبروتوكولات أمان طبقة النقل (TLS) القديمة: يُرجى الرجوع إلى الأقسام التالية إذا كنت تريد استخدام رموز التشفير أو البروتوكولات القديمة.

استخدام بروتوكولات أمان طبقة النقل (TLS) القديمة

في Java 21، يتم إيقاف بروتوكولات أمان طبقة النقل (TLS) القديمة (TLSv1, TLSv1.1, وSSLv3) ومفاتيح ديفي-هيلمان الضعيفة (DH keySize < 1024) تلقائيًا في jdk.tls.disabledAlgorithms. لتفعيلها، استخدِم أحد الخيارَين التاليَين:

  • الخيار أ: تحديث بروتوكولات النظام الخلفي: عدِّل خوادم النظام الخلفي لتتوافق مع بروتوكول أمان طبقة النقل (TLS) 1.2 أو بروتوكول أمان طبقة النقل (TLS) 1.3 وتأكَّد من أنّ أحجام مَعلمات ديفي-هيلمان تبلغ 2048 بت أو أكثر (>= 2048 بت).
  • الخيار ب: إعادة تفعيل البروتوكولات القديمة باستخدام CwC: حافظ على التوافق مع الأنظمة الخلفية القديمة التي تستخدم بروتوكول أمان طبقة النقل (TLS) 1.0 أو بروتوكول أمان طبقة النقل (TLS) 1.1 من خلال إزالة TLSv1, TLSv1.1 من conf_jvmsecurity_jdk.tls.disabledAlgorithms في /opt/apigee/customer/application/message-processor.properties باستخدام الرمز البرمجي مع الإعدادات (CwC):
    # Re-enable TLS 1.0 and TLS 1.1 for legacy backend connectivity
    conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, DTLSv1.0, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, ECDH, TLS_RSA_*, rsa_pkcs1_sha1 usage HandshakeSignature, ecdsa_sha1 usage HandshakeSignature, dsa_sha1 usage HandshakeSignature, include jdk.disabled.namedCurves

استخدام رموز التشفير الثابتة RSA

يعمل الإصدار 4.54.00 من Apigee Edge للسحابة الإلكترونية الخاصة على Java 21، حيث يتم إيقاف مجموعات رموز التشفير الثابتة RSA (TLS_RSA_*) التي لا تتضمّن تبادل مفاتيح ديفي-هيلمان المؤقتة (ECDHE أو DHE) تلقائيًا في jdk.tls.disabledAlgorithms (على سبيل المثال، TLS_RSA_WITH_AES_128_CBC_SHA أو TLS_RSA_WITH_AES_256_CBC_SHA). لدعم الأنظمة الخلفية التي تتطلّب مجموعات رموز التشفير الثابتة RSA، استخدِم الخيار التالي:

  • إعادة تفعيل رموز التشفير الثابتة RSA باستخدام CwC: حافظ على التوافق مع الأنظمة الخلفية القديمة من خلال إزالة TLS_RSA_* من conf_jvmsecurity_jdk.tls.disabledAlgorithms في /opt/apigee/customer/application/message-processor.properties باستخدام الرمز البرمجي مع الإعدادات (CwC):
    # Re-enable Static RSA ciphers for backward compatibility with legacy Java 8 backends
    conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, DTLSv1.0, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, ECDH, rsa_pkcs1_sha1 usage HandshakeSignature, ecdsa_sha1 usage HandshakeSignature, dsa_sha1 usage HandshakeSignature, include jdk.disabled.namedCurves

بعد تعديل الخصائص، أعِد تشغيل معالج الرسائل باستخدام apigee-service:

/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

تفعيل بروتوكول أمان طبقة النقل (TLS) 1.3 لمضيف

يوضّح هذا القسم كيفية تفعيل بروتوكول أمان طبقة النقل (TLS) 1.3 لمضيفات افتراضية معيّنة. لتفعيل بروتوكول أمان طبقة النقل (TLS) 1.3، اتّبِع الخطوات التالية على عُقد "خادم الإدارة":

  1. على كل عقدة من عُقد "خادم الإدارة"، عدِّل الملف /opt/apigee/customer/application/management-server.properties وأضِف السطر التالي (إذا لم يكن الملف موجودًا، أنشِئه):
    conf_virtualhost_virtual.host.allowed.protocol.list=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3

    بالنسبة إلى هذا الملف، تكون البروتوكولات مفصولة بفواصل وهي حسّاسة لحالة الأحرف.

  2. احفظ الملف.
  3. تأكَّد من أنّ الملف مملوك للمستخدم apigee:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
  4. أعِد تشغيل "خادم الإدارة":
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. كرِّر الخطوات السابقة على جميع عُقد "خادم الإدارة" واحدة تلو الأخرى.
  6. أنشِئ مضيفًا افتراضيًا (أو عدِّل مضيفًا افتراضيًا حاليًا) باستخدام الخاصية التالية. يُرجى العِلم أنّ البروتوكولات مفصولة بمسافات وهي حسّاسة لحالة الأحرف:
    "properties": {
        "property": [
          {
            "name": "ssl_protocols",
            "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3"
          }
        ]
    }

    يعرض المثال التالي نموذج مضيف افتراضي يتضمّن هذه الخاصية:

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "ssl_protocols",
            "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }

اختبار بروتوكول أمان طبقة النقل (TLS) 1.3

لاختبار بروتوكول أمان طبقة النقل (TLS) 1.3، أدخِل الأمر التالي:

curl -v --tlsv1.3 "https://api.myCompany,com/testproxy"

يُرجى العِلم أنّه يمكنك اختبار بروتوكول أمان طبقة النقل (TLS) 1.3 على العملاء الذين يتيحون هذا البروتوكول فقط. إذا لم يكن بروتوكول أمان طبقة النقل (TLS) 1.3 مفعّلاً، ستظهر لك رسالة خطأ مشابهة لما يلي:

sslv3 alert handshake failure