إنشاء ملفات تخزين مفاتيح تشفير ومخازن موثوقة للإصدار 4.17.09 من Private Cloud والإصدارات الأقدم

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

يشرح هذا المستند كيفية إنشاء ملفات تخزين مفاتيح ومخازن الثقة وتعديلها وحذفها من أجل Edge للإصدار 4.17.09 من Private Cloud والإصدارات الأقدم.

لمحة عن ملفات تخزين المفاتيح ومخازن الثقة

تحدد ملفات تخزين المفاتيح ومخازن الثقة مستودعات شهادات الأمان المستخدمة لتشفير بروتوكول أمان طبقة النقل (TLS). يكمن الاختلاف الرئيسي بين الاثنين في مكان استخدامهما في عملية المصافحة عبر بروتوكول أمان طبقة النقل (TLS):

  • يحتوي ملف تخزين المفاتيح على شهادة بروتوكول أمان طبقة النقل (TLS) ومفتاح خاص يتم استخدامه لتحديد الكيان أثناء عملية تأكيد الاتصال عبر بروتوكول أمان طبقة النقل (TLS).

    في طبقة النقل الآمنة الأحادية الاتجاه، عندما يتصل برنامج بنقطة نهاية بروتوكول أمان طبقة النقل (TLS) على الخادم، يعرض ملف تخزين مفاتيح الخادم شهادة الخادم (الشهادة العامة) للعميل. يتحقق العميل بعد ذلك من هذه الشهادة باستخدام مرجع تصديق (CA)، مثل Symantec أو VeriSign.

    في بروتوكول أمان طبقة النقل (TLS) الثنائي، يحتفظ كل من العميل والخادم بملف تخزين المفاتيح باستخدام الشهادة والمفتاح الخاص الخاصَّين بهما لإجراء المصادقة المتبادلة.
  • يحتوي متجر الثقة على شهادات تُستخدَم للتحقّق من الشهادات التي تم استلامها كجزء من عملية تأكيد الاتصال عبر بروتوكول أمان طبقة النقل (TLS).

    بالنسبة إلى بروتوكول أمان طبقة النقل (TLS) الأحادي، لا يلزم استخدام Truststore إذا كانت الشهادة مُوقَّعة من قِبل مرجع تصديق صالح. إذا كانت الشهادة التي تلقاها برنامج بروتوكول أمان طبقة النقل (TLS) مُوقَّعة بواسطة مرجع تصديق صالح، يطلب العميل من مرجع التصديق مصادقة الشهادة. يستخدم برنامج بروتوكول أمان طبقة النقل عادةً ملف Truststore للتحقّق من صحة الشهادات الموقعة ذاتيًا التي تم استلامها من خادم بروتوكول أمان طبقة النقل (TLS)، أو الشهادات غير الموقَّعة من مرجع تصديق موثوق به. في هذا السيناريو، يملأ العميل متجر الثقة الخاص به بالشهادات التي يثق بها. بعد ذلك، عندما يتلقى العميل شهادة خادم، يتم التحقق من الشهادة الواردة مقابل الشهادات في Truststore.

    على سبيل المثال، يتصل برنامج بروتوكول أمان طبقة النقل (TLS) بخادم بروتوكول أمان طبقة النقل (TLS) حيث يستخدم الخادم شهادة موقَّعة ذاتيًا. ولأنها شهادة موقعة ذاتيًا، لا يمكن للعميل التحقق من صحتها باستخدام مرجع تصديق. بدلاً من ذلك، يحمِّل العميل مسبقًا شهادة الخادم الموقَّعة ذاتيًا في Truststore. بعد ذلك، عندما يحاول العميل الاتصال بالخادم، يستخدم مخزن الثقة لديه لإثبات صحة الشهادة التي تم استلامها من الخادم.

    بالنسبة إلى بروتوكول أمان طبقة النقل (TLS) الثنائي، يمكن لكل من عميل بروتوكول أمان طبقة النقل (TLS) وخادم بروتوكول أمان طبقة النقل استخدام مخزن الثقة. ويجب توفّر Truststore عند تنفيذ بروتوكول أمان طبقة النقل (TLS) ثنائي الاتجاه عندما يعمل Edge كخادم بروتوكول أمان طبقة النقل (TLS).

يمكن إصدار الشهادات عن طريق مرجع تصديق (CA)، أو يمكن توقيعها ذاتيًا بواسطة المفتاح الخاص الذي تنشئه. إذا كان لديك إذن بالوصول إلى مرجع تصديق، يُرجى اتّباع التعليمات التي يقدّمها مرجع التصديق لإنشاء المفاتيح وإصدار الشهادات. إذا لم يكن لديك إذن بالوصول إلى مرجع تصديق، يمكنك إنشاء شهادة موقَّعة ذاتيًا باستخدام إحدى الأدوات المجانية العديدة المتاحة للجميع، مثل opensl.

