สร้างคีย์สโตร์และ Truststore สำหรับ Private Cloud เวอร์ชัน 4.17.09 และเวอร์ชันก่อนหน้า

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

เอกสารนี้จะอธิบายวิธีสร้าง แก้ไข และลบคีย์สโตร์และ Truststore สำหรับ Edge สำหรับ Private Cloud เวอร์ชัน 4.17.09 และเวอร์ชันก่อนหน้า

เกี่ยวกับคีย์สโตร์และ Truststore

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

  • keystore มีใบรับรอง TLS และคีย์ส่วนตัวที่ใช้ระบุเอนทิตีระหว่างการแฮนด์เชค TLS

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

    ใน TLS แบบ 2 ทาง ทั้งไคลเอ็นต์และเซิร์ฟเวอร์จะเก็บรักษาคีย์สโตร์โดยมีใบรับรองของตนเองและคีย์ส่วนตัวที่ใช้สำหรับการตรวจสอบสิทธิ์ร่วมกัน
  • truststore มีใบรับรองที่ใช้ยืนยันใบรับรองที่ได้รับซึ่งเป็นส่วนหนึ่งของการถ่ายโอน TLS

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

    เช่น ไคลเอ็นต์ TLS จะเชื่อมต่อกับเซิร์ฟเวอร์ TLS ที่เซิร์ฟเวอร์จะใช้ใบรับรองแบบ Self-signed เนื่องจากเป็นใบรับรองแบบ Self-signed ไคลเอ็นต์ตรวจสอบความถูกต้องกับ CA ไม่ได้ แต่ไคลเอ็นต์จะโหลดใบรับรองที่ลงชื่อด้วยตนเองของเซิร์ฟเวอร์ไว้ใน Truststore แทน จากนั้นเมื่อไคลเอ็นต์พยายามเชื่อมต่อกับเซิร์ฟเวอร์ ไคลเอ็นต์จะใช้ Truststore ของตัวเองเพื่อตรวจสอบใบรับรองที่ได้รับจากเซิร์ฟเวอร์

    สำหรับ TLS แบบ 2 ทาง ทั้งไคลเอ็นต์ TLS และเซิร์ฟเวอร์ TLS จะใช้ Truststore ได้ จำเป็นต้องใช้ Truststore เมื่อดำเนินการ TLS แบบ 2 ทางเมื่อ Edge ทำหน้าที่เป็นเซิร์ฟเวอร์ TLS

ใบรับรองอาจออกโดยผู้ออกใบรับรอง (CA) หรือจะลงนามด้วยตนเองด้วยคีย์ส่วนตัวที่คุณสร้างก็ได้ หากคุณมีสิทธิ์เข้าถึง CA โปรดทำตามวิธีการที่ CA ระบุไว้เพื่อสร้างคีย์และออกใบรับรอง หากไม่มีสิทธิ์เข้าถึง CA คุณสร้างใบรับรองแบบ Self-signed ได้โดยใช้เครื่องมือฟรีที่เปิดเผยต่อสาธารณะหลายรายการ เช่น openssl

การใช้คีย์สโตร์และ Truststore บน Edge

ใน Edge คีย์สโตร์จะมีไฟล์ JAR อย่างน้อย 1 ไฟล์ โดยที่ไฟล์ JAR ประกอบด้วยรายการต่อไปนี้

  • ใบรับรอง TLS เป็นไฟล์ PEM ซึ่งอาจเป็นใบรับรองที่ลงชื่อโดยผู้ออกใบรับรอง (CA) เชนใบรับรองที่ใบรับรองฉบับล่าสุดลงชื่อโดย CA หรือใบรับรองที่ลงนามด้วยตนเองก็ได้
  • คีย์ส่วนตัวที่เป็นไฟล์ PEM Edge รองรับคีย์สูงสุด 2,048 บิต คุณจะใส่รหัสผ่านหรือไม่ก็ได้

Truststore นั้นคล้ายกับคีย์สโตร์ เว้นแต่ว่าจะมีใบรับรองเป็นไฟล์ PEM เท่านั้น แต่ไม่มีคีย์ส่วนตัว

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

