คุณกำลังดูเอกสารประกอบ 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 เพื่อตรวจสอบ ใบรับรองที่ลงชื่อด้วยตนเองที่ได้รับจากเซิร์ฟเวอร์ TLS หรือใบรับรองที่ไม่ได้ลงชื่อโดย CA ที่เชื่อถือได้ ในสถานการณ์นี้ ไคลเอ็นต์จะป้อนข้อมูล Truststore ด้วยใบรับรองที่ไคลเอ็นต์ เชื่อถือ จากนั้น เมื่อไคลเอ็นต์ได้รับใบรับรองเซิร์ฟเวอร์ ใบรับรองที่เข้ามาจะเป็น ได้รับการตรวจสอบกับใบรับรองใน Truststore แล้ว
เช่น ไคลเอ็นต์ TLS จะเชื่อมต่อกับเซิร์ฟเวอร์ TLS ซึ่งเซิร์ฟเวอร์ใช้ Self-Signed ใบรับรอง เนื่องจากเป็นใบรับรองที่ลงชื่อด้วยตนเอง ไคลเอ็นต์จึงไม่สามารถตรวจสอบกับ CA ได้ แต่ไคลเอ็นต์จะโหลดใบรับรองที่ลงนามด้วยตนเองของเซิร์ฟเวอร์ไว้ล่วงหน้าใน Truststore แทน จากนั้นให้ทำดังนี้ เมื่อไคลเอ็นต์พยายามเชื่อมต่อกับเซิร์ฟเวอร์ ไคลเอ็นต์จะใช้ Truststore เพื่อ ตรวจสอบใบรับรองที่ได้รับจากเซิร์ฟเวอร์
สำหรับ TLS แบบ 2 ทาง ทั้งไคลเอ็นต์ TLS และเซิร์ฟเวอร์ TLS จะใช้ Truststore ได้ Truststore จำเป็นเมื่อดำเนินการ TLS แบบ 2 ทางเมื่อ Edge ทำหน้าที่เป็นเซิร์ฟเวอร์ TLS
ใบรับรองออกให้โดยผู้ออกใบรับรอง (CA) หรือลงนามด้วยตนเองโดย คีย์ส่วนตัวที่คุณสร้างขึ้น หากคุณมีสิทธิ์เข้าถึง CA ให้ทำตามคำแนะนำที่ระบุโดย CA สำหรับสร้างคีย์และออกใบรับรอง หากคุณไม่มีสิทธิ์เข้าถึง CA คุณสามารถ สร้างใบรับรองที่ลงนามด้วยตนเองโดยใช้หนึ่งในเครื่องมือฟรีที่มีให้บริการแบบสาธารณะ เช่น openssl.
การติดตั้งใช้งาน Keystore และ Truststore บน Edge
ใน Edge คีย์สโตร์จะมีไฟล์ JAR อย่างน้อย 1 ไฟล์ โดยที่ไฟล์ JAR จะมีข้อมูลต่อไปนี้
- ใบรับรอง TLS เป็นไฟล์ PEM - ใบรับรองที่ลงชื่อโดยผู้ออกใบรับรอง (CA) ชุดใบรับรองที่ใบรับรองฉบับสุดท้ายได้รับการลงนามโดย CA หรือใบรับรองที่ลงนามด้วยตนเอง ใบรับรอง
- คีย์ส่วนตัวเป็นไฟล์ PEM Edge รองรับขนาดคีย์สูงสุด 2,048 บิต รหัสผ่านคือ ไม่บังคับ
Truststore คล้ายกับคีย์สโตร์ เว้นแต่ว่าจะมีเฉพาะใบรับรองที่เป็นไฟล์ PEM แต่ไม่มี คีย์ส่วนตัว
หากใบรับรองเป็นส่วนหนึ่งของเชน คีย์สโตร์/ทรัสต์สโตร์ต้องมีใบรับรองทั้งหมดใน เชน ไม่ว่าจะเป็นไฟล์ 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-----
ดูรายละเอียดเกี่ยวกับคีย์สโตร์ที่มีอยู่
ตรวจสอบสภาพแวดล้อมของคุณสำหรับคีย์สโตร์ที่มีอยู่โดยใช้แสดงรายการคีย์สโตร์ และ Truststores API ดังนี้
curl -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \ -u email:password
สำหรับลูกค้าระบบคลาวด์ คุณจะได้รับคีย์สโตร์เริ่มต้นสำหรับองค์กรที่ทดลองใช้ฟรีทั้ง สภาพแวดล้อมการทดสอบและการใช้งานจริง คุณควรเห็นผลลัพธ์ต่อไปนี้สำหรับการโทรนี้สำหรับทั้ง สภาพแวดล้อม:
[ "freetrial" ]
คุณสามารถใช้คีย์สโตร์เริ่มต้นนี้เพื่อทดสอบ API และพุช API เป็นเวอร์ชันที่ใช้งานจริงได้ แต่ ซึ่งปกติแล้วจะสร้างคีย์สโตร์ของคุณเองด้วยใบรับรองและคีย์ของคุณเอง ก่อนที่จะนำไปใช้งานจริง
สำหรับลูกค้า Private Cloud อาร์เรย์ที่แสดงผลจะว่างเปล่าจนกว่าคุณจะสร้างอาร์เรย์แรก คีย์สโตร์
ตรวจสอบเนื้อหาของคีย์สโตร์โดยใช้คำสั่ง รับ Keystore หรือ Truststore API สำหรับลูกค้าระบบคลาวด์ คุณควรเห็น 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 ดังนี้
- เข้าสู่ระบบ UI การจัดการ Edge ที่ https://enterprise.apigee.com (ระบบคลาวด์) หรือ
http://<ms-ip>:9000
(ภายในองค์กร) โดยที่<ms-ip>
คือ IP ของโหนดเซิร์ฟเวอร์การจัดการ - ในเมนู UI การจัดการ Edge ให้เลือกผู้ดูแลระบบ > ใบรับรอง TLS
รับรายละเอียดใบรับรอง TLS
คุณสามารถใช้ รับรายละเอียดใบรับรองจาก Keystore หรือ Truststore API เพื่อดูรายละเอียดเกี่ยวกับใบรับรอง 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" }
จากนั้นใช้ค่าของพร็อพเพอร์ตี้ certs เพื่อรับรายละเอียดใบรับรองดังนี้
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="GoDaddy.com, Inc.", 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 ดังนี้
- เข้าสู่ระบบ UI การจัดการ Edge ที่ https://enterprise.apigee.com (ระบบคลาวด์)
หรือ
http://<ms-ip>:9000
(ภายในองค์กร) โดยที่<ms-ip>
คือ IP ของโหนดเซิร์ฟเวอร์การจัดการ - ในเมนู UI การจัดการ Edge ให้เลือกผู้ดูแลระบบ > TLS ใบรับรอง
ใน Edge UI คุณสามารถระบุได้ล่วงหน้าว่า Edge จะแจ้งให้ทราบว่าใบรับรองกำลังจะใช้ใบรับรองใดอยู่ หมดอายุ โดยค่าเริ่มต้น UI จะไฮไลต์ใบรับรองใดก็ตามที่มีกำหนดเวลาหมดอายุในอีก 10 ข้างหน้า วัน
สร้างคีย์สโตร์
คีย์สโตร์เป็นของสภาพแวดล้อมในองค์กรโดยเฉพาะ เช่น การทดสอบหรือ Pro ของคุณ ดังนั้นหากต้องการทดสอบคีย์สโตร์ในสภาพแวดล้อมการทดสอบก่อนที่จะทำให้ใช้งานได้ ไปยังสภาพแวดล้อมการใช้งานจริง คุณต้องสร้างในทั้ง 2 สภาพแวดล้อม
การสร้างคีย์สโตร์มี 2 ขั้นตอนดังนี้
- สร้างไฟล์ JAR ที่มีใบรับรองและคีย์ส่วนตัว
- สร้างคีย์สโตร์และอัปโหลดไฟล์ 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
ในการสร้างคีย์สโตร์ในสภาพแวดล้อม คุณเพียงต้องระบุชื่อคีย์สโตร์ให้กับ สร้าง Keystore หรือ Truststore API ชื่อต้องประกอบด้วยอักขระที่เป็นตัวอักษรและตัวเลขคละกันเท่านั้น
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 จะเหมือนกับที่ใช้สร้างคีย์สโตร์ ความแตกต่างเพียงอย่างเดียวคือคุณต้องส่งไฟล์ใบรับรองเป็นไฟล์ 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 โดยใช้แอตทริบิวต์ อัปโหลดใบรับรองไปยัง Truststore API โดยทำดังนี้
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 ได้โดยใช้ วิธีลบ Keystore หรือ Truststore API
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 ทั้งหมดผ่านโฮสต์เสมือนหรือปลายทาง/เซิร์ฟเวอร์เป้าหมายเป้าหมาย จะล้มเหลว