تنفيذ ملف تخزين مفاتيح وملف تخزين موثوق به على Edge

على Edge، يحتوي ملف تخزين المفاتيح على ملف JAR واحد أو أكثر، حيث يحتوي ملف JAR على:

  • شهادة بروتوكول أمان طبقة النقل (TLS) كملف PEM، تكون إمّا شهادة موقَّعة من مرجع تصديق (CA)، أو سلسلة من الشهادات موقَّعة من قِبل مرجع تصديق أو شهادة موقَّعة ذاتيًا.
  • المفتاح الخاص كملف PEM. يدعم Edge أحجام المفاتيح التي تصل إلى 2048 بت. وتُعدّ عبارة المرور اختيارية.

يشبه ملف Truststore ملف تخزين المفاتيح، باستثناء أنّه يحتوي على شهادات كملف PEM فقط، وليس على مفاتيح خاصة.

إذا كانت الشهادة جزءًا من سلسلة، يجب أن يحتوي ملف تخزين المفاتيح/المتجر الموثوق به على جميع الشهادات في السلسلة، إما كملفات PEM فردية أو كملف واحد. إذا كنت تستخدم ملفًا واحدًا، يجب أن تكون الشهادات بالترتيب حيث تكون الشهادة الأولى في الملف هي الشهادة المستخدمة لبروتوكول أمان طبقة النقل (TLS) متبوعة بسلسلة من الشهادات، بالترتيب إلى شهادة مرجع التصديق. يجب إدراج سطر فارغ بين كل شهادة في الملف.

يوفّر Edge واجهة برمجة تطبيقات تستخدمها لإنشاء ملفات تخزين مفاتيح ومخازن الثقة. تتطابق واجهات برمجة التطبيقات الفعلية. والفرق الوحيد بينهما هو أنّه عند إنشاء ملف تخزين، يتم تمرير ملف JAR يحتوي على الشهادة والمفتاح الخاص. عند إنشاء متجر Truststore، لا يتم تمرير الشهادة إلا كملف PEM.

لمحة عن تنسيق ملفات الشهادة والملفات الرئيسية

تعرض الأمثلة في هذا المستند شهادة TLS والمفتاح اللذين تم تعريفهما كملفات PEM تتوافق مع تنسيق X.509. إذا لم يتم تحديد شهادتك أو مفتاحك الخاص من خلال ملف PEM، يمكنك تحويلهما إلى ملف PEM باستخدام أدوات مثل opensl.

ومع ذلك، هناك العديد من ملفات .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:

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

بالنسبة إلى عملاء السحابة الإلكترونية، يتم توفير ملف تخزين تلقائي للمؤسسات التجريبية المجانية في كل من البيئتين الاختباري والإنتاج. من المفترض أن تظهر لك النتائج التالية لهذا الطلب في كلتا البيئتَين:

[ "freetrial" ]

يمكنك استخدام ملف تخزين المفاتيح التلقائي هذا لاختبار واجهات برمجة التطبيقات وإرسال واجهات برمجة التطبيقات إلى الإنتاج، ولكن يمكنك عادةً إنشاء ملف تخزين المفاتيح الخاص بك باستخدام شهادة ومفتاح خاصين بك قبل نشره في مرحلة الإنتاج.

بالنسبة إلى عملاء Private Cloud، تكون المصفوفة المعروضة فارغة إلى أن تنشئ أول ملف تخزين.

راجِع محتوى ملف تخزين المفاتيح باستخدام واجهة برمجة التطبيقات الحصول على ملف تخزين المفاتيح أو Truststore. بالنسبة إلى عميل السحابة الإلكترونية، من المفترض أن تظهر لك شهادة 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"
}

يمكنك أيضًا عرض هذه المعلومات في واجهة مستخدم إدارة Edge:

  1. سجِّل الدخول إلى واجهة مستخدم إدارة Edge على https://enterprise.apigee.com (السحابة الإلكترونية) أو http://<ms-ip>:9000 (في المؤسسة)، حيث يكون <ms-ip> هو عنوان IP لعقدة خادم الإدارة.
  2. في قائمة واجهة مستخدم إدارة Edge، اختَر المشرف > شهادات TLS.

الحصول على تفاصيل شهادة بروتوكول أمان طبقة النقل (TLS)

يمكنك استخدام واجهة برمجة تطبيقات الحصول على تفاصيل شهادة من ملف تخزين مفاتيح أو Truststore لعرض تفاصيل حول شهادات "بروتوكول أمان طبقة النقل" (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"
}

بعد ذلك، استخدِم قيمة خاصية الشهادات للحصول على تفاصيل الشهادة:

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"
}

