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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ตารางต่อไปนี้แสดงตัวแปรโฟลว์ที่มีรายละเอียดใบรับรองไคลเอ็นต์ที่ Edge บันทึกไว้ ใน TLS แบบ 2 ทาง ระบบจะบันทึกข้อมูลนี้สำหรับ TLS แบบ 2 ทางโดยการตั้งค่า <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 แบบ 1 ทิศทางและ 2 ทิศทาง ค่าเริ่มต้นคือ false
  • <ClientProperties>: เปิดใช้การบันทึกข้อมูลเพิ่มเติม สำหรับ TLS แบบ 2 ทาง ค่าเริ่มต้นคือ false

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

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

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

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

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

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