การกําหนดค่า TLS จาก Edge ไปยังแบ็กเอนด์ (Cloud และ Private Cloud)

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

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

TargetEndpoint เป็นคำจำกัดความขาออกของ ProxyEndpoint TargetEndpoint ทำหน้าที่ เป็นไคลเอ็นต์ HTTP จาก Edge ไปยังบริการแบ็กเอนด์ เมื่อสร้างพร็อกซี API คุณสามารถกำหนดค่า ให้ใช้ TargetEndpoint ตั้งแต่ 0 รายการขึ้นไป

ดูข้อมูลเพิ่มเติม

การกำหนดค่า TargetEndpoint หรือ TargetServer

หากต้องการกำหนดค่า TargetEndpoint ให้แก้ไขออบเจ็กต์ XML ที่กำหนด TargetEndpoint คุณสามารถ แก้ไข TargetEndpoint ได้โดยการแก้ไขไฟล์ XML ที่กำหนด TargetEndpoint ใน พร็อกซี API หรือแก้ไขใน UI การจัดการของ Edge

วิธีใช้ UI การจัดการของ Edge เพื่อแก้ไข TargetEndpoint

  1. เข้าสู่ระบบ UI การจัดการของ Edge ที่ https://enterprise.apigee.com
  2. เลือกชื่อพร็อกซี API ที่ต้องการอัปเดต
  3. เลือกแท็บพัฒนา
  4. เลือกค่าเริ่มต้น ในส่วนปลายทางเป้าหมาย
  5. คำจำกัดความ TargetEndpoint จะปรากฏในพื้นที่โค้ด โดยมีลักษณะคล้ายกับตัวอย่างด้านล่าง
    <TargetEndpoint name="default">
      <Description/>
      <FaultRules/>
      <Flows/>
      <PreFlow name="PreFlow">
        <Request/>
        <Response/>
      </PreFlow>
      <PostFlow name="PostFlow">
        <Request/>
        <Response/>
      </PostFlow>
      <HTTPTargetConnection>
        <Properties/>
        <SSLInfo>
          <Enabled>true</Enabled>
          <TrustStore>ref://myTrustStoreRef</TrustStore>
        </SSLInfo>
        <URL>https://mocktarget.apigee.net</URL>
      </HTTPTargetConnection>
    </TargetEndpoint>
  6. กำหนดค่า Trust Store ตามที่อธิบายไว้ด้านล่างใน ส่วนเกี่ยวกับการกำหนดค่า TLS กับแบ็กเอนด์
  7. ทำการเปลี่ยนแปลงและบันทึกพร็อกซี หากมีการใช้งานพร็อกซี API แล้ว การบันทึกจะทำให้ระบบใช้งานพร็อกซีอีกครั้งด้วยการตั้งค่าใหม่

โปรดสังเกตว่าคำจำกัดความ TargetEndpoint มีพร็อพเพอร์ตี้ name คุณใช้ค่าของ พร็อพเพอร์ตี้ name เพื่อกำหนดค่าคำจำกัดความ ProxyEndpoint ของพร็อกซี API ให้ใช้ TargetEndpoint ดูข้อมูลเพิ่มเติมได้ที่เอกสารอ้างอิงการกำหนดค่าพร็อกซี API

คุณสามารถกำหนดค่า TargetEndpoint ให้อ้างอิง TargetServer แทน URL เป้าหมายที่ชัดแจ้ง การกำหนดค่า TargetServer จะแยก URL ปลายทางที่เป็นรูปธรรมจาก การกำหนดค่า TargetEndpoint TargetServer ใช้เพื่อรองรับการจัดสรรภาระงานและการเฟลโอเวอร์ ในอินสแตนซ์เซิร์ฟเวอร์แบ็กเอนด์หลายรายการ

ตัวอย่างคำจำกัดความ TargetServer แสดงอยู่ด้านล่าง

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>80</Port>
  <IsEnabled>true</IsEnabled>
</TargetServer> 

TargetServer จะอ้างอิงตามชื่อใน <HTTPTargetConnection> องค์ประกอบในคำจำกัดความ TargetEndpoint คุณสามารถกำหนดค่า TargetServer ที่มีชื่อตั้งแต่ 1 รายการขึ้นไปได้ดังที่แสดงด้านล่าง

<TargetEndpoint name="default">
  ...
  <HTTPTargetConnection>
    <LoadBalancer>
      <Server name="target1" />
      <Server name="target2" />
    </LoadBalancer>
    <Path>/test</Path>
  </HTTPTargetConnection>
  ...
</TargetEndpoint>

ดูข้อมูลเพิ่มเติมได้ที่การจัดสรรภาระงาน ในเซิร์ฟเวอร์แบ็กเอนด์

เกี่ยวกับการกำหนดค่า TLS กับแบ็กเอนด์

