คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
เอกสารนี้อธิบายวิธีสร้าง แก้ไข และลบคีย์สโตร์และทรัสต์สโตร์สําหรับ Edge สำหรับ Private Cloud เวอร์ชัน 4.17.09 และเวอร์ชันก่อนหน้า
เกี่ยวกับคีย์สโตร์และทรัสต์สโตร์
คีย์สโตร์และ Truststore กำหนดที่เก็บใบรับรองความปลอดภัยที่ใช้สำหรับ TLS การเข้ารหัส ความแตกต่างหลักๆ ระหว่างทั้ง 2 ฟีเจอร์คือตำแหน่งที่ใช้ในการแฮนด์เชค TLS กระบวนการ:
- คีย์สโตร์ประกอบด้วยใบรับรอง TLS และคีย์ส่วนตัวที่ใช้ระบุเอนทิตีระหว่างแฮนด์เชค TLS
ใน TLS ทางเดียว เมื่อไคลเอ็นต์เชื่อมต่อกับปลายทาง TLS บนเซิร์ฟเวอร์ คีย์สโตร์ของเซิร์ฟเวอร์ แสดงใบรับรองของเซิร์ฟเวอร์ (ใบรับรองสาธารณะ) แก่ไคลเอ็นต์ จากนั้นไคลเอ็นต์จะตรวจสอบใบรับรองดังกล่าวกับผู้ออกใบรับรอง (CA) เช่น Symantec หรือ VeriSign
ใน TLS แบบ 2 ทาง ทั้งไคลเอ็นต์และเซิร์ฟเวอร์จะเก็บรักษาคีย์สโตร์ที่มีใบรับรองและคีย์ส่วนตัวของตนเองเพื่อใช้ตรวจสอบสิทธิ์แบบคู่ - Truststore มีใบรับรองที่ใช้ยืนยันใบรับรองที่ได้รับในฐานะ
ของการแฮนด์เชค TLS
ใน TLS แบบ 1 ทิศทาง คุณไม่จำเป็นต้องใช้ TrustStore หากใบรับรองได้รับการลงนามโดย CA ที่ถูกต้อง หากใบรับรองที่ได้รับจากไคลเอ็นต์ TLS ลงนามโดย CA ที่ถูกต้อง ไคลเอ็นต์จะส่งคำขอไปยัง CA เพื่อตรวจสอบสิทธิ์ใบรับรอง โดยปกติแล้ว ไคลเอ็นต์ TLS จะใช้ Trust Store เพื่อตรวจสอบใบรับรองแบบ Self-signed ที่ได้รับจากเซิร์ฟเวอร์ TLS หรือใบรับรองที่ไม่ได้ลงนามโดย CA ที่เชื่อถือ ในสถานการณ์นี้ ไคลเอ็นต์จะป้อนข้อมูล Truststore ด้วยใบรับรองที่ไคลเอ็นต์ เชื่อถือ จากนั้นเมื่อไคลเอ็นต์ได้รับใบรับรองเซิร์ฟเวอร์ ระบบจะตรวจสอบใบรับรองขาเข้าเทียบกับใบรับรองในคลังใบรับรองที่เชื่อถือ
เช่น ไคลเอ็นต์ TLS จะเชื่อมต่อกับเซิร์ฟเวอร์ TLS ที่เซิร์ฟเวอร์ใช้ Self-Signed ใบรับรอง เนื่องจากเป็นใบรับรองที่ลงนามด้วยตนเอง ไคลเอ็นต์จึงตรวจสอบกับ CA ไม่ได้ แต่ไคลเอ็นต์จะโหลดใบรับรองที่ลงนามด้วยตนเองของเซิร์ฟเวอร์ลงในที่เก็บข้อมูลที่เชื่อถือไว้ล่วงหน้าแทน จากนั้นให้ทำดังนี้ เมื่อไคลเอ็นต์พยายามเชื่อมต่อกับเซิร์ฟเวอร์ ไคลเอ็นต์จะใช้ Truststore เพื่อ ตรวจสอบใบรับรองที่ได้รับจากเซิร์ฟเวอร์
สำหรับ TLS แบบ 2 ทาง ทั้งไคลเอ็นต์ TLS และเซิร์ฟเวอร์ TLS จะใช้ TrustStore ได้ ต้องมีที่เก็บข้อมูลที่เชื่อถือเมื่อใช้ TLS แบบ 2 ทางเมื่อ Edge ทำหน้าที่เป็นเซิร์ฟเวอร์ TLS
ใบรับรองอาจออกโดยผู้ออกใบรับรอง (CA) หรือจะลงนามด้วยตนเองโดยใช้คีย์ส่วนตัวที่คุณสร้างขึ้นก็ได้ หากคุณมีสิทธิ์เข้าถึง CA ให้ทำตามคำแนะนำที่ระบุโดย CA สำหรับสร้างคีย์และออกใบรับรอง หากคุณไม่มีสิทธิ์เข้าถึง CA คุณสามารถ สร้างใบรับรองที่ลงนามด้วยตนเองโดยใช้หนึ่งในเครื่องมือฟรีที่มีให้บริการแบบสาธารณะ เช่น openssl.
การใช้คีย์สโตร์และทรัสต์สโตร์ใน Edge
ใน Edge คีย์สโตร์จะมีไฟล์ JAR อย่างน้อย 1 ไฟล์ โดยที่ไฟล์ JAR จะมีข้อมูลต่อไปนี้
- ใบรับรอง TLS เป็นไฟล์ PEM - ใบรับรองที่ลงชื่อโดยผู้ออกใบรับรอง (CA) ชุดใบรับรองที่ใบรับรองฉบับสุดท้ายได้รับการลงนามโดย CA หรือใบรับรองที่ลงนามด้วยตนเอง ใบรับรอง
- คีย์ส่วนตัวเป็นไฟล์ PEM Edge รองรับขนาดคีย์สูงสุด 2048 บิต คุณจะใช้รหัสผ่านหรือไม่ก็ได้
Truststore คล้ายกับคีย์สโตร์ เว้นแต่ว่าจะมีเฉพาะใบรับรองที่เป็นไฟล์ PEM แต่ไม่มี คีย์ส่วนตัว
หากใบรับรองเป็นส่วนหนึ่งของเชน คีย์สโตร์/ทรัสต์สโตร์ต้องมีใบรับรองทั้งหมดในเชน ไม่ว่าจะอยู่ในรูปแบบไฟล์ PEM แต่ละไฟล์หรือไฟล์เดียว หากคุณใช้ไฟล์เดียว ใบรับรองต้องเรียงตามลำดับ โดยใบรับรองแรกในไฟล์คือใบรับรองที่ใช้สำหรับ TLS ตามด้วยเชนใบรับรองตามลำดับไปจนถึงใบรับรอง CA คุณต้องแทรกบรรทัดว่างระหว่าง ใบรับรองแต่ละรายการในไฟล์
Edge มี API ที่คุณใช้สร้างคีย์สโตร์และทรัสต์สโตร์ 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 และคุณจะใช้ไฟล์เหล่านั้นในคีย์สโตร์หรือทรัสต์สโตร์ได้โดยไม่ต้องแปลงเป็นไฟล์ 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 อาร์เรย์ที่แสดงผลจะว่างเปล่าจนกว่าคุณจะสร้างอาร์เรย์แรก คีย์สโตร์
ตรวจสอบเนื้อหาของคีย์สโตร์โดยใช้ Get a Keystore or 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
คุณสามารถใช้ Get Cert Details from a Keystore or Truststore API เพื่อดูรายละเอียดเกี่ยวกับใบรับรอง TLS ในคีสโตร์ เช่น วันที่หมดอายุและผู้ออกใบรับรอง ก่อนอื่น ให้ดูชื่อใบรับรองที่คุณสนใจ ตัวอย่างนี้จะดึงข้อมูลสําหรับคีย์สโตร์ที่ชื่อ "freetrial"
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
หากต้องการสร้างคีย์สโตร์ในสภาพแวดล้อม คุณเพียงต้องระบุชื่อคีย์สโตร์ให้กับ Create a Keystore or 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 ที่มีใบรับรองและคีย์ส่วนตัวได้โดยใช้ API การอัปโหลดไฟล์ JAR ไปยังคีย์สโตร์ ดังนี้
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 ที่คุณใช้สร้างคลังความน่าเชื่อถือจะเหมือนกับที่ใช้สร้างคีย์สโตร์ ความแตกต่างเพียงอย่างเดียวคือคุณส่งไฟล์ใบรับรองเป็นไฟล์ 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 ไปยังที่เก็บข้อมูลที่เชื่อถือโดยใช้ 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 ได้โดยใช้ วิธีลบ 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" }
หากคุณลบคีย์สโตร์หรือคลังความน่าเชื่อถือที่โฮสต์เสมือนหรือปลายทาง/เป้าหมาย/เซิร์ฟเวอร์เป้าหมายใช้อยู่ การเรียก API ทั้งหมดผ่านโฮสต์เสมือนหรือปลายทาง/เป้าหมาย/เซิร์ฟเวอร์เป้าหมายจะดำเนินการไม่สำเร็จ