การใช้ SNI กับ Edge

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

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

ตัวอย่างเช่น หากเป้าหมายคำขอคือ https://example.com/request/path ไคลเอ็นต์ TLS จะเพิ่มส่วนขยาย server_name ลงในแฮนด์เชค TLS ตามที่แสดงด้านล่าง

Edge รองรับ SNI สำหรับรายการต่อไปนี้

  • คำขอจากแอปไคลเอ็นต์ที่ส่งไปยังพร็อกซี API ในสถานการณ์นี้ Edge จะทำหน้าที่เป็น TLS เซิร์ฟเวอร์
  • คำขอจาก Edge ไปยังแบ็กเอนด์ ในสถานการณ์นี้ Edge จะทำหน้าที่เป็นไคลเอ็นต์ TLS

ดูข้อมูลเพิ่มเติมเกี่ยวกับ SNI ได้ที่

การรองรับ SNI สำหรับคำขอไปยังพร็อกซี API ใน ขอบ

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

เกี่ยวกับระบบเสมือนจริง โฮสต์และชื่อแทนของโฮสต์

เมื่อใช้ Edge โฮสต์เสมือนจะกำหนดที่อยู่ IP และพอร์ต หรือชื่อและพอร์ต DNS ที่พร็อกซี API เปิดเผย และ URL ที่แอปใช้ในการเข้าถึงพร็อกซี API ตามส่วนขยาย ที่อยู่ IP/ชื่อ DNS สอดคล้องกับ Edge Router และหมายเลขพอร์ตคือพอร์ตแบบเปิดใน เราเตอร์

เมื่อคุณสร้างโฮสต์เสมือน คุณต้องระบุชื่อแทนของโฮสต์ของโฮสต์เสมือน โดยทั่วไปจะเป็นชื่อ DNS ของโฮสต์เสมือน ในการพิจารณาพร็อกซี API ที่ จัดการคำขอ เราเตอร์จะเปรียบเทียบส่วนหัว Host ของคำขอที่เข้ามาใหม่กับ รายการของชื่อแทนโฮสต์ที่ใช้ได้ซึ่งกำหนดโดยโฮสต์เสมือนทั้งหมด

ค่าผสมของชื่อแทนโฮสต์และหมายเลขพอร์ตสำหรับโฮสต์เสมือนต้องไม่ซ้ำกันสำหรับ โฮสต์เสมือนในการติดตั้ง Edge ซึ่งหมายความว่าโฮสต์เสมือนหลายรายการสามารถใช้ฟังก์ชัน หมายเลขพอร์ตเดียวกัน หากมีชื่อแทนโฮสต์ต่างกัน

โฮสต์เสมือนจะกำหนดด้วยว่าจะมีการเข้าถึงพร็อกซี API โดยใช้โปรโตคอล HTTP หรือ ผ่านโปรโตคอล HTTPS ที่เข้ารหัสโดยใช้ TLS เมื่อกำหนดค่าโฮสต์เสมือนเพื่อใช้ HTTPS เชื่อมโยงโฮสต์เสมือนกับคีย์สโตร์ที่มีใบรับรองและคีย์ส่วนตัวที่ใช้โดย โฮสต์เสมือนระหว่างการแฮนด์เชค TLS

ดูข้อมูลเพิ่มเติมเกี่ยวกับโฮสต์เสมือนได้ที่

วิธีที่ SNI ทำงานร่วมกับ ชื่อแทนโฮสต์

SNI ให้คุณกำหนดโฮสต์เสมือนหลายรายการบนพอร์ตเดียวกัน โดยแต่ละโฮสต์มี ใบรับรองและคีย์ TLS จากนั้น Edge จะกำหนดโฮสต์เสมือน และคู่คีย์ cert/คีย์ที่ TLS ใช้ อิงจาก server_name ในคำขอแฮนด์เชค TLS

Edge Router จะอ่านส่วนขยาย server_name ในแฮนด์เชค TLS ก่อน แล้วจึงใช้เพื่อค้นหาชื่อแทนของโฮสต์จากอุปกรณ์เสมือนทั้งหมด ผู้จัดรายการ หากเราเตอร์ตรวจพบการจับคู่กับชื่อแทนโฮสต์ เราเตอร์จะใช้ใบรับรอง TLS และคีย์จาก โฮสต์เสมือนที่เชื่อมโยงกับชื่อแทนของโฮสต์ หากไม่พบรายการที่ตรงกัน ระบบจะดำเนินการแฮนด์เชค TLS ไม่สำเร็จ

