การใช้ SNI กับ Edge

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

การแสดงชื่อเซิร์ฟเวอร์ (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 ของโฮสต์เสมือน ในการระบุพร็อกซี API ที่จัดการคําขอ เราเตอร์จะเปรียบเทียบส่วนหัว Host ของคําขอขาเข้ากับรายการแฝงโฮสต์ที่ใช้ได้ซึ่งกำหนดโดยโฮสต์เสมือนทั้งหมด

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

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

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

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

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

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

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

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

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

ใน Edge for the 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

ในตัวอย่างนี้ เราเตอร์ใช้ใบรับรอง/คีย์จากโฮสต์เสมือนชื่อ 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. ทำขั้นตอนเหล่านี้ซ้ำกับเราเตอร์ที่เหลือทั้งหมด

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

  1. ในโหนดเราเตอร์แรก ให้คัดลอกใบรับรองและคีย์ส่วนตัวไปยังตำแหน่งในโหนดเราเตอร์ที่ผู้ใช้ apigee เข้าถึงได้ เช่น /opt/apigee/customer/application
  2. เปลี่ยนการเป็นเจ้าของไฟล์เป็น "apigee. user:
    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 จากโปรแกรมประมวลผลข้อความเพื่อกำหนดเป้าหมายอุปกรณ์ปลายทางใน Apigee Edge สำหรับ Cloud และสำหรับการติดตั้งใช้งานในระบบคลาวด์ส่วนตัว โดยค่าเริ่มต้น ระบบจะเปิดใช้ SNI ในเครื่องประมวลผลข้อความ Edge สำหรับระบบคลาวด์และปิดใช้ในระบบคลาวด์ส่วนตัว

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

Apigee ปิดใช้ SNI โดยค่าเริ่มต้นเพื่อให้ Edge สำหรับ Private Cloud ใช้งานร่วมกับแบ็กเอนด์เป้าหมายที่มีอยู่ได้แบบย้อนหลัง หากแบ็กเอนด์เป้าหมายได้รับการกําหนดค่าให้รองรับ 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. ทำขั้นตอนเหล่านี้ซ้ำกับตัวประมวลผลข้อความที่เหลือทั้งหมด

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