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

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

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

TargetEndpoint เป็นรูปแบบขาออกที่เทียบเท่ากับ ProxyEndpoint TargetEndpoint ทำหน้าที่เป็นไคลเอ็นต์ HTTP จาก Edge ไปยังบริการแบ็กเอนด์ เมื่อสร้างพร็อกซี API คุณจะกำหนดค่าพร็อกซีให้ใช้ TargetEndpoints จำนวน 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. กำหนดค่า Truststore ตามที่อธิบายไว้ด้านล่างในเกี่ยวกับการกำหนดค่า TLS ด้วยแบ็กเอนด์
  7. ทำการเปลี่ยนแปลงและบันทึกพร็อกซี หากทำให้พร็อกซี API ใช้งานได้แล้ว การบันทึกจะทำให้ใช้งานได้อีกครั้งด้วยการตั้งค่าใหม่

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

คุณกำหนดค่า TargetEndpoints ให้อ้างอิง 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 คุณสามารถกำหนดค่า TargetServers ที่มีชื่อได้อย่างน้อย 1 รายการ ดังที่แสดงด้านล่าง

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

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

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

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

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

เราได้อธิบายข้อควรพิจารณาทั้ง 2 ด้านไว้ด้านล่างนี้

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

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

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

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

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

ดูข้อมูลเพิ่มเติมใน Keystores และ Truststores

เช่น

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

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

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

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

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

การแปลง TargetEndpoint หรือ TargetServer เพื่อใช้ข้อมูลอ้างอิง

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

  1. อัปเดตคำจำกัดความ TargetEndpoint หรือ TargetServer เพื่อใช้ข้อมูลอ้างอิง
  2. รีสตาร์ทตัวประมวลผลข้อความ Edge
    • สำหรับลูกค้า Cloud Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge เพื่อรีสตาร์ทตัวประมวลผลข้อความ
    • สำหรับลูกค้า Private Cloud ให้รีสตาร์ทตัวประมวลผลข้อความ Edge ทีละเครื่อง
  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 ตรวจสอบใบรับรองแบ็กเอนด์ คุณต้องสร้าง Truststore ที่มีใบรับรองแบ็กเอนด์หรือเชนใบรับรอง จากนั้นให้คุณระบุ Truststore ในคำจำกัดความ 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. หากต้องการตรวจสอบใบรับรองแบ็กเอนด์ ให้สร้าง Truststore บน Edge แล้วอัปโหลดใบรับรองแบ็กเอนด์หรือเชน CA ตามที่อธิบายไว้ในคีย์สโตร์และ Truststore สำหรับตัวอย่างนี้ หากคุณต้องสร้าง Truststore ให้ตั้งชื่อเป็น myTrustStore
  2. หากคุณสร้าง Truststore ให้ใช้การเรียก POST API ต่อไปนี้เพื่อสร้างข้อมูลอ้างอิงชื่อ myTrustStoreRef ไปยัง Truststore ที่คุณสร้างด้านบน

    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. ในเมนู UI การจัดการ Edge ให้เลือก API
    3. เลือกชื่อพร็อกซี API ที่ต้องการอัปเดต
    4. เลือกแท็บการพัฒนา
    5. ในส่วนปลายทางเป้าหมาย ให้เลือกค่าเริ่มต้น
    6. ในพื้นที่โค้ด ให้แก้ไของค์ประกอบ <HTTPTargetConnection> เพื่อเพิ่มองค์ประกอบ <SSLInfo> โปรดตรวจสอบว่าได้ระบุการอ้างอิง Truststore ที่ถูกต้องและตั้งค่า <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 แบบ 2 ทางให้กับเซิร์ฟเวอร์แบ็กเอนด์

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

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

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

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

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

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

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

วิธีกำหนดค่า TLS แบบ 2 ทาง

  1. สร้างคีย์สโตร์บน Edge แล้วอัปโหลดใบรับรองและคีย์ส่วนตัวโดยใช้ขั้นตอนที่อธิบายไว้ในที่ Keystores และ Truststores สำหรับตัวอย่างนี้ ให้สร้างคีย์สโตร์ชื่อ myTestKeystore ที่ใช้ชื่อแทน myKey สำหรับใบรับรองและคีย์ส่วนตัว
  2. ใช้การเรียก POST API ต่อไปนี้เพื่อสร้างข้อมูลอ้างอิงชื่อ 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

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

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

    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. ในเมนู UI การจัดการ Edge ให้เลือก API
    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> รวมถึงการใช้ตัวแปรเพื่อระบุค่า TargetEndpoint <SSLInfo> ได้ที่ข้อมูลอ้างอิงการกำหนดค่าพร็อกซี API

การเปิดใช้ SNI

Edge รองรับการใช้ Server Name Indication (SNI) จากผู้ประมวลผลข้อมูลข้อความไปยังปลายทางปลายทางใน Apigee Edge สำหรับ Cloud และการทำให้ Private Cloud ใช้งานได้

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