การตั้งค่าโปรโตคอล TLS สําหรับเราเตอร์และผู้ประมวลผลข้อความ

โดยค่าเริ่มต้นใน Apigee Edge for Private Cloud 4.54.00 เราเตอร์ (Nginx) และ Message Processor (Java 21) จะเปิดใช้ TLSv1.2 และ TLSv1.3 คุณอาจต้องการจำกัดโปรโตคอลที่อนุญาตหรือเปิดใช้โปรโตคอลเก่าอีกครั้ง ทั้งนี้ขึ้นอยู่กับความต้องการทางธุรกิจและแนวทางปฏิบัติด้านความปลอดภัย เอกสารนี้อธิบายวิธีกำหนดค่าโปรโตคอล TLS สำหรับการรับส่งข้อมูลขาเข้าและขาออกในเราเตอร์และ Message Processor

สำหรับเราเตอร์ คุณยังตั้งค่าโปรโตคอลสำหรับโฮสต์เสมือนแต่ละรายการได้ด้วย ดูข้อมูลเพิ่มเติมได้ที่ การกำหนดค่าการเข้าถึง TLS ไปยัง API สำหรับ Private Cloud

สำหรับ Message Processor คุณสามารถตั้งค่าโปรโตคอลสำหรับ TargetEndpoint แต่ละรายการได้ ดูข้อมูลเพิ่มเติมได้ที่ การกำหนดค่า TLS จาก Edge ไปยังแบ็กเอนด์ (ระบบคลาวด์และ Private Cloud)

ตั้งค่าโปรโตคอล 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 แบบ 2 ทางกับโฮสต์เสมือน คุณต้องตั้งค่าโปรโตคอล TLS ใน โฮสต์เสมือนด้วยตามที่อธิบายไว้ในการกำหนดค่าการเข้าถึง TLS ไปยัง API สำหรับ Private Cloud

ตั้งค่าโปรโตคอล TLS ใน Message Processor

พร็อพเพอร์ตี้ต่อไปนี้ช่วยให้คุณตั้งค่าโปรโตคอล TLS ที่ต้องการใน Message Processor สำหรับการสื่อสารขาออก นอกจากนี้ ส่วนนี้ยังอธิบาย วิธีใช้โปรโตคอลและการเข้ารหัส TLS ที่ปิดใช้

หากต้องการตั้งค่าโปรโตคอล TLS ใน 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

    ดูรายการพร็อพเพอร์ตี้ที่เกี่ยวข้องทั้งหมดได้ที่ การกำหนดค่า TLS ระหว่างเราเตอร์กับ Message Processor

  3. บันทึกการเปลี่ยนแปลง
  4. ตรวจสอบว่าผู้ใช้ apigee เป็นเจ้าของไฟล์พร็อพเพอร์ตี้
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. รีสตาร์ท Message Processor
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. หากคุณใช้ TLS แบบ 2 ทางกับแบ็กเอนด์ ให้ตั้งค่าโปรโตคอล TLS ในโฮสต์เสมือนตามที่ อธิบายไว้ใน การกำหนดค่า TLS จาก Edge ไปยังแบ็กเอนด์ (ระบบคลาวด์และ Private Cloud)

การใช้การเข้ารหัสและโปรโตคอล TLS เวอร์ชันเก่า: โปรดดูส่วนต่อไปนี้ หากต้องการใช้การเข้ารหัสหรือโปรโตคอลเวอร์ชันเก่า

ใช้ TLS เวอร์ชันเก่า

ใน Java 21 ระบบจะปิดใช้โปรโตคอล TLS เวอร์ชันเก่า (TLSv1, TLSv1.1, และ SSLv3) และคีย์ Diffie-Hellman ที่อ่อนแอ (DH keySize < 1024) โดยค่าเริ่มต้นใน jdk.tls.disabledAlgorithms. หากต้องการเปิดใช้ ให้ใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

  • ตัวเลือก ก: ปรับโปรโตคอลแบ็กเอนด์ให้ทันสมัย: อัปเดตเซิร์ฟเวอร์แบ็กเอนด์ให้ รองรับ TLS 1.2 หรือ TLS 1.3 และตรวจสอบว่าขนาดพารามิเตอร์ Diffie-Hellman มีขนาด 2048 บิตขึ้นไป (>= 2048 บิต)
  • ตัวเลือก ข: เปิดใช้โปรโตคอลเวอร์ชันเก่าอีกครั้งโดยใช้ CwC: รักษา ความเข้ากันได้กับแบ็กเอนด์ TLS 1.0 หรือ TLS 1.1 เวอร์ชันเก่าโดยนำ TLSv1, TLSv1.1 ออกจาก conf_jvmsecurity_jdk.tls.disabledAlgorithms ใน /opt/apigee/customer/application/message-processor.properties โดยใช้ Code with Config (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 แบบคงที่

Apigee Edge for Private Cloud เวอร์ชัน 4.54.00 ทำงานบน Java 21, ซึ่งระบบจะปิดใช้ชุดการเข้ารหัส RSA แบบคงที่ (TLS_RSA_*) ที่ไม่มีการแลกเปลี่ยนคีย์ Diffie-Hellman ชั่วคราว (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 โดยใช้ Code with Config (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

หลังจากแก้ไขพร็อพเพอร์ตี้แล้ว ให้รีสตาร์ท Message Processor โดยใช้ apigee-service ดังนี้

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

เปิดใช้ TLS 1.3 สำหรับโฮสต์

ส่วนนี้จะอธิบายวิธีเปิดใช้ TLS 1.3 สำหรับโฮสต์เสมือนบางรายการ หากต้องการเปิดใช้ TLS 1.3 ให้ทำตามขั้นตอนต่อไปนี้ในโหนด Management Server

  1. ในโหนด Management Server แต่ละโหนด ให้แก้ไขไฟล์ /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. รีสตาร์ท Management Server
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. ทำขั้นตอนก่อนหน้าซ้ำในโหนด Management Server ทั้งหมดทีละ โหนด
  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

หากต้องการทดสอบ TLS 1.3 ให้ป้อนคำสั่งต่อไปนี้

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

โปรดทราบว่าคุณจะทดสอบ TLS 1.3 ได้เฉพาะในไคลเอ็นต์ที่รองรับโปรโตคอลนี้เท่านั้น หากไม่ได้เปิดใช้ TLS 1.3 คุณจะเห็นข้อความแสดงข้อผิดพลาดที่คล้ายกับข้อความต่อไปนี้

sslv3 alert handshake failure