คุณกำลังดูเอกสารประกอบของ 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 ใน Message Processor เพื่อสื่อสารกับเซิร์ฟเวอร์แบ็กเอนด์ ที่รองรับ SNI
- ปิดใช้ SNI ใน Message Processor หากจำเป็น
- ตรวจสอบว่าการกำหนดค่า SNI ได้รับการอัปเดตใน Message Processor เรียบร้อยแล้ว
ก่อนเริ่มต้น
- หากคุณไม่คุ้นเคยกับ SNI โปรดอ่าน การใช้ SNI กับ Edge
- หากคุณไม่คุ้นเคยกับการกำหนดค่า Edge ใน Private Cloud โปรดอ่าน วิธีกำหนดค่า Edge
การระบุเซิร์ฟเวอร์ที่เปิดใช้ SNI
ส่วนนี้อธิบายวิธีระบุว่าเซิร์ฟเวอร์แบ็กเอนด์เปิดใช้ SNI หรือไม่
-
เรียกใช้คำสั่ง
opensslและลองเชื่อมต่อกับชื่อโฮสต์ของเซิร์ฟเวอร์ที่เกี่ยวข้อง (Edge Router หรือเซิร์ฟเวอร์แบ็กเอนด์) โดยไม่ส่งชื่อเซิร์ฟเวอร์ ดังที่แสดงด้านล่างopenssl s_client -connect hostname:port
-
คุณอาจได้รับใบรับรองและบางครั้งอาจพบว่าคำสั่ง
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
-
เรียกใช้คำสั่ง
opensslและลองเชื่อมต่อกับชื่อโฮสต์ของเซิร์ฟเวอร์ที่เกี่ยวข้อง (Edge Router หรือเซิร์ฟเวอร์แบ็กเอนด์) โดย ส่งชื่อเซิร์ฟเวอร์ ดังที่แสดงด้านล่างopenssl s_client -connect hostname:port -servername hostname
- หากคุณพบว่าการจับมือกันไม่สำเร็จในขั้นตอนที่ 1 หรือได้รับใบรับรองที่แตกต่างกันในขั้นตอนที่ 1 และขั้นตอนที่ 2 แสดงว่าเซิร์ฟเวอร์ที่ระบุเปิดใช้ SNI
- หากต้องการตรวจสอบเซิร์ฟเวอร์แบ็กเอนด์มากกว่า 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 ให้ทำตามขั้นตอนต่อไปนี้
ค้นหาโทเค็นสำหรับพร็อพเพอร์ตี้ jsse.enableSNIExtension
ขั้นตอนต่อไปนี้อธิบายวิธีค้นหาโทเค็นสำหรับ
jsse.enableSNIExtension พร็อพเพอร์ตี้:
-
ค้นหาพร็อพเพอร์ตี้
jsse.enableSNIExtensionในไดเรกทอรีแหล่งที่มาของ Message Processor/opt/apigee/edge-message-processor/sourceโดยใช้คำสั่งต่อไปนี้grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
-
เอาต์พุตของคำสั่งนี้จะแสดงโทเค็นสำหรับพร็อพเพอร์ตี้ของ 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
- ในเครื่อง Message Processor ให้เปิดไฟล์ต่อไปนี้ในเครื่องมือแก้ไข หากยังไม่มี
ให้สร้างไฟล์
/opt/apigee/customer/application/message-processor.properties
เช่น หากต้องการเปิดไฟล์โดยใช้
viให้ป้อนคำสั่งต่อไปนี้vi /opt/apigee/customer/application/message-processor.properties
-
เพิ่มบรรทัดในรูปแบบต่อไปนี้ลงในไฟล์พร็อพเพอร์ตี้
conf_system_jsse.enableSNIExtension=true
- บันทึกการเปลี่ยนแปลง
-
ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของผู้ใช้
apigeeดังที่แสดงด้านล่างchown apigee:apigee /opt/apigee/customer/application/message-processor.properties
-
รีสตาร์ท Message Processor ดังที่แสดงด้านล่าง
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- ตรวจสอบว่าการกำหนดค่า SNI ได้รับการอัปเดตใน Message Processor แล้ว
- หากมี 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
-
ในเครื่อง Message Processor ให้เปิดไฟล์ต่อไปนี้ในเครื่องมือแก้ไข หากยังไม่มี
ให้สร้างไฟล์
/opt/apigee/customer/application/message-processor.properties
เช่น หากต้องการเปิดไฟล์โดยใช้
viให้ป้อนคำสั่งต่อไปนี้vi /opt/apigee/customer/application/message-processor.properties
-
หากบรรทัด
conf_system_jsse.enableSNIExtension=trueอยู่ใน/opt/apigee/customer/application/message-processor.propertiesให้แก้ไขดังนี้conf_system_jsse.enableSNIExtension=false
- บันทึกการเปลี่ยนแปลง
-
ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของผู้ใช้
apigeeดังที่แสดงด้านล่างchown apigee:apigee /opt/apigee/customer/application/message-processor.properties
-
รีสตาร์ท Message Processor ดังที่แสดงด้านล่าง
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- ตรวจสอบว่าการกำหนดค่า SNI ได้รับการอัปเดตใน Message Processor แล้ว
- หากมี Message Processor มากกว่า 1 รายการ ให้ทำตามขั้นตอนข้างต้นซ้ำใน Message Processor ทั้งหมด
การตรวจสอบการกำหนดค่า SNI ใน Message Processor
ส่วนนี้อธิบายวิธีตรวจสอบว่าการกำหนดค่า SNI ได้รับการอัปเดตใน Message Processor เรียบร้อยแล้ว
แม้ว่าคุณจะใช้โทเค็น conf_system_jsse.enableSNIExtension เพื่อ
กำหนดค่า SNI ใน Message Processor แต่คุณต้องตรวจสอบว่าพร็อพเพอร์ตี้จริง
jsse.enableSNIExtensionได้รับการตั้งค่าด้วยค่าใหม่แล้ว
-
ในเครื่อง Message Processor ให้ค้นหาพร็อพเพอร์ตี้
jsse.enableSNIExtensionในไดเรกทอรี/opt/apigee/edge-message-processor/confและตรวจสอบว่าพร็อพเพอร์ตี้ได้รับการตั้งค่าด้วยค่าใหม่แล้วหรือไม่ ดังที่แสดงด้านล่างgrep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
-
หากการกำหนดค่า 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 ได้สำเร็จ -
หากยังเห็นค่าเก่าสำหรับพร็อพเพอร์ตี้
jsse.enableSNIExtensionให้ ตรวจสอบว่าคุณได้ทำตามขั้นตอนทั้งหมดที่ระบุไว้ในส่วนที่เหมาะสมเพื่อเปิดใช้ หรือปิดใช้ SNI อย่างถูกต้อง หากข้ามขั้นตอนใดไป ให้ทำตามขั้นตอนทั้งหมดอีกครั้งอย่างถูกต้อง - หากยังเปิดใช้/ปิดใช้ SNI ไม่ได้ โปรดติดต่อ ทีมสนับสนุนของ Apigee Edge