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

أنت تطّلع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

يوضّح هذا المستند كيفية إنشاء وتعديل وحذف ملفّات تخزين المفاتيح وملفّات تخزين الثقة لتطبيق Edge في إصدار "سحابة خاصة" 4.17.09 والإصدارات الأقدم.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

تعرض الأمثلة الواردة في هذا المستند شهادة بروتوكول أمان طبقة النقل ومفتاحه المحدَّدين كملفَي 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:

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

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

[ "freetrial" ]

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

بالنسبة إلى عملاء Private 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"
}

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

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

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

يمكنك استخدام واجهة برمجة التطبيقات Get Cert Details from a Keystore or 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"
}

بعد ذلك، استخدِم قيمة سمة 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"
}

يمكنك أيضًا الاطّلاع على هذه المعلومات في واجهة مستخدم إدارة 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 في directory /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. لا يمكن أن يحتوي الاسم إلا على أحرف أبجدية رقمية:

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.

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

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

بدلاً من ذلك، لديك شهادة ثانية، client_cert_2، موقَّعة بالشهادة نفسها، ca_cert. ومع ذلك، لا يتم تحميل client_cert_2 إلى ملف تخزين الموثوق بهم. لا يزال ملف تخزين الثقة يحتوي على client_cert_1 وca_cert.

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

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

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 إلى ملف تخزين الموثوق بهم باستخدام واجهة برمجة التطبيقات تحميل شهادة إلى ملف تخزين الموثوق بهم:

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:

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

مثال على الردّ:

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

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