แทนที่จะทำให้แฮนด์เชค TLS ล้มเหลว คุณสามารถกำหนด cert/คู่คีย์เริ่มต้น ได้โดยทำดังนี้ ดังที่อธิบายไว้ในส่วนถัดไป

การกำหนดใบรับรอง/คู่คีย์เริ่มต้นใน Edge สำหรับระบบคลาวด์

Apigee มีใบรับรอง TLS และคีย์ส่วนตัวเพื่อรองรับ HTTPS แม้ว่าลูกค้าหลายราย ต้องการใช้ใบรับรองและคีย์ส่วนตัวของตนเองเมื่อติดตั้งใช้งาน คุณก็สามารถทำให้ API ใช้งานได้ โดยใช้ใบรับรองและคีย์ Apigee

ใน Edge สำหรับระบบคลาวด์ หากเราเตอร์จับคู่ส่วนหัว SNI กับชื่อแทนโฮสต์ไม่ได้ หรือหากเราเตอร์ ไคลเอ็นต์ไม่รองรับ SNI เราเตอร์จะใช้ใบรับรองเริ่มต้นที่ Apigee ระบุไว้ ซึ่งก็คือ *.apigee.net

การกำหนดใบรับรอง/คู่คีย์เริ่มต้นใน Edge สำหรับ Private Cloud

ใน Edge สำหรับ Private Cloud หากไม่พบรายการที่ตรงกันระหว่างส่วนขยาย server_name และชื่อแทนของโฮสต์ จากโฮสต์เสมือนทั้งหมด หรือหากไคลเอ็นต์ที่ส่งคำขอไม่สนับสนุน SNI คุณสามารถกำหนดค่า เราเตอร์เพื่อใช้ใบรับรอง/คีย์จากโฮสต์เสมือนเริ่มต้นบนพอร์ต โฮสต์เสมือนเริ่มต้นคือ กำหนดโดยชุดค่าผสมของชื่อองค์กร ชื่อสภาพแวดล้อม และชื่อโฮสต์เสมือนใน แบบฟอร์ม:

orgName_envName_vhName

เราเตอร์ใช้ cert/คีย์จากชุดค่าผสมของ orgName_envName_vhName ที่ จะมาก่อนตามลำดับตัวอักษร ตัวอย่างเช่น คำขอจะส่งมาที่พอร์ต 443 และมี โฮสต์เสมือน 2 รายการที่กำหนดไว้สำหรับองค์กร example ในสภาพแวดล้อม prod:

  • ชื่อโฮสต์เสมือน = default
  • ชื่อโฮสต์เสมือน = test

ในตัวอย่างนี้ เราเตอร์จะใช้ cert/คีย์จากโฮสต์เสมือนที่ชื่อ default เพราะ example_prod_default มาก่อน example_prod_test ตามลำดับตัวอักษร

วิธีเปิดใช้งานโฮสต์เสมือนเริ่มต้น

  1. ในโหนดเราเตอร์แรก ให้แก้ไข /opt/apigee/customer/application/router.properties หากไม่มี ให้สร้างไฟล์ดังกล่าว
  2. เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงในไฟล์เพื่อให้คุณกำหนดโฮสต์เสมือนเริ่มต้นได้
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  3. รีสตาร์ทเราเตอร์ดังนี้
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  4. ทำซ้ำขั้นตอนเหล่านี้บนเราเตอร์ที่เหลือทั้งหมด

