การกําหนดค่า SNI ระหว่างตัวประมวลผลข้อความและเซิร์ฟเวอร์แบ็กเอนด์

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

การระบุชื่อเซิร์ฟเวอร์ (SNI) ช่วยให้เซิร์ฟเวอร์แบ็กเอนด์ HTTPS หลายรายการทำงานจากที่อยู่ IP และพอร์ตเดียวกันได้โดยไม่จำเป็นต้องให้เซิร์ฟเวอร์แบ็กเอนด์เหล่านั้นใช้ใบรับรอง TLS เดียวกัน ซึ่งเป็นส่วนขยายของโปรโตคอล TLS เมื่อเปิดใช้ SNI ในไคลเอ็นต์ ไคลเอ็นต์จะส่ง ชื่อโฮสต์ของเซิร์ฟเวอร์แบ็กเอนด์เป็นส่วนหนึ่งของการเริ่มต้นการจับมือกันของ TLS ซึ่งช่วยให้เซิร์ฟเวอร์ TLS กำหนดได้ว่าจะใช้ใบรับรอง TLS ใดเพื่อตรวจสอบคำขอจากไคลเอ็นต์

โดยค่าเริ่มต้น SNI จะปิดใช้ในคอมโพเนนต์ Message Processor ใน Edge for Private Cloud เพื่อให้มั่นใจว่าสามารถใช้งานร่วมกับเซิร์ฟเวอร์แบ็กเอนด์ที่มีอยู่ได้ หากกำหนดค่าเซิร์ฟเวอร์แบ็กเอนด์ให้รองรับ SNI คุณจะต้องเปิดใช้ SNI ในคอมโพเนนต์ Message Processor มิฉะนั้น คำขอ API ที่ผ่าน Apigee Edge จะล้มเหลวเนื่องจาก การจับมือกันของ TLS ไม่สำเร็จ.

เอกสารนี้อธิบายวิธีดำเนินการต่อไปนี้

ก่อนเริ่มต้น

การระบุเซิร์ฟเวอร์ที่เปิดใช้ SNI

ส่วนนี้อธิบายวิธีระบุว่าเซิร์ฟเวอร์แบ็กเอนด์เปิดใช้ SNI หรือไม่

  1. เรียกใช้คำสั่ง openssl และลองเชื่อมต่อกับชื่อโฮสต์ของเซิร์ฟเวอร์ที่เกี่ยวข้อง (Edge Router หรือเซิร์ฟเวอร์แบ็กเอนด์) โดยไม่ส่งชื่อเซิร์ฟเวอร์ ดังที่แสดงด้านล่าง
    openssl s_client -connect hostname:port
  2. คุณอาจได้รับใบรับรองและบางครั้งอาจพบว่าคำสั่ง openssl จับมือกันไม่สำเร็จ ดังที่แสดงด้านล่าง:
    CONNECTED(00000003) 9362:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_clnt.c:593
  3. เรียกใช้คำสั่ง openssl และลองเชื่อมต่อกับชื่อโฮสต์ของเซิร์ฟเวอร์ที่เกี่ยวข้อง (Edge Router หรือเซิร์ฟเวอร์แบ็กเอนด์) โดย ส่งชื่อเซิร์ฟเวอร์ ดังที่แสดงด้านล่าง
    openssl s_client -connect hostname:port -servername hostname
  4. หากคุณพบว่าการจับมือกันไม่สำเร็จในขั้นตอนที่ 1 หรือได้รับใบรับรองที่แตกต่างกันในขั้นตอนที่ 1 และขั้นตอนที่ 2 แสดงว่าเซิร์ฟเวอร์ที่ระบุเปิดใช้ SNI
  5. หากต้องการตรวจสอบเซิร์ฟเวอร์แบ็กเอนด์มากกว่า 1 รายการ คุณต้องทำตามขั้นตอนข้างต้นซ้ำสำหรับเซิร์ฟเวอร์แบ็กเอนด์แต่ละรายการ

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

เปิดใช้ SNI ระหว่าง Edge Message Processor กับเซิร์ฟเวอร์แบ็กเอนด์

ส่วนนี้อธิบายวิธีเปิดใช้ SNI ระหว่าง Edge Message Processor กับเซิร์ฟเวอร์แบ็กเอนด์ คุณเปิดใช้ SNI ได้ผ่านพร็อพเพอร์ตี้ jsse.enableSNIExtension ในคอมโพเนนต์ Message Processor หากต้องการกำหนดค่าพร็อพเพอร์ตี้ใน Message Processor ให้ใช้ โทเค็นตามไวยากรณ์ที่อธิบายไว้ใน วิธีกำหนดค่า Edge

หากต้องการเปิดใช้ SNI ใน Message Processor ให้ทำตามขั้นตอนต่อไปนี้

  1. ค้นหาโทเค็นสำหรับพร็อพเพอร์ตี้ jsse.enableSNIExtension
  2. เปิดใช้ SNI ใน Message Processor

ค้นหาโทเค็นสำหรับพร็อพเพอร์ตี้ jsse.enableSNIExtension

ขั้นตอนต่อไปนี้อธิบายวิธีค้นหาโทเค็นสำหรับ jsse.enableSNIExtension พร็อพเพอร์ตี้:

  1. ค้นหาพร็อพเพอร์ตี้ jsse.enableSNIExtension ในไดเรกทอรีแหล่งที่มาของ Message Processor /opt/apigee/edge-message-processor/source โดยใช้คำสั่งต่อไปนี้
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
  2. เอาต์พุตของคำสั่งนี้จะแสดงโทเค็นสำหรับพร็อพเพอร์ตี้ของ Message Processor jsse.enableSNIExtension ดังนี้
    /opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}

    โดยสตริงระหว่างแท็ก {T}{/T} คือชื่อของโทเค็นที่คุณตั้งค่าได้ในไฟล์ .properties ของ Message Processor

    ดังนั้น โทเค็นสำหรับพร็อพเพอร์ตี้ jsse.enableSNIExtension จึงมีลักษณะดังนี้

    conf_system_jsse.enableSNIExtension

