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

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

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

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

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

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

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

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

  1. เรียกใช้คำสั่ง openssl แล้วลองเชื่อมต่อกับชื่อโฮสต์ของเซิร์ฟเวอร์ที่เกี่ยวข้อง (เราเตอร์ Edge หรือเซิร์ฟเวอร์แบ็กเอนด์) โดยไม่ส่งชื่อเซิร์ฟเวอร์ ดังที่แสดงด้านล่าง
    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 เซิร์ฟเวอร์ คุณต้อง ทำขั้นตอนข้างต้นซ้ำกับเซิร์ฟเวอร์แบ็กเอนด์แต่ละเซิร์ฟเวอร์

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

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

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

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

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

ค้นหาโทเค็นสำหรับพร็อพเพอร์ตี้ 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. เอาต์พุตของคำสั่งนี้จะแสดงโทเค็นสำหรับพร็อพเพอร์ตี้ของผู้ประมวลผลข้อมูลข้อความ 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 ได้รับการอัปเดตใน Message Processor
  7. หากคุณมีโปรแกรมประมวลผลข้อความมากกว่าหนึ่งโปรแกรม ให้ทำขั้นตอนข้างต้นซ้ำในทุก ตัวประมวลผลข้อความ

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

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

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

ปิดใช้ SNI บน Message Processor

ขั้นตอนต่อไปนี้อธิบายวิธีปิดใช้ 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 ได้รับการอัปเดตใน Message Processor
  7. หากคุณมีโปรแกรมประมวลผลข้อความมากกว่าหนึ่งรายการ ให้ทำขั้นตอนข้างต้นซ้ำในทุก ตัวประมวลผลข้อความ

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

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

แม้ว่าคุณจะใช้โทเค็น conf_system_jsse.enableSNIExtension เพื่อ กำหนดค่า SNI บน Message Processor คุณต้องยืนยันว่าคุณสมบัติจริง ตั้งค่า 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