คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X info
เอกสารนี้อธิบายวิธีสร้าง แก้ไข และลบคีย์สโตร์และทรัสต์สโตร์สําหรับ Edge สำหรับ Private Cloud เวอร์ชัน 4.17.09 และเวอร์ชันก่อนหน้า
เกี่ยวกับคีย์สโตร์และทรัสต์สโตร์
คีย์สโตร์และทรัสต์สโตร์จะกำหนดที่เก็บใบรับรองความปลอดภัยที่ใช้สําหรับการเข้ารหัส TLS ความแตกต่างหลักระหว่าง 2 อย่างนี้คือตำแหน่งที่ใช้ในกระบวนการจับมือ TLS
- คีย์สโตร์ประกอบด้วยใบรับรอง TLS และคีย์ส่วนตัวที่ใช้ระบุเอนทิตีระหว่างแฮนด์เชค TLS
ใน TLS แบบ 1 ทิศทาง เมื่อไคลเอ็นต์เชื่อมต่อกับปลายทาง TLS ในเซิร์ฟเวอร์ คีสต์คีย์ของเซิร์ฟเวอร์จะแสดงใบรับรองของเซิร์ฟเวอร์ (ใบรับรองสาธารณะ) ต่อไคลเอ็นต์ จากนั้นไคลเอ็นต์จะตรวจสอบใบรับรองดังกล่าวกับผู้ออกใบรับรอง (CA) เช่น Symantec หรือ VeriSign
ใน TLS แบบ 2 ทาง ทั้งไคลเอ็นต์และเซิร์ฟเวอร์จะเก็บรักษาคีย์สโตร์ที่มีใบรับรองและคีย์ส่วนตัวของตนเองเพื่อใช้ตรวจสอบสิทธิ์แบบคู่ - truststore มีใบรับรองที่ใช้เพื่อยืนยันใบรับรองที่ได้รับเป็นส่วนหนึ่งของการจับมือ TLS
ใน TLS แบบ 1 ทิศทาง คุณไม่จำเป็นต้องใช้ TrustStore หากใบรับรองได้รับการลงนามโดย CA ที่ถูกต้อง หากใบรับรองที่ได้รับจากไคลเอ็นต์ TLS ลงนามโดย CA ที่ถูกต้อง ไคลเอ็นต์จะส่งคำขอไปยัง CA เพื่อตรวจสอบสิทธิ์ใบรับรอง โดยปกติแล้ว ไคลเอ็นต์ TLS จะใช้ Trust Store เพื่อตรวจสอบใบรับรองแบบ Self-signed ที่ได้รับจากเซิร์ฟเวอร์ TLS หรือใบรับรองที่ไม่ได้ลงนามโดย CA ที่เชื่อถือ ในกรณีนี้ ไคลเอ็นต์จะป้อนข้อมูลใบรับรองที่เชื่อถือลงในที่เก็บข้อมูลเชื่อถือ จากนั้นเมื่อไคลเอ็นต์ได้รับใบรับรองเซิร์ฟเวอร์ ระบบจะตรวจสอบใบรับรองขาเข้าเทียบกับใบรับรองในคลังความน่าเชื่อถือ
เช่น ไคลเอ็นต์ TLS เชื่อมต่อกับเซิร์ฟเวอร์ TLS ซึ่งเซิร์ฟเวอร์ใช้ใบรับรองที่ลงนามด้วยตนเอง เนื่องจากเป็นใบรับรองที่ลงนามด้วยตนเอง ไคลเอ็นต์จึงตรวจสอบกับ CA ไม่ได้ แต่ไคลเอ็นต์จะโหลดใบรับรองที่ลงนามด้วยตนเองของเซิร์ฟเวอร์ลงในที่เก็บข้อมูลที่เชื่อถือไว้ล่วงหน้าแทน จากนั้นเมื่อไคลเอ็นต์พยายามเชื่อมต่อกับเซิร์ฟเวอร์ ไคลเอ็นต์จะใช้ที่เก็บข้อมูลที่เชื่อถือเพื่อตรวจสอบใบรับรองที่ได้รับจากเซิร์ฟเวอร์
สำหรับ 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
หากคุณมีเชนใบรับรองและต้องการใช้เชนนั้นในคีย์สโตร์หรือทรัสต์สโตร์ ให้รวมใบรับรองทั้งหมดไว้ในไฟล์ 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-----
ดูรายละเอียดเกี่ยวกับคีย์สโตร์ที่มีอยู่
ตรวจสอบสภาพแวดล้อมเพื่อหาคีย์สโตร์ที่มีอยู่โดยใช้ List Keystores and Truststores API
curl -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \ -u email:password
สําหรับลูกค้าที่ใช้ระบบคลาวด์ จะมีคีย์สโตร์เริ่มต้นสําหรับองค์กรช่วงทดลองใช้ฟรีทั้งสําหรับสภาพแวดล้อมการทดสอบและเวอร์ชันที่ใช้งานจริง คุณควรเห็นผลลัพธ์ต่อไปนี้สําหรับการเรียกใช้นี้สําหรับทั้ง 2 สภาพแวดล้อม
[ "freetrial" ]
คุณสามารถใช้คีย์สโตร์เริ่มต้นนี้เพื่อทดสอบ API และพุช API ไปยังเวอร์ชันที่ใช้งานจริงได้ แต่โดยทั่วไปแล้ว คุณควรสร้างคีย์สโตร์ของคุณเองโดยใช้ใบรับรองและคีย์ของคุณเองก่อนที่จะนำไปใช้งานจริง
สำหรับลูกค้าที่ใช้ระบบคลาวด์ส่วนตัว อาร์เรย์ที่แสดงผลจะว่างเปล่าจนกว่าคุณจะสร้างคีย์สโตร์แรก
ตรวจสอบเนื้อหาของคีย์สโตร์โดยใช้ 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
ใน UI ของ Edge คุณสามารถระบุระยะเวลาล่วงหน้าที่ Edge จะแจ้งว่าใบรับรองจะหมดอายุ โดยค่าเริ่มต้น UI จะไฮไลต์ใบรับรองที่มีกำหนดจะหมดอายุในอีก 10 วันข้างหน้า
สร้างคีย์สโตร์
คีย์สโตร์จะใช้กับสภาพแวดล้อมหนึ่งๆ ในองค์กร เช่น สภาพแวดล้อมทดสอบหรือสภาพแวดล้อมที่ใช้งานจริง ดังนั้น หากต้องการทดสอบคีย์สโตร์ในสภาพแวดล้อมการทดสอบก่อนนำไปใช้งานจริงในสภาพแวดล้อมที่ใช้งานจริง คุณต้องสร้างคีย์สโตร์ในทั้ง 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
หากใบรับรองเป็นส่วนหนึ่งของเชน คุณต้องอัปโหลดใบรับรองทั้งหมดในเชนแยกต่างหากไปยังที่เก็บข้อมูลเชื่อถือ หรือสร้างไฟล์เดียวที่มีใบรับรองทั้งหมด โดยใส่บรรทัดใหม่ระหว่างใบรับรองแต่ละรายการในไฟล์ โดยปกติแล้ว ผู้ออกใบรับรองจะเป็นผู้ลงนามในใบรับรองฉบับสุดท้าย เช่น ในคลังใบรับรองที่เชื่อถือ คุณจะอัปโหลดใบรับรองไคลเอ็นต์ client_cert_1
และใบรับรองของผู้ออกใบรับรองไคลเอ็นต์ ca_cert
ในระหว่างการตรวจสอบสิทธิ์ TLS แบบ 2 ทาง การตรวจสอบสิทธิ์ไคลเอ็นต์จะสำเร็จเมื่อเซิร์ฟเวอร์ส่ง client_cert_1
ไปยังไคลเอ็นต์เป็นส่วนหนึ่งของกระบวนการแฮนด์เชค TLS
หรือคุณมีใบรับรองที่ 2 client_cert_2
ซึ่งลงนามโดยใบรับรองเดียวกัน ca_cert
อย่างไรก็ตาม คุณจะไม่อัปโหลด client_cert_2
ไปยังที่เก็บข้อมูลเชื่อถือ ไฟล์ Truststore ยังมี client_cert_1
และ ca_cert
อยู่
เมื่อเซิร์ฟเวอร์ส่ง client_cert_2
เป็นส่วนหนึ่งของการจับมือ TLS คำขอจะสำเร็จ เนื่องจาก Edge อนุญาตให้ยืนยัน TLS สําเร็จเมื่อ client_cert_2
ไม่มีอยู่ในที่เก็บข้อมูลเชื่อถือ แต่ได้รับการรับรองโดยใบรับรองที่อยู่ในที่เก็บข้อมูลเชื่อถือ หากคุณนําใบรับรอง CA ca_cert
ออกจากที่เก็บข้อมูลที่เชื่อถือ การยืนยัน TLS จะดำเนินการไม่สำเร็จ
สร้างคลังความน่าเชื่อถือว่างในสภาพแวดล้อมโดยใช้สร้างคีย์สโตร์หรือคลังความน่าเชื่อถือ ซึ่งเป็น 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
ลบคีย์สโตร์หรือทรัสต์สโตร์
คุณลบคีย์สโตร์หรือคลังความน่าเชื่อถือได้โดยใช้ 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 ทั้งหมดผ่านโฮสต์เสมือนหรือปลายทาง/เป้าหมาย/เซิร์ฟเวอร์เป้าหมายจะดำเนินการไม่สำเร็จ