राऊटर और मैसेज प्रोसेसर के लिए TLS प्रोटोकॉल सेट करना

Apigee Edge for Private Cloud 4.54.00 में डिफ़ॉल्ट रूप से, राऊटर (Nginx) और मैसेज प्रोसेसर (Java 21) TLSv1.2 और TLSv1.3 को चालू करते हैं. अपने कारोबार की ज़रूरतों और सुरक्षा के तरीकों के आधार पर, हो सकता है कि आपको अनुमति वाले प्रोटोकॉल पर पाबंदी लगानी पड़े या पुराने प्रोटोकॉल फिर से चालू करने पड़ें. इस दस्तावेज़ में, Router और Message Processor पर नॉर्थबाउंड और साउथबाउंड ट्रैफ़िक के लिए, टीएलएस प्रोटोकॉल कॉन्फ़िगर करने का तरीका बताया गया है.

राऊटर के लिए, अलग-अलग वर्चुअल होस्ट के लिए भी प्रोटोकॉल सेट किया जा सकता है. ज़्यादा जानकारी के लिए, प्राइवेट क्लाउड के लिए किसी एपीआई में टीएलएस ऐक्सेस को कॉन्फ़िगर करना लेख पढ़ें.

मैसेज प्रोसेसर के लिए, किसी TargetEndpoint के लिए प्रोटोकॉल सेट किया जा सकता है. ज़्यादा जानकारी के लिए, Edge से लेकर बैकएंड (क्लाउड और प्राइवेट क्लाउड) तक टीएलएस कॉन्फ़िगर करना लेख पढ़ें.

राउटर पर टीएलएस प्रोटोकॉल सेट करना

यहां दी गई प्रॉपर्टी की मदद से, नॉर्थबाउंड कम्यूनिकेशन के लिए राऊटर पर अपनी पसंद के टीएलएस प्रोटोकॉल सेट किए जा सकते हैं.

राऊटर पर टीएलएस प्रोटोकॉल सेट करने के लिए, 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. अगर वर्चुअल होस्ट के साथ दो-तरफ़ा टीएलएस का इस्तेमाल किया जा रहा है, तो आपको वर्चुअल होस्ट में टीएलएस प्रोटोकॉल भी सेट करना होगा. इसके बारे में प्राइवेट क्लाउड के लिए, किसी एपीआई के टीएलएस ऐक्सेस को कॉन्फ़िगर करना लेख में बताया गया है.

मैसेज प्रोसेसर पर टीएलएस प्रोटोकॉल सेट करना

नीचे दी गई प्रॉपर्टी की मदद से, साउथबाउंड कम्यूनिकेशन के लिए Message Processor पर टीएलएस प्रोटोकॉल सेट किए जा सकते हैं. इस सेक्शन में, बंद किए गए टीएलएस प्रोटोकॉल और साइफ़र के साथ काम करने का तरीका भी बताया गया है.

मैसेज प्रोसेसर पर टीएलएस प्रोटोकॉल सेट करने के लिए, 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

    इससे जुड़ी प्रॉपर्टी की पूरी सूची देखने के लिए, राऊटर और मैसेज प्रोसेसर के बीच टीएलएस कॉन्फ़िगर करना लेख पढ़ें.

  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 से बैकएंड (क्लाउड और प्राइवेट क्लाउड) तक टीएलएस को कॉन्फ़िगर करना में बताया गया है.

पुराने सिफ़र और टीएलएस प्रोटोकॉल का इस्तेमाल करना: अगर आपको पुराने सिफ़र या प्रोटोकॉल का इस्तेमाल करना है, तो यहां दिए गए सेक्शन देखें.

टीएलएस के पुराने वर्शन के साथ काम करना

Java 21 में, लेगसी टीएलएस प्रोटोकॉल (TLSv1, TLSv1.1, और SSLv3) और कमज़ोर डिफ़ी-हेलमैन कुंजियां (DH keySize < 1024) डिफ़ॉल्ट रूप से बंद होती हैं. jdk.tls.disabledAlgorithms. इन्हें चालू करने के लिए, इनमें से किसी एक विकल्प का इस्तेमाल करें:

  • पहला विकल्प: बैकएंड प्रोटोकॉल को अपग्रेड करें: बैकएंड सर्वर को अपडेट करके, TLS 1.2 या TLS 1.3 के साथ काम करने की सुविधा चालू करें. साथ ही, यह पक्का करें कि डिफ़ी-हेलमैन पैरामीटर का साइज़ 2048 बिट या इससे ज़्यादा (>= 2048 बिट) हो.
  • दूसरा विकल्प: CwC का इस्तेमाल करके, लेगसी प्रोटोकॉल को फिर से चालू करें: कॉन्फ़िगरेशन के साथ कोड (CwC) का इस्तेमाल करके, /opt/apigee/customer/application/message-processor.properties में conf_jvmsecurity_jdk.tls.disabledAlgorithms से TLSv1, TLSv1.1 को हटाकर, 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

स्टैटिक आरएसए साइफ़र के साथ काम करना

Apigee Edge for Private Cloud का वर्शन 4.54.00, Java 21 पर काम करता है. इसमें स्टैटिक आरएसए साइफ़र सुइट (TLS_RSA_*) डिफ़ॉल्ट रूप से बंद होते हैं. इनमें डिफ़ी-हेलमैन कुंजी एक्सचेंज (ECDHE या DHE) की सुविधा नहीं होती. ये सुइट, jdk.tls.disabledAlgorithms में बंद होते हैं. उदाहरण के लिए, TLS_RSA_WITH_AES_128_CBC_SHA या TLS_RSA_WITH_AES_256_CBC_SHA. स्टैटिक आरएसए साइफ़र सुइट की ज़रूरत वाले बैकएंड के साथ काम करने के लिए, यह विकल्प इस्तेमाल करें:

  • CwC का इस्तेमाल करके, स्टैटिक आरएसए साइफ़र को फिर से चालू करें: कॉन्फ़िगरेशन के साथ कोड (CwC) का इस्तेमाल करके, /opt/apigee/customer/application/message-processor.properties में conf_jvmsecurity_jdk.tls.disabledAlgorithms से TLS_RSA_* हटाकर, लेगसी बैकएंड के साथ काम करने की सुविधा बनाए रखें:
    # 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 को चालू किया जाता है

इस सेक्शन में, कुछ वर्चुअल होस्ट के लिए टीएलएस 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
    }

टीएलएस 1.3 की जांच करना

TLS 1.3 की जांच करने के लिए, यह निर्देश डालें:

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

ध्यान दें कि TLS 1.3 की जांच सिर्फ़ उन क्लाइंट पर की जा सकती है जो इस प्रोटोकॉल के साथ काम करते हैं. अगर टीएलएस 1.3 चालू नहीं है, तो आपको गड़बड़ी का ऐसा मैसेज दिखेगा:

sslv3 alert handshake failure