أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
يوضّح هذا المستند كيفية إنشاء ملفات تخزين المفاتيح وملفات تخزين الشهادات وتعديلها وحذفها في Edge للإصدار 4.17.09 والإصدارات الأقدم من Private Cloud.
لمحة عن ملفات تخزين المفاتيح وملفات تخزين الشهادات الموثوقة
تحدّد ملفات تخزين المفاتيح وملفات تخزين الشهادات الموثوق بها مستودعات لشهادات الأمان المستخدَمة في تشفير بروتوكول أمان طبقة النقل (TLS). يكمن الاختلاف الرئيسي بينهما في موضع استخدامهما في عملية المصافحة عبر بروتوكول أمان طبقة النقل (TLS):
- يحتوي مخزن المفاتيح على شهادة بروتوكول أمان طبقة النقل (TLS) ومفتاح خاص يُستخدمان لتحديد هوية الكيان أثناء عملية المصافحة عبر بروتوكول أمان طبقة النقل (TLS).
في بروتوكول أمان طبقة النقل (TLS) أحادي الاتجاه، عندما يتصل العميل بنقطة نهاية TLS على الخادم، يعرض مخزن مفاتيح الخادم شهادة الخادم (الشهادة العامة) للعميل. بعد ذلك، يتحقّق العميل من صحة هذه الشهادة باستخدام مرجع تصديق (CA)، مثل Symantec أو VeriSign.
في بروتوكول أمان طبقة النقل (TLS) الثنائي الاتجاه، يحتفظ كل من العميل والخادم بمخزن مفاتيح يتضمّن شهادتهما ومفتاحهما الخاصَّين اللذين يُستخدَمان في المصادقة المتبادلة. - يحتوي truststore على شهادات تُستخدَم للتحقّق من الشهادات التي يتم تلقّيها كجزء من عملية المصافحة عبر بروتوكول أمان طبقة النقل (TLS).
في بروتوكول أمان طبقة النقل (TLS) أحادي الاتجاه، لا يلزم استخدام truststore إذا كانت الشهادة موقَّعة من مرجع تصديق صالح. إذا كانت الشهادة التي تلقّاها برنامج TLS موقعة من مرجع تصديق صالح، يرسل البرنامج طلبًا إلى مرجع التصديق لمصادقة الشهادة. يستخدم عميل بروتوكول أمان طبقة النقل (TLS) عادةً مخزن شهادات جذر موثوق بها للتحقّق من صحة الشهادات الموقّعة ذاتيًا التي يتلقّاها من خادم بروتوكول أمان طبقة النقل (TLS)، أو الشهادات التي لم توقّعها جهة تصديق موثوق بها. في هذا السيناريو، يملأ العميل مستودع الثقة بالشهادات التي يثق بها. بعد ذلك، عندما يتلقّى العميل شهادة خادم، يتم التحقّق من صحة الشهادة الواردة مقارنةً بالشهادات في مستودع الشهادات الموثوقة.
على سبيل المثال، يتصل عميل بروتوكول أمان طبقة النقل (TLS) بخادم بروتوكول أمان طبقة النقل (TLS) يستخدم شهادة موقعة ذاتيًا. وبما أنّها شهادة موقَّعة ذاتيًا، لا يمكن للعميل التحقّق منها باستخدام هيئة إصدار شهادات. بدلاً من ذلك، يحمّل العميل مسبقًا شهادة الخادم الموقَّعة ذاتيًا في مستودع الثقة. بعد ذلك، عندما يحاول العميل الاتصال بالخادم، يستخدم العميل ملف Truststore للتحقّق من صحة الشهادة التي تلقّاها من الخادم.
بالنسبة إلى بروتوكول أمان طبقة النقل (TLS) الثنائي الاتجاه، يمكن لكل من عميل TLS وخادم TLS استخدام ملف تخزين الشهادات الموثوقة. يجب توفُّر ملف truststore عند تنفيذ بروتوكول أمان طبقة النقل (TLS) ثنائي الاتجاه عندما يعمل Edge كخادم TLS.
يمكن أن تصدر الشهادات عن هيئة إصدار الشهادات (CA)، أو يمكن أن يتم توقيعها ذاتيًا باستخدام المفتاح الخاص الذي تنشئه. إذا كان بإمكانك الوصول إلى مرجع تصديق، اتّبِع التعليمات التي يقدّمها مرجع التصديق لإنشاء المفاتيح وإصدار الشهادات. إذا لم يكن لديك إذن الوصول إلى مرجع تصديق، يمكنك إنشاء شهادة موقعة ذاتيًا باستخدام إحدى الأدوات المجانية العديدة المتاحة للجميع، مثل openssl.
تنفيذ ملف تخزين مفاتيح وملف تخزين شهادات موثوقة على Edge
في Edge، يحتوي مخزن المفاتيح على ملف واحد أو أكثر من ملفات JAR، حيث يحتوي ملف JAR على ما يلي:
- شهادة TLS كملف PEM، إما شهادة موقَّعة من هيئة إصدار شهادات (CA)، أو سلسلة من الشهادات حيث يتم توقيع الشهادة الأخيرة من قِبل هيئة إصدار شهادات، أو شهادة موقَّعة ذاتيًا
- المفتاح الخاص كملف PEM يتوافق Edge مع أحجام المفاتيح التي تصل إلى 2048 بت. عبارة المرور اختيارية.
متجر الموثوقية مشابه لمتجر المفاتيح، إلا أنّه يحتوي على شهادات فقط كملف PEM، ولكن بدون مفاتيح خاصة.
إذا كانت الشهادة جزءًا من سلسلة، يجب أن يحتوي مخزن المفاتيح/مخزن الشهادات الموثوقة على جميع الشهادات في السلسلة، إما كملفات PEM فردية أو كملف واحد. في حال استخدام ملف واحد، يجب ترتيب الشهادات بحيث تكون الشهادة الأولى في الملف هي الشهادة المستخدَمة لبروتوكول أمان طبقة النقل (TLS)، يليها سلسلة الشهادات بالترتيب وصولاً إلى شهادة مرجع التصديق (CA). يجب إدراج سطر فارغ بين كل شهادة في الملف.
توفّر Edge واجهة برمجة تطبيقات يمكنك استخدامها لإنشاء مخازن المفاتيح ومخازن الشهادات الموثوقة. واجهات برمجة التطبيقات الفعلية هي نفسها. والفرق هو أنّه عند إنشاء ملف تخزين مفاتيح، عليك تمرير ملف 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:
curl -X GET \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \
-u email:password
بالنسبة إلى عملاء السحابة الإلكترونية، يتم توفير مخزن مفاتيح تلقائي للمؤسسات التي تستخدم الفترة التجريبية المجانية في كل من بيئتي الاختبار والإنتاج. من المفترض أن تظهر لك النتائج التالية لهذا الطلب في كلتا البيئتين:
[ "freetrial" ]
يمكنك استخدام ملف تخزين المفاتيح التلقائي هذا لاختبار واجهات برمجة التطبيقات ونقلها إلى مرحلة الإنتاج، ولكن عليك عادةً إنشاء ملف تخزين المفاتيح الخاص بك مع الشهادة والمفتاح الخاصين بك قبل النشر في مرحلة الإنتاج.
بالنسبة إلى عملاء Private Cloud، تكون المصفوفة التي يتم عرضها فارغة إلى أن تنشئ أول ملف تخزين مفاتيح.
تحقَّق من محتوى ملف تخزين المفاتيح باستخدام واجهة برمجة التطبيقات Get a Keystore or 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":
- سجِّل الدخول إلى واجهة مستخدم Edge Management على https://enterprise.apigee.com (السحابة الإلكترونية) أو
http://<ms-ip>:9000(في الموقع)، حيث<ms-ip>هو عنوان IP لعُقدة خادم الإدارة. - في قائمة واجهة مستخدم إدارة 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="GoDaddy.com, Inc.", 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":
- سجِّل الدخول إلى واجهة مستخدم Edge Management على https://enterprise.apigee.com (السحابة الإلكترونية) أو
http://<ms-ip>:9000(في الموقع)، حيث<ms-ip>هو عنوان IP لعُقدة خادم الإدارة. - في قائمة واجهة مستخدم إدارة Edge، اختَر المشرف > شهادات TLS.
في واجهة مستخدم Edge، يمكنك تحديد المدة التي يسبق بها Edge الإشارة إلى أنّ صلاحية الشهادة ستنتهي. تُبرز واجهة المستخدم تلقائيًا أي شهادات من المقرر أن تنتهي صلاحيتها خلال الأيام العشرة القادمة.
إنشاء ملف تخزين مفاتيح
مخزن المفاتيح خاص ببيئة معيّنة في مؤسستك، مثل بيئة الاختبار أو بيئة الإنتاج. لذلك، إذا أردت اختبار ملف تخزين المفاتيح في بيئة اختبار قبل نشره في بيئة التشغيل الفعلي، عليك إنشاؤه في كلتا البيئتين.
يتطلّب إنشاء ملف تخزين مفاتيح خطوتَين:
- أنشِئ ملف JAR يحتوي على الشهادة والمفتاح الخاص.
- أنشئ ملف تخزين المفاتيح وحمِّل ملف 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
لإنشاء ملف تخزين مفاتيح في بيئة، ما عليك سوى تحديد اسم ملف تخزين المفاتيح في واجهة برمجة التطبيقات إنشاء ملف تخزين مفاتيح أو ملف تخزين شهادات موثوقة. يمكن أن يحتوي الاسم على أحرف أبجدية رقمية فقط:
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" }
إنشاء ملف truststore
إنّ واجهات برمجة التطبيقات التي تستخدمها لإنشاء ملف truststore هي نفسها المستخدمة لإنشاء ملف keystore. والفرق الوحيد هو أنّك ستمرّر ملف الشهادة كملف 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).
أنشئ ملف 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 إلى مستودع الشهادات الموثوقة باستخدام واجهة برمجة التطبيقات Upload a Certificate to a 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" }
في حال حذف ملف تخزين المفاتيح أو ملف تخزين الشهادات الموثوقة الذي يستخدمه مضيف افتراضي أو نقطة نهاية/خادم مستهدف، ستتعذّر جميع طلبات البيانات من واجهة برمجة التطبيقات التي يتم إرسالها من خلال المضيف الافتراضي أو نقطة النهاية/الخادم المستهدف.