Edge มี API ที่คุณใช้สร้างคีย์สโตร์และ Truststore API จริงนั้นเหมือนกัน สิ่งที่แตกต่างคือเมื่อสร้างคีย์สโตร์ คุณจะต้องส่งไฟล์ JAR ที่มีใบรับรองและคีย์ส่วนตัว เมื่อสร้าง Truststore แล้ว คุณจะส่งเฉพาะใบรับรองเป็นไฟล์ PEM เท่านั้น

เกี่ยวกับรูปแบบของใบรับรองและไฟล์คีย์

ตัวอย่างในเอกสารนี้จะแสดงใบรับรอง TLS และคีย์ที่กำหนดเป็นไฟล์ PEM ซึ่งเป็นไปตามรูปแบบ X.509 หากไฟล์ PEM ไม่ได้กำหนดใบรับรองหรือคีย์ส่วนตัวไว้ คุณจะแปลงเป็นไฟล์ PEM ได้โดยใช้ยูทิลิตี เช่น openssl

แต่ไฟล์ .crt และ .key จํานวนมากจะอยู่ในรูปแบบ PEM อยู่แล้ว หากไฟล์เหล่านี้เป็นไฟล์ข้อความและอยู่ในลักษณะต่อไปนี้

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

หรือ

-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----

ซึ่งจะทำให้ไฟล์เข้ากันได้กับรูปแบบ PEM และคุณจะใช้ไฟล์ดังกล่าวในคีย์สโตร์หรือ Truststore ได้โดยไม่ต้องแปลงเป็นไฟล์ PEM

หากคุณมีเชนใบรับรองและต้องการใช้เชนนั้นในคีย์สโตร์หรือ Truststore คุณจะรวมใบรับรองทั้งหมดเป็นไฟล์ PEM ไฟล์เดียวโดยมีบรรทัดใหม่คั่นระหว่างใบรับรองแต่ละรายการได้ ใบรับรองต้องเรียงตามลำดับอย่างถูกต้อง และใบรับรองตัวสุดท้ายต้องเป็นใบรับรองรูทหรือใบรับรองกลางที่ลงชื่อโดยใบรับรองรูท

-----BEGIN CERTIFICATE-----
(Your Primary TLS certificate)
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
(Intermediate certificate)
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
(Root certificate or intermediate certificate signed by a root certificate)
-----END CERTIFICATE-----

ดูรายละเอียดเกี่ยวกับคีย์สโตร์ที่มีอยู่

ตรวจสอบสภาพแวดล้อมของคีย์สโตร์ที่มีอยู่โดยใช้ API แสดงรายการคีย์สโตร์และ Truststores ดังนี้

curl -X GET \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \
-u email:password

สำหรับลูกค้าระบบคลาวด์ คีย์สโตร์เริ่มต้นมีให้สำหรับองค์กรที่ทดลองใช้ฟรีทั้งในสภาพแวดล้อมการทดสอบและการผลิต คุณควรเห็นผลลัพธ์ต่อไปนี้สำหรับการเรียกนี้สำหรับสภาพแวดล้อมทั้ง 2 แบบ

[ "freetrial" ]

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

สำหรับลูกค้า Private Cloud อาร์เรย์ที่แสดงผลจะว่างเปล่าจนกว่าคุณจะสร้างคีย์สโตร์แรก

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

curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial \
-u email:password

การตอบกลับควรปรากฏเป็น:

{
 "certs" : [ "wildcard.apigee.net.crt" ],
 "keys" : [ "freetrial" ],
 "name" : "freetrial"
}

คุณยังสามารถดูข้อมูลนี้ใน UI การจัดการ Edge ได้เช่นกัน

  1. เข้าสู่ระบบ UI การจัดการ Edge ที่ https://enterprise.apigee.com (cloud) หรือ http://<ms-ip>:9000 (ภายในองค์กร) โดย <ms-ip> คือที่อยู่ IP ของโหนดเซิร์ฟเวอร์การจัดการ
  2. ในเมนู UI การจัดการ Edge ให้เลือกผู้ดูแลระบบ > ใบรับรอง TLS

ดูรายละเอียดใบรับรอง TLS

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

curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial \
-u email:password

ตัวอย่างคำตอบ

{
 "certs" : [ "wildcard.apigee.net.crt" ],
 "keys" : [ "freetrial" ],
 "name" : "freetrial"
}

จากนั้นใช้ค่าของพร็อพเพอร์ตี้ใบรับรองเพื่อรับรายละเอียดใบรับรอง ดังนี้

curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial/certs/wildcard.apigee.net.crt \
-u email:password

ตัวอย่างคำตอบ

{
 "certInfo" : [ {
   "expiryDate" : "Wed, 23 Apr 2014 20:50:02 UTC",
   "isValid" : "Yes",
   "issuer" : "CN=Go Daddy Secure Certificate Authority - G2, OU=http://certs.godaddy.com/repository/, O=&quot;GoDaddy.com, Inc.&quot;, L=Scottsdale, ST=Arizona, C=US",
   "subject" : CN=*.example.apigee.net, OU=Domain Control Validated",
   "subjectAlternativeNames" : ["*.example.apigee.net","*.example.apigee.net" ],
   "validFrom" : "Tue, 15 Apr 2014 09:17:03 UTC",
   "version" : 3
 } ],
 "name" : "example.apigee.net.crt"
}

คุณยังสามารถดูข้อมูลนี้ใน UI การจัดการ Edge ได้เช่นกัน

  1. เข้าสู่ระบบ UI การจัดการ Edge ที่ https://enterprise.apigee.com (cloud) หรือ http://<ms-ip>:9000 (ภายในองค์กร) โดย <ms-ip> คือที่อยู่ IP ของโหนดเซิร์ฟเวอร์การจัดการ
  2. ในเมนู UI การจัดการ Edge ให้เลือกผู้ดูแลระบบ > ใบรับรอง TLS

ใน Edge UI คุณระบุระยะเวลาล่วงหน้าที่ Edge จะระบุว่าใบรับรองจะหมดอายุได้ โดยค่าเริ่มต้น UI จะไฮไลต์ใบรับรองที่จะหมดอายุภายใน 10 วันถัดไป

สร้างคีย์สโตร์

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

การสร้างคีย์สโตร์มี 2 ขั้นตอนดังนี้

  1. สร้างไฟล์ JAR ที่มีใบรับรองและคีย์ส่วนตัว
  2. สร้างคีย์สโตร์และอัปโหลดไฟล์ JAR

สร้างไฟล์ JAR ที่มีใบรับรองและคีย์ส่วนตัว

สร้างไฟล์ JAR ด้วยคีย์ส่วนตัว ใบรับรอง และไฟล์ Manifest ไฟล์ JAR ต้องมีไฟล์และไดเรกทอรีต่อไปนี้

/META-INF/descriptor.properties
myCert.pem
myKey.pem

ในไดเรกทอรีที่มีคู่คีย์และใบรับรอง ให้สร้างไดเรกทอรีที่ชื่อ /META-INF จากนั้นสร้างไฟล์ชื่อ descriptor.properties ใน /META-INF ที่มีเนื้อหาต่อไปนี้

certFile={myCertificate}.pem
keyFile={myKey}.pem

สร้างไฟล์ JAR ที่มีคู่คีย์และใบรับรองของคุณดังนี้

jar -cf myKeystore.jar myCert.pem myKey.pem

เพิ่ม descriptor.properties ลงในไฟล์ JAR ดังนี้

jar -uf myKeystore.jar META-INF/descriptor.properties

สร้างคีย์สโตร์และอัปโหลดไฟล์ JAR

หากต้องการสร้างคีย์สโตร์ในสภาพแวดล้อม คุณต้องระบุชื่อคีย์สโตร์ไปยัง API สำหรับสร้างคีย์สโตร์หรือ Truststore เท่านั้น ชื่อต้องประกอบด้วยอักขระที่เป็นตัวอักษรและตัวเลขคละกันเท่านั้น

curl -X POST -H "Content-Type: text/xml" \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \
-d '<KeyStore name="myKeystore"/>' -u email:password

ตัวอย่างคำตอบ

{
 "certs" : [ ],
 "keys" : [ ],
 "name" : "myKeystore"
}

หลังจากสร้างคีย์สโตร์ที่มีชื่อในสภาพแวดล้อม คุณสามารถอัปโหลดไฟล์ JAR ที่มีใบรับรองและคีย์ส่วนตัวได้โดยใช้ อัปโหลดไฟล์ JAR ไปยัง Keystore API:

curl -X POST -H "Content-Type: multipart/form-data" \
-F file="@myKeystore.jar" -F password={key_pass} \ "https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/{myKeystore}/keys?alias={key_alias}" \
-u email:password

