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

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

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

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

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

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

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

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

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

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

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

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

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

ใน Edge คีย์สโตร์จะมีไฟล์ JAR อย่างน้อย 1 ไฟล์ ซึ่งไฟล์ JAR จะมีข้อมูลต่อไปนี้

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

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

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

Edge มี API ที่คุณใช้สร้างคีย์สโตร์และทรัสต์สโตร์ โดย API จริงจะเหมือนกัน ความแตกต่างคือเมื่อสร้างคีย์สโตร์ คุณจะส่งไฟล์ JAR ที่มี ใบรับรองและคีย์ส่วนตัว แต่เมื่อสร้างทรัสต์สโตร์ คุณจะส่งเฉพาะใบรับรองเป็นไฟล์ 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 และ Truststores API ดังนี้

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

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

[ "freetrial" ]

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

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

ตรวจสอบเนื้อหาของคีย์สโตร์โดยใช้ Get a Keystore or Truststore API สำหรับลูกค้า Cloud คุณควรเห็นใบรับรอง 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 ของโหนด Management Server
  2. ในเมนู 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=&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 ของโหนด Management Server
  2. ในเมนู UI การจัดการของ Edge ให้เลือกผู้ดูแลระบบ > ใบรับรอง TLS

ใน UI ของ Edge คุณสามารถระบุระยะเวลาล่วงหน้าก่อนที่ 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

หากต้องการสร้างคีย์สโตร์ในสภาพแวดล้อม คุณเพียงแค่ระบุชื่อคีย์สโตร์ให้กับ 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 ที่ มีใบรับรองและคีย์ส่วนตัวได้โดยใช้ Upload a JAR file to a 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"
}

สร้างทรัสต์สโตร์

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

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

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

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

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

สร้างทรัสต์สโตร์ที่ว่างเปล่าในสภาพแวดล้อมโดยใช้ Create a Keystore or 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 ไปยังทรัสต์สโตร์โดยใช้ Upload a Certificate to a 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

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

คุณสามารถลบคีย์สโตร์หรือทรัสต์สโตร์ได้โดยใช้ Delete a Keystore or 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 ทั้งหมดผ่านโฮสต์เสมือนหรือปลายทางเป้าหมาย/เซิร์ฟเวอร์เป้าหมาย จะล้มเหลว