تنظیم پروتکل TLS برای «مسیریاب» و «پردازشگر پیام»

به‌طور پیش‌فرض در Apigee Edge for Private Cloud نسخه 4.54.00،‏ Router (Nginx) و Message Processor (Java 21) TLSv1.2 و TLSv1.3 را فعال می‌کنند. بسته به نیازهای کسب‌وکار و رویه‌های امنیتی‌تان، ممکن است بخواهید پروتکل‌های مجاز را محدود کنید یا پروتکل‌های قدیمی‌تر را دوباره فعال کنید. این سند نحوه پیکربندی پروتکل‌های «امنیت لایه انتقال» را برای ترافیک شمالی و جنوبی در «مسیریاب» و «پردازشگر پیام» شرح می‌دهد.

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

برای «پردازشگر پیام»، می‌توانید پروتکل را برای TargetEndpoint جداگانه تنظیم کنید. برای اطلاعات بیشتر، پیکربندی TLS از Edge تا زیرینه (Cloud و Cloud خصوصی) را ببینید.

پروتکل 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 به API برای Private Cloud شرح داده شده است.

تنظیم پروتکل 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. اگر از «امنیت لایه انتقال» دوطرفه با پس‌بک استفاده می‌کنید، پروتکل «امنیت لایه انتقال» را در میزبان مجازی همان‌طور که در پیکربندی «امنیت لایه انتقال» از Edge به پس‌بک (Cloud و Private Cloud) شرح داده شده است تنظیم کنید.

کار با رمزهای قدیمی‌تر و پروتکل‌های TLS: اگر می‌خواهید با رمزها یا پروتکل‌های قدیمی‌تر کار کنید، به بخش‌های زیر مراجعه کنید.

کار کردن با «امنیت لایه انتقال» قدیمی‌تر

در Java 21، پروتکل‌های قدیمی «امنیت لایه انتقال» (TLSv1، TLSv1.1، و SSLv3) و کلیدهای ضعیف Diffie-Hellman (DH keySize < 1024) به‌طور پیش‌فرض در jdk.tls.disabledAlgorithms غیرفعال هستند. برای فعال کردن آن‌ها، از یکی از گزینه‌های زیر استفاده کنید:

  • گزینه الف: مدرن‌سازی پروتکل‌های زیرینه: سرورهای زیرینه را به‌روز کنید تا از «امنیت لایه انتقال» نسخه ۱.۲ یا نسخه ۱.۳ پشتیبانی کنند و مطمئن شوید اندازه‌های پارامتر Diffie-Hellman ‫۲۰۴۸ بیت یا بیشتر (>= 2048 بیت) باشد.
  • گزینه ب: فعال کردن مجدد پروتکل‌های قدیمی بااستفاده از CwC: با برداشتن TLSv1, TLSv1.1 از conf_jvmsecurity_jdk.tls.disabledAlgorithms در /opt/apigee/customer/application/message-processor.properties بااستفاده از کد با پیکربندی (CwC)، سازگاری با باطن‌های قدیمی TLS 1.0 یا TLS 1.1 را حفظ کنید:
    # 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 ایستا

Apigee Edge برای Private Cloud نسخه ۴.۵۴.۰۰ روی 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، مراحل زیر را در گره‌های «سرور مدیریت» انجام دهید:

  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"
          }
        ]
    }

    مثال زیر یک vhost نمونه با این ویژگی را نشان می‌دهد:

    {
      "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

برای آزمایش «امنیت لایه انتقال» نسخه ۱.۳، فرمان زیر را وارد کنید:

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

توجه داشته باشید که فقط در کارخواهانی که از این پروتکل پشتیبانی می‌کنند می‌توانید «امنیت لایه انتقال» نسخه ۱.۳ را آزمایش کنید. اگر TLS 1.3 فعال نباشد، پیام خطایی مشابه پیام زیر می‌بینید:

sslv3 alert handshake failure