ก่อนกำหนดค่าการเข้าถึง TLS ไปยังแบ็กเอนด์ คุณควรทำความเข้าใจ 2 ประเด็นสำคัญต่อไปนี้

  1. โดยค่าเริ่มต้น Edge จะไม่ตรวจสอบใบรับรองแบ็กเอนด์ คุณต้องสร้าง Trust Store เพื่อกำหนดค่า Edge ให้ตรวจสอบใบรับรอง
  2. ใช้การอ้างอิงเพื่อระบุคีย์สโตร์หรือ Trust Store ที่ Edge ใช้

คำแนะนำทั้ง 2 ข้ออธิบายไว้ด้านล่าง

การกำหนด Trust Store เพื่อเปิดใช้การตรวจสอบใบรับรอง

เมื่อส่งคำขอ TLS ผ่าน TargetEndpoint หรือ TargetServer โดยค่าเริ่มต้น Edge จะไม่ ตรวจสอบใบรับรอง TLS ที่ได้รับจากเซิร์ฟเวอร์แบ็กเอนด์ ซึ่งหมายความว่า Edge จะไม่ตรวจสอบ สิ่งต่อไปนี้

  • ใบรับรองได้รับการลงนามโดย CA ที่เชื่อถือได้
  • ใบรับรองยังไม่หมดอายุ
  • ใบรับรองมีชื่อทั่วไป หากมีชื่อทั่วไป Edge จะไม่ตรวจสอบ ว่าชื่อทั่วไปตรงกับชื่อโฮสต์ที่ระบุไว้ใน URL หรือไม่

หากต้องการกำหนดค่า Edge ให้ตรวจสอบใบรับรองแบ็กเอนด์ คุณต้องทำดังนี้

  1. สร้าง Trust Store ใน Edge
  2. อัปโหลดใบรับรองหรือเชนใบรับรองของเซิร์ฟเวอร์ไปยัง Trust Store หากใบรับรองของเซิร์ฟเวอร์ได้รับการลงนามโดยบุคคลที่สาม คุณจะต้องอัปโหลดเชนใบรับรองที่สมบูรณ์ รวมถึงใบรับรอง CA รูท ไปยัง Trust Store ไม่มี CA ที่เชื่อถือได้โดยนัย
  3. เพิ่ม Trust Store ลงในคำจำกัดความ TargetEndpoint หรือ TargetServer

ดูข้อมูลเพิ่มเติมได้ที่คีย์สโตร์และ Trust Store

ตัวอย่างเช่น

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

การใช้การอ้างอิง ไปยังคีย์สโตร์หรือ Trust Store

ตัวอย่างด้านล่างแสดงวิธีกำหนดค่า TargetEndpoint หรือ TargetServer ให้ รองรับ TLS เมื่อกำหนดค่า TLS คุณจะระบุ Trust Store และคีย์สโตร์เป็นส่วนหนึ่งของ คำจำกัดความ TargetEndpoint หรือ TargetServer

Apigee ขอแนะนำ อย่างยิ่ง ให้คุณใช้การอ้างอิงไปยังคีย์สโตร์และ Trust Store ในคำจำกัดความ TargetEndpoint หรือ TargetServer ข้อดีของการใช้การอ้างอิง คือคุณจะต้องอัปเดตการอ้างอิงให้ชี้ไปยังคีย์สโตร์หรือ Trust Store อื่นเพื่อ อัปเดตใบรับรอง TLS เท่านั้น

การอ้างอิงไปยังคีย์สโตร์และ Trust Store ใน คำจำกัดความ TargetEndpoint หรือ TargetServer จะทำงานในลักษณะเดียวกับการอ้างอิงสำหรับ โฮสต์เสมือน

การแปลง TargetEndpoint หรือ TargetServer ให้ใช้การอ้างอิง

คุณอาจมีคำจำกัดความ TargetEndpoint หรือ TargetServer ที่มีอยู่ซึ่ง ใช้ชื่อตามตัวอักษรของคีย์สโตร์และ Trust Store หากต้องการแปลงคำจำกัดความ TargetEndpoint หรือ TargetServer ให้ใช้การอ้างอิง ให้ทำดังนี้

  1. อัปเดตคำจำกัดความ TargetEndpoint หรือ TargetServer ให้ใช้การอ้างอิง
  2. รีสตาร์ท Edge Message Processor โดยทำดังนี้
    • สำหรับลูกค้า Public Cloud โปรดติดต่อ ทีมสนับสนุนของ Apigee Edge เพื่อรีสตาร์ท Message Processor
    • สำหรับลูกค้า**Private Cloud** โปรดรีสตาร์ท Edge Message Processor ทีละรายการ
  3. ยืนยันว่า TargetEndpoint หรือ TargetServer ทำงานอย่างถูกต้อง