แทนที่จะใช้ cert/คีย์จากโฮสต์เสมือนที่เป็นค่าเริ่มต้น คุณสามารถกำหนดคำสั่ง ใบรับรอง/คีย์เริ่มต้นบนเราเตอร์ ใช้ขั้นตอนต่อไปนี้เพื่อกำหนดค่าเริ่มต้นที่ชัดเจน คู่คีย์/การรับรอง:

  1. ในโหนดเราเตอร์แรก ให้คัดลอกใบรับรองและคีย์ส่วนตัวไปยังตำแหน่งบนโหนดเราเตอร์ ที่ผู้ใช้ Apigee เข้าถึงได้ เช่น /opt/apigee/customer/application
  2. เปลี่ยนการเป็นเจ้าของไฟล์เป็น "Apigee ผู้ใช้:
    chown apigee:apigee /opt/apigee/customer/application/myCert.pem
    chown apigee:apigee /opt/apigee/customer/application/myKey.pem
  3. แก้ไข /opt/apigee/customer/application/router.properties หากไม่มี ให้สร้างไฟล์ดังกล่าว
  4. เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงในไฟล์เพื่อให้คุณระบุใบรับรอง/คีย์เริ่มต้นได้
    วันที่ conf_load_balancing_load.balancing.driver.nginx.fallback.server.default.ssl.template.enabled=true
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  5. ตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้ใน router.properties เพื่อระบุตําแหน่ง ของใบรับรองและคีย์:
    conf_load_balancing_load.balancing.driver.nginx.ssl.cert=/opt/apigee/customer/application/myCert.pem
    conf_load_balancing_load.balancing.driver.nginx.ssl.key=/opt/apigee/customer/application/myKey.pem
  6. รีสตาร์ทเราเตอร์ดังนี้
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. ทำซ้ำขั้นตอนเหล่านี้บนเราเตอร์ที่เหลือทั้งหมด

การรองรับ SNI สำหรับคำขอจาก Edge ไปยัง แบ็กเอนด์

Edge รองรับการใช้ SNI จาก Message Processor เพื่อกำหนดเป้าหมายปลายทางใน Apigee Edge สำหรับ Cloud และสำหรับการติดตั้งใช้งาน Private Cloud โดยค่าเริ่มต้น ระบบจะเปิดใช้ SNI ในโปรแกรมประมวลผลข้อความ Edge สำหรับระบบคลาวด์ และปิดใช้ใน Private Cloud

การใช้ SNI ไปยังแบ็กเอนด์ใน Edge สำหรับ Private Cloud

Edge สำหรับ Private Cloud สามารถใช้งานร่วมกับแบ็กเอนด์เป้าหมายที่มีอยู่ได้แบบย้อนหลัง Apigee ได้ปิดใช้ SNI เป็นค่าเริ่มต้นแล้ว หากมีการกำหนดค่าแบ็กเอนด์เป้าหมายให้รองรับ SNI คุณจะดำเนินการต่อไปนี้ได้ เปิดใช้ฟีเจอร์นี้ตามที่อธิบายไว้ด้านล่างสำหรับเวอร์ชัน Edge ของคุณ

โดยไม่ต้องกําหนดค่าอื่นๆ สําหรับ Edge โดยเฉพาะ หากมีการกำหนดค่าสภาพแวดล้อมเป้าหมายเป็น SNI และ Edge รองรับ Edge จะดึงข้อมูลชื่อโฮสต์จาก URL ของคำขอและเพิ่มชื่อโฮสต์โดยอัตโนมัติ ไปยังคำขอแฮนด์เชค TLS

เปิดใช้ SNI ระหว่าง Edge กับแบ็กเอนด์สำหรับ Edge เวอร์ชัน 4.15.07.0x

โปรดใช้กระบวนการต่อไปนี้เพื่อเปิดใช้ SNI

  1. ในโหนดตัวประมวลผลข้อความแรก ให้เปิดไฟล์ /opt/apigee4/conf/apigee/message-processor/system.properties ในเครื่องมือแก้ไข
  2. ตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้เป็น "จริง" ใน system.properties
    jsse.enableSNIExtension=true
  3. รีสตาร์ทโปรแกรมประมวลผลข้อความ
    /opt/apigee4/bin/apigee-service message-processor restart
  4. ทำซ้ำขั้นตอนเหล่านี้ใน Message Processor ที่เหลือทั้งหมด

เปิดใช้ SNI ระหว่าง Edge กับแบ็กเอนด์สำหรับ Edge เวอร์ชัน 4.16.01 ขึ้นไป

โปรดใช้กระบวนการต่อไปนี้เพื่อเปิดใช้ SNI

  1. ในโหนดตัวประมวลผลข้อความแรก ให้แก้ไข /opt/apigee/customer/application/message-processor.properties หากไม่มี ให้สร้างไฟล์ดังกล่าว
  2. เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงในไฟล์
    conf_system_jsse.enableSNIExtension=true
  3. รีสตาร์ทโปรแกรมประมวลผลข้อความ
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  4. ทำซ้ำขั้นตอนเหล่านี้ใน Message Processor ที่เหลือทั้งหมด