การใช้ SNI กับ Edge

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

การแสดงชื่อเซิร์ฟเวอร์ (Server Name Indication หรือ 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 บน Edge

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

orgName_envName_vhName

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

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

ในตัวอย่างนี้ เราเตอร์ใช้ cert/key จากโฮสต์เสมือนชื่อ 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/key เริ่มต้นบนเราเตอร์ได้ แทนที่จะใช้ cert/key จากโฮสต์เสมือนเริ่มต้น ใช้ขั้นตอนต่อไปนี้เพื่อกำหนดคู่ cert/key เริ่มต้นอย่างชัดแจ้ง

  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. เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงในไฟล์เพื่อให้คุณระบุ cert/key เริ่มต้นได้
    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 จากผู้ประมวลผลข้อมูลข้อความไปยังปลายทางเป้าหมายใน Apigee Edge สำหรับระบบคลาวด์และการติดตั้งใช้งาน 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. ที่โหนด Message Processor โหนดแรก ให้เปิดไฟล์ /opt/apigee4/conf/apigee/message-processor/system.properties ในตัวแก้ไข
  2. ตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้เป็น "จริง" ใน system.properties
    jsse.enableSNIExtension=true
  3. รีสตาร์ทตัวประมวลผลข้อความโดยทำดังนี้
    /opt/apigee4/bin/apigee-service message-processor restart
  4. ทำซ้ำขั้นตอนเหล่านี้ในโปรแกรมประมวลผลข้อความที่เหลือทั้งหมด

เปิดใช้ 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. ทำซ้ำขั้นตอนเหล่านี้ในโปรแกรมประมวลผลข้อความที่เหลือทั้งหมด