การกำหนดค่า TLS ทางเดียวไปยังเซิร์ฟเวอร์แบ็กเอนด์

เมื่อใช้คำจำกัดความ TargetEndpoint การกำหนดค่าการเข้าถึง TLS ทางเดียวจาก Edge (ไคลเอ็นต์ TLS) ไปยังเซิร์ฟเวอร์แบ็กเอนด์ (เซิร์ฟเวอร์ TLS) ไม่ต้องมีการกำหนดค่าเพิ่มเติมใน Edge เซิร์ฟเวอร์แบ็กเอนด์มีหน้าที่กำหนดค่า TLS อย่างถูกต้อง

คุณเพียงต้องตรวจสอบว่าองค์ประกอบ <URL> ใน คำจำกัดความ TargetEndpoint อ้างอิงบริการแบ็กเอนด์ตามโปรโตคอล HTTPS และคุณ เปิดใช้ TLS แล้ว

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

หากคุณใช้ TargetServer เพื่อกำหนดบริการแบ็กเอนด์ ให้เปิดใช้ TLS ในคำจำกัดความ TargetServer โดยทำดังนี้

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
  </SSLInfo> 
</TargetServer> 

อย่างไรก็ตาม หากต้องการให้ Edge ตรวจสอบใบรับรองแบ็กเอนด์ คุณต้องสร้าง Trust Store ที่มีใบรับรองแบ็กเอนด์หรือเชนใบรับรอง จากนั้นระบุ Trust Store ใน คำจำกัดความ TargetEndpoint โดยทำดังนี้

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

หรือในคำจำกัดความ TargetServer โดยทำดังนี้

<TargetServer name="target1">
  <Host>mockserver.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
    <TrustStore>ref://myTrustStoreRef</TrustStore>
  </SSLInfo> 
</TargetServer>

วิธีกำหนดค่า TLS ทางเดียว

  1. หากต้องการตรวจสอบใบรับรองแบ็กเอนด์ ให้สร้าง Trust Store ใน Edge และอัปโหลด ใบรับรองแบ็กเอนด์หรือเชน CA ตามที่อธิบายไว้ใน คีย์สโตร์และ Trust Store ในตัวอย่างนี้ หากคุณต้องสร้าง Trust Store ให้ตั้งชื่อว่า myTrustStore
  2. หากสร้าง Trust Store แล้ว ให้ใช้การเรียก API POST ต่อไปนี้เพื่อสร้าง การอ้างอิงชื่อ myTrustStoreRef ไปยัง Trust Store ที่คุณสร้างไว้ ข้างต้น:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
      -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
      </ResourceReference>' -u email:password
    
  3. ใช้ UI การจัดการของ Edge เพื่ออัปเดตคำจำกัดความ TargetEndpoint สำหรับพร็อกซี API (หรือ หากคุณกำหนดพร็อกซี API ใน XML ให้แก้ไขไฟล์ XML สำหรับพร็อกซี)
    1. เข้าสู่ระบบ UI การจัดการของ Edge ที่ https://enterprise.apigee.com
    2. เลือก API ในเมนู UI การจัดการของ Edge
    3. เลือกชื่อพร็อกซี API ที่ต้องการอัปเดต
    4. เลือกแท็บการพัฒนา
    5. เลือกค่าเริ่มต้น ในส่วนปลายทางเป้าหมาย
    6. ในพื้นที่โค้ด ให้แก้องค์ประกอบ <HTTPTargetConnection> เพื่อ เพิ่มองค์ประกอบ <SSLInfo> ตรวจสอบว่าได้ระบุการอ้างอิง Trust Store ที่ถูกต้องและตั้งค่า <Enabled> เป็น "จริง" แล้ว
      <TargetEndpoint name="default">
        …
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <TrustStore>ref://myTrustStoreRef</TrustStore>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        …
      </TargetEndpoint>
    7. บันทึกพร็อกซี API หากมีการใช้งานพร็อกซี API แล้ว การบันทึกจะทำให้ระบบใช้งานพร็อกซีอีกครั้งด้วยการตั้งค่า ใหม่

การกำหนดค่า TLS สองทางไปยังเซิร์ฟเวอร์แบ็กเอนด์

หากต้องการรองรับ TLS สองทางระหว่าง Edge (ไคลเอ็นต์ TLS) กับเซิร์ฟเวอร์แบ็กเอนด์ (เซิร์ฟเวอร์ TLS) ให้ทำดังนี้

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

การใช้นามแฝงคีย์เพื่อระบุใบรับรองคีย์สโตร์

คุณสามารถกำหนดใบรับรองหลายรายการ โดยแต่ละรายการจะมีนามแฝงของตัวเองในคีย์สโตร์เดียวกัน โดยค่าเริ่มต้น Edge จะใช้ใบรับรองแรกที่กำหนดไว้ในคีย์สโตร์

