การเข้าถึงข้อมูลการเชื่อมต่อ TLS ในพร็อกซี API

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

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

ใน TLS แบบสองทาง ทั้งไคลเอ็นต์และ Edge จะส่งใบรับรองที่ได้รับการตรวจสอบแล้วว่าเป็นส่วนหนึ่งของคำขอ

  • Edge Router จะแสดงใบรับรองต่อไคลเอ็นต์ TLS เพื่อตรวจสอบสิทธิ์ จากนั้นไคลเอ็นต์ จะยืนยันข้อมูลประจำตัวของเซิร์ฟเวอร์ก่อนที่จะส่งใบรับรองไปยังเซิร์ฟเวอร์
  • ไคลเอ็นต์ TLS จะแสดงใบรับรองต่อ Edge เพื่อตรวจสอบสิทธิ์

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

การบันทึกข้อมูลการเชื่อมต่อ TLS

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

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

สำหรับ TLS แบบสองทาง Edge จะบันทึกข้อมูลทั้งหมดที่บันทึกสำหรับ TLS แบบทางเดียวได้ รวมถึงบันทึกข้อมูลเกี่ยวกับใบรับรองของไคลเอ็นต์ด้วย เช่น Edge จะบันทึกลายนิ้วมือ SHA1 ของใบรับรองไคลเอ็นต์และใบรับรองไคลเอ็นต์ในรูปแบบ PEM ได้

การบันทึกข้อมูลสำหรับ TLS แบบทางเดียวและสองทาง

ตารางต่อไปนี้แสดงตัวแปรโฟลว์ที่มีข้อมูลการเชื่อมต่อ TLS ที่ Edge บันทึกไว้ และเข้าถึงได้ในพร็อกซี API ระบบจะบันทึกข้อมูลนี้สำหรับ TLS แบบทางเดียว และสองทางโดยตั้งค่า <ConnectionProperties> เป็น "จริง" ใน คำจำกัดความของโฮสต์เสมือน

ตัวแปรโฟลว์ คำอธิบาย
tls.cipher การเข้ารหัสที่ใช้โดยการเชื่อมต่อ TLS
tls.protocol โปรโตคอลที่ใช้โดยการเชื่อมต่อ TLS
tls.server.name ชื่อเซิร์ฟเวอร์ SNI ที่ขอ
tls.session.id

ตัวระบุเซสชัน

ตัวแปรโฟลว์นี้จะใช้ได้เมื่อคุณตั้งค่า <ConnectionProperties> หรือ <ClientProperties> เป็น "จริง"

การบันทึกข้อมูล TLS เพิ่มเติมระหว่าง TLS แบบสองทาง

ตารางต่อไปนี้แสดงตัวแปรโฟลว์ที่มีรายละเอียดใบรับรองไคลเอ็นต์ที่ Edge บันทึกไว้ใน TLS แบบสองทาง ระบบจะบันทึกข้อมูลนี้สำหรับ TLS แบบสองทางโดยตั้งค่า <ClientProperties> เป็น "จริง" ในคำจำกัดความของโฮสต์เสมือน

ตัวแปรโฟลว์ คำอธิบาย
tls.client.s.dn ชื่อที่แยกความแตกต่าง (DN) ของเรื่องในใบรับรองไคลเอ็นต์
tls.client.i.dn ชื่อที่แยกความแตกต่าง (DN) ของผู้ออกในใบรับรองไคลเอ็นต์
tls.client.raw.cert ใบรับรองไคลเอ็นต์ในรูปแบบ PEM
tls.client.cert.serial หมายเลขซีเรียลของใบรับรองไคลเอ็นต์
tls.client.cert.fingerprint ลายนิ้วมือ SHA1 ของใบรับรองไคลเอ็นต์
tls.session.id

ตัวระบุเซสชัน

ตัวแปรโฟลว์นี้จะใช้ได้เมื่อคุณตั้งค่า <ConnectionProperties> หรือ <ClientProperties> เป็น "จริง"

การกำหนดค่าโฮสต์เสมือนเพื่อบันทึกข้อมูล TLS

หากต้องการกำหนดค่าโฮสต์เสมือนเพื่อบันทึกข้อมูล TLS ให้ตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้ ภายใต้ <PropagateTLSInformation> เป็น true

  • <ConnectionProperties>: เปิดใช้การบันทึกข้อมูลการเชื่อมต่อ TLS สำหรับ TLS แบบทางเดียวและสองทาง ค่าเริ่มต้นคือ false
  • <ClientProperties>: เปิดใช้การบันทึกข้อมูลเพิ่มเติม สำหรับ TLS แบบสองทาง ค่าเริ่มต้นคือ false

ตัวอย่างเช่น คำจำกัดความของโฮสต์เสมือนต่อไปนี้ใช้ TLS แบบสองทางและเปิดใช้การบันทึกข้อมูล TLS ทั้ง 2 ประเภท

<VirtualHost name="secure">
    ....
    <SSLInfo>
        <Enabled>true</Enabled>
        # Enable two-way TLS.
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
        <KeyAlias>ks-alias</KeyAlias>
        <KeyStore>ref://ks-ref</KeyStore>
        <TrustStore>ref://ts-ref</TrustStore>
    </SSLInfo>
    <PropagateTLSInformation>
        <ConnectionProperties>true</ConnectionProperties>
        <ClientProperties>true</ClientProperties>
    </PropagateTLSInformation>
</VirtualHost>

หากคุณส่งเนื้อหา JSON ให้ตั้งค่าพร็อพเพอร์ตี้ดังนี้

  "propagateTLSInformation" : {
    "connectionProperties" : true,
    "clientProperties" : true
  }

กำหนดขีดจำกัดขนาดส่วนหัว

เมื่อคุณเปิดใช้การบันทึกข้อมูล TLS ในโฮสต์เสมือน Edge จะส่งข้อมูลดังกล่าว โดยใช้ส่วนหัว HTTP ดังนั้นคุณต้องตรวจสอบว่าได้ตั้งค่าขีดจำกัดขนาดส่วนหัวอย่างเหมาะสม ตามที่คุณใช้ Edge for the Cloud หรือ Edge for the Private Cloud

  • Edge for the Cloud: Apigee จะตั้งค่าขนาดส่วนหัวอย่างเหมาะสม
  • Edge for the Private Cloud: ฟีเจอร์นี้ไม่พร้อมใช้งาน

การเข้าถึงตัวแปรโฟลว์ในพร็อกซี API

คุณสามารถเข้าถึงและตรวจสอบตัวแปรโฟลว์ TLS ได้จากภายในพร็อกซี API เช่น คุณใช้พร็อกซี AssignMessage เพื่อเข้าถึงตัวแปรเหล่านั้น หรือเข้าถึงตัวแปรใน JavaScript ด้วยพร็อกซี JavaScript ได้

นอกจากนี้ คุณยังอ้างอิงตัวแปรโฟลว์ในองค์ประกอบ <Condition> ของโฟลว์พร็อกซีหรือโฟลว์เป้าหมาย หรือใน <Step> หรือ <RouteRule> ได้ด้วย เช่น คุณกำหนดเส้นทาง คำขอไปยังเป้าหมายต่างๆ ตาม SN ของไคลเอ็นต์ได้

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