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

คุณกําลังดูเอกสารประกอบของ 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

  1. เข้าสู่ระบบ UI การจัดการ Edge ที่ https://enterprise.apigee.com (ระบบคลาวด์) หรือ http://<ms-ip>:9000 (ในองค์กร) โดยที่ <ms-ip> คือที่อยู่ IP ของโหนดเซิร์ฟเวอร์การจัดการ
  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 (ระบบคลาวด์) หรือ http://<ms-ip>:9000 (ในองค์กร) โดยที่ <ms-ip> คือที่อยู่ IP ของโหนดเซิร์ฟเวอร์การจัดการ
  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 ที่มีใบรับรองและคีย์ส่วนตัวได้โดยใช้ 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 ทั้งหมดผ่านโฮสต์เสมือนหรือปลายทาง/เป้าหมาย/เซิร์ฟเวอร์เป้าหมายจะดำเนินการไม่สำเร็จ