يمكنك أيضًا عرض هذه المعلومات في واجهة مستخدم إدارة Edge:

  1. سجِّل الدخول إلى واجهة مستخدم إدارة Edge على https://enterprise.apigee.com (السحابة الإلكترونية) أو http://<ms-ip>:9000 (في المؤسسة)، حيث يكون <ms-ip> هو عنوان IP لعقدة خادم الإدارة.
  2. في قائمة واجهة مستخدم إدارة Edge، اختَر المشرف > شهادات بروتوكول أمان طبقة النقل (TLS).

في واجهة مستخدم Edge، يمكنك تحديد مدى التقدّم الذي تشير إليه الواجهة قبل انتهاء صلاحية شهادة Edge. تعرض واجهة المستخدم تلقائيًا أيّ شهادات من المقرر أن تنتهي صلاحيتها خلال الأيام العشرة القادمة.

إنشاء ملف تخزين

ملف تخزين المفاتيح مخصص لبيئة في مؤسستك، على سبيل المثال بيئة الاختبار أو الإنتاج. وبالتالي، إذا أردت اختبار ملف تخزين المفاتيح في بيئة اختبار قبل نشره في بيئة الإنتاج، يجب إنشاؤه في كلتا البيئتين.

تتألف عملية إنشاء ملف تخزين مفاتيح من خطوتين:

  1. أنشئ ملف JAR يحتوي على شهادتك ومفتاحك الخاص.
  2. أنشئ ملف تخزين المفاتيح وحمِّل ملف JAR.

أنشئ ملف JAR يحتوي على الشهادة والمفتاح الخاص

أنشئ ملف JAR باستخدام مفتاحك الخاص والشهادة وملف البيان. يجب أن يحتوي ملف 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.

لإنشاء ملف تخزين مفاتيح في بيئة، ما عليك سوى تحديد اسم ملف تخزين المفاتيح لواجهة برمجة التطبيقات إنشاء ملف تخزين مفاتيح أو Truststore. يمكن أن يحتوي الاسم على أحرف أبجدية رقمية فقط:

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 إلى ملف تخزين المفاتيح:

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.

في هذا الاستدعاء، يمكنك تحديد مَعلمتَي طلب بحث:

  • 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"
}

إنشاء متجر موثوق به

تكون واجهات برمجة التطبيقات التي تستخدمها لإنشاء مخزن الثقة هي نفسها المستخدمة لإنشاء ملف تخزين. والفرق الوحيد هو أنّك تُدخِل ملف الشهادة كملف PEM بدلاً من ملف JAR.

إذا كانت الشهادة جزءًا من سلسلة، عليك إما تحميل جميع الشهادات في السلسلة بشكل منفصل إلى Truststore، أو إنشاء ملف واحد يحتوي على جميع الشهادات، وإدراج سطر جديد بين كل شهادة في الملف. يتم عادةً توقيع الشهادة النهائية من قِبل جهة إصدار الشهادة. على سبيل المثال، في Truststore، حمِّل شهادة عميل، client_cert_1 وشهادة جهة إصدار شهادة العميل، ca_cert.

أثناء مصادقة بروتوكول أمان طبقة النقل (TLS) الثنائية، تنجح مصادقة العميل عندما يرسل الخادم client_cert_1 إلى العميل كجزء من عملية الاتصال عبر بروتوكول أمان طبقة النقل (TLS).

يمكنك بدلاً من ذلك الحصول على شهادة ثانية، client_cert_2، موقَّعة من خلال الشهادة نفسها "ca_cert". يُرجى العِلم أنّه لا يتم تحميل client_cert_2 إلى المتجر الموثوق به. لا يزال متجر Truststore يتضمّن client_cert_1 وca_cert.

عندما يتجاوز الخادم client_cert_2 كجزء من عملية تأكيد الاتصال عبر بروتوكول أمان طبقة النقل (TLS)، ينجح الطلب. ويرجع ذلك إلى أنّ متصفّح Edge يتيح نجاح إثبات الملكية باستخدام بروتوكول أمان طبقة النقل (TLS) عند عدم توفُّر client_cert_2 في Truststore ولكن موقّعة من خلال شهادة متوفرة في Truststore. إذا أزلت شهادة CA، ca_cert، من Truststore، سيتعذّر إثبات الملكية باستخدام بروتوكول أمان طبقة النقل (TLS).

يمكنك إنشاء ملف Truststore فارغ في البيئة باستخدام إنشاء ملف تخزين مفاتيح أو Truststore، وهي واجهة برمجة التطبيقات نفسها التي تستخدمها لإنشاء ملف تخزين:

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:

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:

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

نموذج الإجابة:

{
 "certs" : [ ],
 "keys" : [ ],
 "name" : "myKeystoreName"
}

إذا حذفت ملف تخزين مفاتيح أو ملف تخزين موثوق به يستخدمه مضيف افتراضي أو نقطة نهاية/خادم مستهدف/هدف، سيتعذّر تنفيذ جميع طلبات البيانات من واجهة برمجة التطبيقات من خلال المضيف الافتراضي أو خادم نقطة النهاية/الهدف المستهدف.