คุณจะกำหนดค่า Edge ให้ใช้ใบรับรองที่ระบุโดยพร็อพเพอร์ตี้ <KeyAlias> ก็ได้ ซึ่งจะช่วยให้คุณกำหนดคีย์สโตร์เดียวสำหรับใบรับรองหลายรายการ จากนั้น เลือกใบรับรองที่ต้องการใช้ในคำจำกัดความ TargetServer หาก Edge ไม่พบใบรับรองที่มีนามแฝง ที่ตรงกับ <KeyAlias> ระบบจะใช้การดำเนินการเริ่มต้นในการเลือกใบรับรอง แรกในคีย์สโตร์

ผู้ใช้ Edge สำหรับ Public Cloud ต้องติดต่อ ทีมสนับสนุนของ Apigee Edge เพื่อเปิดใช้ฟีเจอร์นี้

การกำหนดค่า TLS สองทาง

วิธีกำหนดค่า TLS สองทาง

  1. สร้างคีย์สโตร์ใน Edge และอัปโหลดใบรับรองและคีย์ส่วนตัวโดยใช้ขั้นตอน ที่อธิบายไว้ที่นี่: คีย์สโตร์และ Trust Store ในตัวอย่างนี้ ให้สร้างคีย์สโตร์ชื่อ myTestKeystore ซึ่งใช้ นามแฝงชื่อ myKey สำหรับใบรับรองและคีย์ส่วนตัว
  2. ใช้การเรียก API POST ต่อไปนี้เพื่อสร้างการอ้างอิง ชื่อ myKeyStoreRef ไปยังคีย์สโตร์ที่สร้างไว้ข้างต้น:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myKeyStoreRef">
        <Refers>myTestKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    

    การอ้างอิงจะระบุชื่อคีย์สโตร์และประเภทการอ้างอิงเป็น KeyStore

    ใช้การเรียก API GET ต่อไปนี้เพื่อดูการอ้างอิง

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/myKeyStoreRef /
    -u email:password
    
  3. หากต้องการตรวจสอบใบรับรองแบ็กเอนด์ ให้สร้าง Trust Store ใน Edge และอัปโหลดใบรับรองและเชน CA ตามที่อธิบายไว้ที่นี่: คีย์สโตร์และ Trust Store ในตัวอย่างนี้ หากคุณต้องสร้าง Trust Store ให้ตั้งชื่อว่า myTrustStore
  4. หากสร้าง Trust Store แล้ว ให้ใช้การเรียก API POST ต่อไปนี้เพื่อสร้าง การอ้างอิงชื่อ myTrustStoreRef ไปยัง Trust Store ที่คุณสร้างไว้ ข้างต้น:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    
  5. ใช้ UI การจัดการของ Edge เพื่ออัปเดตคำจำกัดความ TargetEndpoint สำหรับพร็อกซี API (หรือ หากคุณกำหนดพร็อกซี API ใน XML ให้แก้ไขไฟล์ XML สำหรับพร็อกซี)
    1. เข้าสู่ระบบ UI การจัดการของ Edge ที่ https://enterprise.apigee.com
    2. เลือก API ในเมนู UI การจัดการของ Edge
    3. เลือกชื่อพร็อกซี API ที่ต้องการอัปเดต
    4. เลือกแท็บการพัฒนา
    5. เลือกค่าเริ่มต้น ในส่วนปลายทางเป้าหมาย
    6. ในพื้นที่โค้ด ให้แก้องค์ประกอบ <HTTPTargetConnection> เพื่อ เพิ่มองค์ประกอบ <SSLInfo> ตรวจสอบว่าได้ระบุคีย์สโตร์และนามแฝงคีย์ที่ถูกต้อง และตั้งค่าองค์ประกอบ <Enabled> และ <ClientAuthEnabled> เป็น "จริง" แล้ว
      <TargetEndpoint name="default">
        ...
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <ClientAuthEnabled>true</ClientAuthEnabled>
            <KeyStore>ref://myKeyStoreRef</KeyStore>
            <KeyAlias>myKey</KeyAlias>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        ...
      </TargetEndpoint>
    7. บันทึกพร็อกซี API หากมีการใช้งานพร็อกซี API แล้ว การบันทึกจะทำให้ระบบใช้งานพร็อกซีอีกครั้งด้วยการตั้งค่า ใหม่

ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกที่มีใน <TargetEndpoint> รวมถึงการใช้ตัวแปร เพื่อระบุค่า <SSLInfo> ของ TargetEndpoint ได้ที่ เอกสารอ้างอิงการกำหนดค่าพร็อกซี API

การเปิดใช้ SNI

Edge รองรับการใช้ Server Name Indication (SNI) จาก Message Processor ไปยังปลายทางเป้าหมาย ในการใช้งาน Apigee Edge สำหรับ Cloud และ Private Cloud

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