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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

يشبه ملف Truststore ملف تخزين مفاتيح باستثناء أنّه يحتوي على شهادات كملف 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 ويمكنك استخدامها في ملف تخزين مفاتيح أو Truststore بدون تحويلها إلى ملف 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-----

الحصول على تفاصيل حول ملف تخزين مفاتيح حالي

ابحث في بيئتك عن أي ملفات تخزين مفاتيح حالية باستخدام قائمة ملفات تخزين المفاتيح وTruststores API:

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) في ملف تخزين المفاتيح، مثل تاريخ انتهاء الصلاحية والمُصدِر. أولاً، احصل على اسم الشهادة التي تهمّك. يجلب هذا المثال معلومات عن ملف تخزين المفاتيح المسمى "التجربة المجانية".

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 في /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.

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

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

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

عندما يمرر الخادم client_cert_2 كجزء من تأكيد الاتصال عبر بروتوكول أمان طبقة النقل (TLS)، تظهر نجح الطلب. ويعود السبب في ذلك إلى أنّ 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 إلى 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.

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

يمكنك حذف ملف تخزين مفاتيح أو ملف تخزين ثقة باستخدام واجهة برمجة التطبيقات 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"
}

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