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

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

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

โดยค่าเริ่มต้น ระบบจะปิดใช้ SNI บนคอมโพเนนต์ตัวประมวลผลข้อความใน Edge สำหรับ Private Cloud เพื่อความเข้ากันได้แบบย้อนหลังกับเซิร์ฟเวอร์แบ็กเอนด์ที่มีอยู่ หากมีการกำหนดค่าเซิร์ฟเวอร์แบ็กเอนด์ให้รองรับ SNI คุณจะต้องเปิดใช้ SNI ในคอมโพเนนต์ตัวประมวลผลข้อความ ไม่เช่นนั้นคำขอ 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 หรือเซิร์ฟเวอร์แบ็กเอนด์) โดยส่งผ่านชื่อเซิร์ฟเวอร์ดังที่แสดงด้านล่าง
    openssl s_client -connect hostname:port -servername hostname
    
  4. หากแฮนด์เชคล้มเหลวในขั้นตอนที่ 1 หรือได้รับใบรับรองอื่นในขั้นตอนที่ 1 และขั้นตอนที่ 2 แสดงว่าเซิร์ฟเวอร์ที่ระบุเปิดใช้ SNI อยู่
  5. หากต้องการยืนยันการดำเนินการนี้สำหรับเซิร์ฟเวอร์แบ็กเอนด์มากกว่า 1 เซิร์ฟเวอร์ คุณต้องทำตามขั้นตอนข้างต้นซ้ำสำหรับเซิร์ฟเวอร์แบ็กเอนด์แต่ละรายการ

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

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

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

หากต้องการเปิดใช้งาน SNI ในตัวประมวลผลข้อความ ให้ทำตามขั้นตอนต่อไปนี้

  1. ค้นหาโทเค็นสำหรับพร็อพเพอร์ตี้ jsse.enableSNIExtension
  2. เปิดใช้ SNI ในตัวประมวลผลข้อความ

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

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

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

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

    ดังนั้น โทเค็นสําหรับพร็อพเพอร์ตี้ jsse.enableSNIExtension จะเป็นดังนี้

    conf_system_jsse.enableSNIExtension
    

เปิดใช้ SNI ในตัวประมวลผลข้อความ

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

  1. ในเครื่องเครื่องมือประมวลผลข้อความ ให้เปิดไฟล์ต่อไปนี้ในตัวแก้ไข หากยังไม่มี ให้สร้างขึ้นมา
    /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. รีสตาร์ทโปรแกรมประมวลผลข้อความดังที่แสดงด้านล่าง
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. ตรวจสอบว่าได้อัปเดตการกำหนดค่า SNI ในตัวประมวลผลข้อความแล้ว
  7. หากมีเครื่องมือประมวลผลข้อความมากกว่า 1 รายการ ให้ทำขั้นตอนข้างต้นซ้ำในระบบประมวลผลข้อความทั้งหมด

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

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

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

ปิดใช้ SNI ในตัวประมวลผลข้อความ

ขั้นตอนต่อไปนี้อธิบายวิธีปิดใช้ SNI บนตัวประมวลผลข้อความ Apigee

  1. ในเครื่องเครื่องมือประมวลผลข้อความ ให้เปิดไฟล์ต่อไปนี้ในตัวแก้ไข หากยังไม่มี ให้สร้างขึ้นมา
    /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. รีสตาร์ทโปรแกรมประมวลผลข้อความดังที่แสดงด้านล่าง
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. ตรวจสอบว่าได้อัปเดตการกำหนดค่า SNI ในตัวประมวลผลข้อความแล้ว
  7. หากมีเครื่องมือประมวลผลข้อความมากกว่า 1 เครื่อง ให้ทำตามขั้นตอนข้างต้นซ้ำกับตัวประมวลผลข้อความทั้งหมด

การยืนยันการกำหนดค่า SNI บนตัวประมวลผลข้อความ

หัวข้อนี้จะอธิบายวิธีตรวจสอบว่าการอัปเดตการกำหนดค่า SNI ในโปรแกรมประมวลผลข้อความสำเร็จแล้ว

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

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

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

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

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

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

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

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