เปิดใช้ SNI ใน Message Processor

ขั้นตอนต่อไปนี้อธิบายวิธีเปิดใช้ SNI ในคอมโพเนนต์ Apigee Message Processor

  1. ในเครื่อง Message Processor ให้เปิดไฟล์ต่อไปนี้ในเครื่องมือแก้ไข หากยังไม่มี ให้สร้างไฟล์
    /opt/apigee/customer/application/message-processor.properties

    เช่น หากต้องการเปิดไฟล์โดยใช้ vi ให้ป้อนคำสั่งต่อไปนี้

    vi /opt/apigee/customer/application/message-processor.properties
  2. เพิ่มบรรทัดในรูปแบบต่อไปนี้ลงในไฟล์พร็อพเพอร์ตี้
    conf_system_jsse.enableSNIExtension=true
  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. ตรวจสอบว่าการกำหนดค่า SNI ได้รับการอัปเดตใน Message Processor แล้ว
  7. หากมี Message Processor มากกว่า 1 รายการ ให้ทำตามขั้นตอนข้างต้นซ้ำใน Message Processor ทั้งหมด

ปิดใช้ SNI ระหว่าง Edge Message Processor กับเซิร์ฟเวอร์แบ็กเอนด์

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

คุณปิดใช้ SNI ได้โดยตั้งค่าพร็อพเพอร์ตี้ jsse.enableSNIExtension กลับเป็น false ในคอมโพเนนต์ Message Processor

ปิดใช้ SNI ใน Message Processor

ขั้นตอนต่อไปนี้อธิบายวิธีปิดใช้ SNI ใน Apigee Message Processor

  1. ในเครื่อง Message Processor ให้เปิดไฟล์ต่อไปนี้ในเครื่องมือแก้ไข หากยังไม่มี ให้สร้างไฟล์
    /opt/apigee/customer/application/message-processor.properties

    เช่น หากต้องการเปิดไฟล์โดยใช้ vi ให้ป้อนคำสั่งต่อไปนี้

    vi /opt/apigee/customer/application/message-processor.properties
  2. หากบรรทัด conf_system_jsse.enableSNIExtension=true อยู่ใน /opt/apigee/customer/application/message-processor.properties ให้แก้ไขดังนี้
    conf_system_jsse.enableSNIExtension=false
  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. ตรวจสอบว่าการกำหนดค่า SNI ได้รับการอัปเดตใน Message Processor แล้ว
  7. หากมี Message Processor มากกว่า 1 รายการ ให้ทำตามขั้นตอนข้างต้นซ้ำใน Message Processor ทั้งหมด

การตรวจสอบการกำหนดค่า SNI ใน Message Processor

ส่วนนี้อธิบายวิธีตรวจสอบว่าการกำหนดค่า SNI ได้รับการอัปเดตใน Message Processor เรียบร้อยแล้ว

แม้ว่าคุณจะใช้โทเค็น conf_system_jsse.enableSNIExtension เพื่อ กำหนดค่า SNI ใน Message Processor แต่คุณต้องตรวจสอบว่าพร็อพเพอร์ตี้จริง jsse.enableSNIExtensionได้รับการตั้งค่าด้วยค่าใหม่แล้ว

  1. ในเครื่อง Message Processor ให้ค้นหาพร็อพเพอร์ตี้ jsse.enableSNIExtension ในไดเรกทอรี /opt/apigee/edge-message-processor/conf และตรวจสอบว่าพร็อพเพอร์ตี้ได้รับการตั้งค่าด้วยค่าใหม่แล้วหรือไม่ ดังที่แสดงด้านล่าง
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
  2. หากการกำหนดค่า SNI ได้รับการอัปเดตใน Message Processor เรียบร้อยแล้ว คำสั่งด้านบนจะแสดงค่าใหม่ในไฟล์ system.properties

    ตัวอย่างผลลัพธ์จากคำสั่งด้านบนหลังจากที่คุณเปิดใช้ SNI ใน Message Processor มีดังนี้

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=true

    ในทำนองเดียวกัน ตัวอย่างผลลัพธ์จากคำสั่งด้านบนหลังจากที่คุณปิดใช้ SNI ใน Message Processor มีดังนี้

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=false

    ในเอาต์พุตตัวอย่างด้านบน โปรดทราบว่าพร็อพเพอร์ตี้ jsse.enableSNIExtension ได้รับการอัปเดตเป็นค่าใหม่ true หรือ false ใน system.properties ซึ่งแสดงว่าคุณเปิดใช้หรือ ปิดใช้ SNI ใน Message Processor ได้สำเร็จ

  3. หากยังเห็นค่าเก่าสำหรับพร็อพเพอร์ตี้ jsse.enableSNIExtension ให้ ตรวจสอบว่าคุณได้ทำตามขั้นตอนทั้งหมดที่ระบุไว้ในส่วนที่เหมาะสมเพื่อเปิดใช้ หรือปิดใช้ SNI อย่างถูกต้อง หากข้ามขั้นตอนใดไป ให้ทำตามขั้นตอนทั้งหมดอีกครั้งอย่างถูกต้อง
  4. หากยังเปิดใช้/ปิดใช้ SNI ไม่ได้ โปรดติดต่อ ทีมสนับสนุนของ Apigee Edge