คุณกําลังดูเอกสารประกอบของ 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 ได้ที่
- https://en.wikipedia.org/wiki/Server_Name_Indication
- http://blog.layershift.com/sni-ssl-production-ready/
การรองรับ SNI สําหรับคําขอไปยังพร็อกซี API ใน Edge
การสนับสนุน SNI สําหรับคําขอไปยังพร็อกซี API จะควบคุมโดยอีเมลแทนของโฮสต์และโฮสต์เสมือน
เกี่ยวกับโฮสต์เสมือนและชื่อแทนโฮสต์
ใน Edge โฮสต์เสมือนจะกำหนดที่อยู่ IP และพอร์ต หรือชื่อ DNS และพอร์ตที่แสดงพร็อกซี API และโดยส่วนขยายจะเป็น URL ที่แอปใช้เข้าถึงพร็อกซี API ที่อยู่ IP/ชื่อ DNS สอดคล้องกับเราเตอร์ Edge และหมายเลขพอร์ตคือพอร์ตที่เปิดอยู่ในเราเตอร์
เมื่อสร้างโฮสต์เสมือน คุณจะต้องระบุอีเมลแทนของโฮสต์เสมือนด้วย
ซึ่งโดยปกติจะเป็นชื่อ DNS ของโฮสต์เสมือน ในการระบุพร็อกซี API ที่จัดการคําขอ เราเตอร์จะเปรียบเทียบส่วนหัว Host
ของคําขอขาเข้ากับรายการแฝงโฮสต์ที่ใช้ได้ซึ่งกำหนดโดยโฮสต์เสมือนทั้งหมด
การใช้ทั้งอีเมลแทนของโฮสต์และหมายเลขพอร์ตสำหรับโฮสต์เสมือนต้องไม่ซ้ำกันสำหรับโฮสต์เสมือนทั้งหมดในการติดตั้ง Edge ซึ่งหมายความว่าโฮสต์เสมือนหลายรายการสามารถใช้หมายเลขพอร์ตเดียวกันได้หากมีชื่อแทนโฮสต์ต่างกัน
โฮสต์เสมือนยังกำหนดด้วยว่าระบบจะเข้าถึงพร็อกซี API โดยใช้โปรโตคอล HTTP หรือโปรโตคอล HTTPS ที่เข้ารหัสโดยใช้ TLS เมื่อกำหนดค่าโฮสต์เสมือนให้ใช้ HTTPS ให้เชื่อมโยงโฮสต์เสมือนกับคีย์สโตร์ที่เก็บใบรับรองและคีย์ส่วนตัวที่ใช้โดยโฮสต์เสมือนในระหว่างการจับมือ TLS
ดูข้อมูลเพิ่มเติมเกี่ยวกับโฮสต์เสมือนได้ที่
- เกี่ยวกับโฮสต์เสมือน
- การกำหนดค่าการเข้าถึง TLS ไปยัง API สําหรับ Private Cloud
- คีย์สโตร์และไดเรกทอรีที่เชื่อถือ
วิธีที่ 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
ตามลําดับตัวอักษร
วิธีเปิดใช้โฮสต์เสมือนเริ่มต้น
- แก้ไข
/opt/apigee/customer/application/router.properties
ในโหนดเราเตอร์แรก หากไม่มีไฟล์ดังกล่าว ให้สร้างไฟล์ - เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงในไฟล์เพื่อให้คุณกําหนดโฮสต์เสมือนเริ่มต้นได้
conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
- รีสตาร์ทเราเตอร์โดยทำดังนี้
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- ทำขั้นตอนเหล่านี้ซ้ำกับเราเตอร์ที่เหลือทั้งหมด
คุณกำหนดใบรับรอง/คีย์เริ่มต้นในเราเตอร์ได้อย่างชัดเจนแทนที่จะใช้ใบรับรอง/คีย์จากโฮสต์เสมือนเริ่มต้น ใช้ขั้นตอนต่อไปนี้เพื่อกำหนดคู่ใบรับรอง/คีย์เริ่มต้นที่ชัดเจน
- ในโหนดเราเตอร์แรก ให้คัดลอกใบรับรองและคีย์ส่วนตัวไปยังตำแหน่งในโหนดเราเตอร์ที่ผู้ใช้ apigee เข้าถึงได้ เช่น
/opt/apigee/customer/application
- เปลี่ยนการเป็นเจ้าของไฟล์เป็น "apigee. user:
chown apigee:apigee /opt/apigee/customer/application/myCert.pem
chown apigee:apigee /opt/apigee/customer/application/myKey.pem
- แก้ไข
/opt/apigee/customer/application/router.properties
หากไม่มีไฟล์ดังกล่าว ให้สร้างไฟล์ - เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงในไฟล์เพื่อให้คุณระบุใบรับรอง/คีย์เริ่มต้นได้
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 - ตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้ใน
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
- รีสตาร์ทเราเตอร์โดยทำดังนี้
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- ทำขั้นตอนเหล่านี้ซ้ำกับเราเตอร์ที่เหลือทั้งหมด
การรองรับ 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
- ในโหนดตัวประมวลผลข้อความแรก ให้เปิดไฟล์
/opt/apigee4/conf/apigee/message-processor/system.properties
ในเครื่องมือแก้ไข - ตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้เป็น "จริง" ใน
system.properties
jsse.enableSNIExtension=true
- รีสตาร์ทโปรแกรมประมวลผลข้อความ
/opt/apigee4/bin/apigee-service message-processor restart
- ทำขั้นตอนเหล่านี้ซ้ำกับตัวประมวลผลข้อความที่เหลือทั้งหมด
เปิดใช้ SNI ระหว่าง Edge กับแบ็กเอนด์สำหรับ Edge เวอร์ชัน 4.16.01 ขึ้นไป
ใช้ขั้นตอนต่อไปนี้เพื่อเปิดใช้ SNI
- แก้ไข
/opt/apigee/customer/application/message-processor.properties
ในโหนดตัวประมวลผลข้อความแรก หากไม่มีไฟล์ดังกล่าว ให้สร้างไฟล์ - เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงในไฟล์
conf_system_jsse.enableSNIExtension=true
- รีสตาร์ทโปรแกรมประมวลผลข้อความ โดยทำดังนี้
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- ทำขั้นตอนเหล่านี้ซ้ำกับตัวประมวลผลข้อความที่เหลือทั้งหมด