ที่ตัวเลือก -F ระบุเส้นทางไปยังไฟล์ JAR

ในการเรียกครั้งนี้ คุณระบุพารามิเตอร์การค้นหา 2 รายการ ได้แก่

  • alias - ระบุใบรับรองและคีย์ในคีย์สโตร์ เมื่อสร้างโฮสต์เสมือน คุณจะต้องอ้างอิงใบรับรองและคีย์โดยใช้ชื่อแฝง
  • password - รหัสผ่านสำหรับคีย์ส่วนตัว ไม่ใช้พารามิเตอร์นี้หากคีย์ส่วนตัวไม่มีรหัสผ่าน

ตรวจสอบว่าคีย์สโตร์ของคุณอัปโหลดอย่างถูกต้อง โดยทำดังนี้

curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myKeystore \
-u email:password

ตัวอย่างคำตอบ

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

สร้าง Truststore

API ที่คุณใช้สร้าง Truststore จะเหมือนกับ API ที่ใช้เพื่อสร้างคีย์สโตร์ ความแตกต่างเพียงอย่างเดียวคือการส่งไฟล์ใบรับรองเป็นไฟล์ PEM แทนที่จะเป็นไฟล์ JAR

หากใบรับรองเป็นส่วนหนึ่งของเชน คุณต้องอัปโหลดใบรับรองทั้งหมดในเชนแยกต่างหากไปยัง Truststore หรือสร้างไฟล์เดียวที่มีใบรับรองทั้งหมดโดยใส่บรรทัดใหม่ระหว่างใบรับรองแต่ละรายการในไฟล์ โดยทั่วไปใบรับรองฉบับสุดท้ายจะได้รับการลงนามโดยผู้ออกใบรับรอง ตัวอย่างเช่น ใน Truststore คุณอัปโหลดใบรับรองไคลเอ็นต์ client_cert_1 และใบรับรอง ca_cert ของผู้ออกใบรับรองไคลเอ็นต์

ในระหว่างการตรวจสอบสิทธิ์ TLS แบบ 2 ทาง การตรวจสอบสิทธิ์ไคลเอ็นต์จะสำเร็จเมื่อเซิร์ฟเวอร์ส่ง client_cert_1 ไปยังไคลเอ็นต์ซึ่งเป็นส่วนหนึ่งของกระบวนการแฮนด์เชค TLS

หรือคุณอาจมีใบรับรองที่ 2 คือ client_cert_2 ที่ลงนามโดยใบรับรองเดียวกันนั้น ซึ่งได้แก่ ca_cert แต่คุณไม่ต้องอัปโหลด client_cert_2 ไปยัง Truststore Truststore ยังคงมี client_cert_1 และ ca_cert

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

สร้าง Truststore ที่ว่างเปล่าในสภาพแวดล้อมโดยใช้สร้างคีย์สโตร์หรือ Truststore ซึ่งเป็น API เดียวกันกับที่คุณใช้สร้างคีย์สโตร์

curl -X POST -H "Content-Type: text/xml" -d \
'<KeyStore name="myTruststore"/>' \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \
-u email:password

อัปโหลดใบรับรองเป็นไฟล์ PEM ไปยัง Truststore โดยใช้ API อัปโหลดใบรับรองไปยัง Truststore ดังนี้

curl -X POST -H "Content-Type: multipart/form-data" -F file="@trust.pem" \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myTruststore/certs?alias=myTruststore \
-u email:password

ที่ตัวเลือก -F ระบุเส้นทางไปยังไฟล์ PEM

ลบคีย์สโตร์หรือ Truststore

คุณลบคีย์สโตร์หรือ Truststore ได้โดยใช้ API ลบคีย์สโตร์หรือ Truststore ดังนี้

curl -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myKeystoreName \
-u email:password

ตัวอย่างคำตอบ

{
 "certs" : [ ],
 "keys" : [ ],
 "name" : "myKeystoreName"
}

หากคุณลบคีย์สโตร์หรือ Truststore ที่โฮสต์เสมือนหรือปลายทาง/เป้าหมาย/เซิร์ฟเวอร์เป้าหมายใช้อยู่ การเรียก API ทั้งหมดผ่านโฮสต์เสมือนหรือปลายทาง/เซิร์ฟเวอร์เป้าหมายเป้าหมายจะล้มเหลว