إنشاء ملفات تخزين مفاتيح تشفير ومخازن موثوقة باستخدام واجهة برمجة تطبيقات إدارة Edge

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

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

مقدمة

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

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

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

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

لإنشاء ملف تخزين مفاتيح في بيئة:

  1. يمكنك استخدام طلب البيانات من واجهة برمجة التطبيقات في هذا القسم لإنشاء ملف تخزين المفاتيح.
  2. أنشئ اسمًا مستعارًا وحمِّل زوج شهادة/مفتاح إلى العنوان البديل للبريد الإلكتروني. وتستند طريقة تحميل الشهادة والمفتاح إلى تنسيق زوج الشهادة/المفتاح. توضّح الأقسام التالية كيفية تحميل كل نوع من زوج الشهادات/المفاتيح:

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

curl -X POST -u orgAdminEmail:password -H "Content-Type: text/xml" \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores \
-d '<KeyStore name="myKeystore"/>'

نموذج إجابة:

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

تحميل شهادة ومفتاح كملف JAR

يجب أولاً إنشاء ملف JAR باستخدام مفتاحك الخاص والشهادة وملف البيان. يجب أن يحتوي ملف JAR على الملفات والأدلة التالية:

/META-INF/descriptor.properties
myCert.pem
myKey.pem

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

cert -> intermediate cert(1) -> intermediate cert(2) -> … -> root

في الدليل الذي يحتوي على زوج المفاتيح والشهادة، أنشئ دليلاً باسم /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 التي تحتوي على شهادة ومفتاح خاص باستخدام واجهة برمجة التطبيقات إنشاء اسم مستعار من ملف JAR أو PKCS:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" -F file="@myKeystore.jar" -F password={key_pword} \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?alias={alias_name}&format=keycertjar"

حيث يُحدد الخيار -F المسار إلى ملف JAR.

في هذه المكالمة، يمكنك تحديد:

  • alias_name: يحدّد الشهادة والمفتاح في ملف تخزين المفاتيح. عندما تنشئ مضيفًا افتراضيًا، فإنك تشير إلى الشهادة والمفتاح من خلال اسمهما المستعار.
  • key_pword - كلمة مرور المفتاح الخاص احذف هذه المَعلمة إذا لم يكن المفتاح الخاص يتضمّن كلمة مرور.

تحقَّق من تحميل ملف تخزين المفاتيح بشكلٍ صحيح:

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

نموذج إجابة:

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

تحميل شهادة ومفتاح كملفات PEM

يمكنك تحميل ملفات PEM التي تحتوي على شهادة ومفتاح خاص باستخدام واجهة برمجة التطبيقات إنشاء اسم مستعار من ملفات PEM والشهادة والمفتاح:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" -F keyFile="@server.key" -F certFile="@signed.crt" \
-F password={key_pword} \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?alias={alias_name}&format=keycertfile"

حيث يُحدِّد الخيار -F المسارات المؤدية إلى ملفات PEM.

في هذه المكالمة، يمكنك تحديد:

  • alias_name: يحدّد الشهادة والمفتاح في ملف تخزين المفاتيح. عندما تنشئ مضيفًا افتراضيًا، فإنك تشير إلى الشهادة والمفتاح من خلال اسمهما المستعار.
  • key_pword - كلمة مرور المفتاح الخاص احذف هذه المَعلمة إذا لم يكن المفتاح الخاص يتضمّن كلمة مرور.

تحقَّق من تحميل ملف تخزين المفاتيح بشكلٍ صحيح:

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

نموذج إجابة:

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

تحميل شهادة ومفتاح كملف PKCS12/PFX

حمِّل ملف PKCS12/PFX يحتوي على شهادة ومفتاح خاص باستخدام واجهة برمجة التطبيقات إنشاء اسم مستعار من ملف JAR أو PKCS:

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" \
-F file="@myKeystore.p12" -F password={key_pword} \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?alias={alias_name}&format=pkcs12"

حيث يحدّد الخيار -F المسار إلى الملف P12.

في هذه المكالمة، يمكنك تحديد:

  • alias_name: يحدّد الشهادة والمفتاح في ملف تخزين المفاتيح. عندما تنشئ مضيفًا افتراضيًا، فإنك تشير إلى الشهادة والمفتاح من خلال اسمهما المستعار.
  • key_pword - كلمة مرور المفتاح الخاص احذف هذه المَعلمة إذا لم يكن المفتاح الخاص يتضمّن كلمة مرور.

تحقَّق من تحميل ملف تخزين المفاتيح بشكلٍ صحيح:

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

نموذج إجابة:

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

إنشاء شهادة ومفتاح موقَّعَين ذاتيًا وتحميلهما

يمكنك استخدام واجهة برمجة التطبيقات إنشاء عنوان بديل من خلال إنشاء شهادة موقَّعة ذاتيًا لإنشاء شهادة ومفتاح موقَّعَين ذاتيًا وتحميلهما إلى اسم مستعار. يحدد الاستدعاء التالي المعلومات المطلوبة فقط لإنشاء الشهادة الموقعة ذاتيًا. يمكنك تعديل هذه المكالمة لإضافة معلومات إضافية:

curl -u orgAdminEmail:password -X POST --header "Content-Type: application/json"  \
-d "{
    "alias": "selfsigned",
    "subject": {
        "commonName": "mycert"
    }
}" \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases?format=selfsignedcert"

يجب أن يظهر الرد على النحو التالي:

{
  "alias": "selfsigned",
  "certsInfo": {
    "certInfo": [
      {
        "basicConstraints": "CA:FALSE",
        "expiryDate": 1491497204000,
        "isValid": "Yes",
        "issuer": "CN=mycert",
        "publicKey": "RSA Public Key, 2048 bits",
        "serialNumber": "00:d1:b4:78:e1",
        "sigAlgName": "SHA256withRSA",
        "subject": "CN=mycert",
        "subjectAlternativeNames": [],
        "validFrom": 1459961204000,
        "version": 3
      }
    ],
    "certName": "selfsigned-cert"
  },
  "keyName": "selfsigned"
}

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

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

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

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

يتم عادةً توقيع الشهادة النهائية من قِبل جهة إصدار الشهادة. على سبيل المثال، في 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 متاحًا في Truststore ولكن تم التوقيع عليه من خلال شهادة موجودة في Truststore. في حال إزالة شهادة CA، ca_cert، من Truststore، سيتعذّر إثبات الملكية عبر بروتوكول أمان طبقة النقل (TLS).

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

curl -u orgAdminEmail:password -X POST -H "Content-Type: text/xml" \
-d '<KeyStore name="myTruststore"/>' \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores

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

curl -u orgAdminEmail:password -X POST -H "Content-Type: multipart/form-data" -F certFile="@cert.pem" \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/myTruststore/aliases?alias=myTruststore&format=keycertfile"

حيث يحدّد الخيار -F المسار إلى ملف PEM.

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

ابحث في بيئتك عن أيّ ملفات تخزين مفاتيح حالية باستخدام واجهة برمجة التطبيقات List Keystores وTruststores:

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

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

[ "freetrial" ]

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

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

تحقَّق من محتوى ملف تخزين المفاتيح باستخدام واجهة برمجة التطبيقات الحصول على ملف تخزين المفاتيح أو Truststore. بالنسبة إلى عميل السحابة الإلكترونية، من المفترض أن تظهر لك شهادة TLS الخاصة بخادم واحد، وهي الشهادة التلقائية التي يوفّرها Apigee Edge للحسابات التجريبية المجانية.

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

يجب أن يظهر الرد على النحو التالي:

{
 "certs" : [ "wildcard.apigee.net.crt" ],
 "keys" : [ "freetrial" ],
 "name" : "freetrial"
}

الحصول على تفاصيل حول الاسم المستعار

يمكنك الحصول على قائمة بجميع الأسماء المستعارة لملفات تخزين المفاتيح باستخدام واجهة برمجة التطبيقات List listings (العناوين البديلة):

curl -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases"

يجب أن يظهر الرد على النحو التالي:

[
  "alias1",
  "alias2",
  "alias3",
]

للحصول على كل المعلومات حول العنوان البديل للبريد الإلكتروني، مثل تاريخ انتهاء الصلاحية وجهة الإصدار، يمكنك استخدام واجهة برمجة التطبيقات الحصول على العنوان البديل للبريد الإلكتروني وتحديد اسم العنوان البديل للبريد الإلكتروني:

curl  -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases/{alias_name}"

يجب أن يظهر الرد على النحو التالي:

{
  "alias": "alias1",
  "certsInfo": {
    "certInfo": [
      {
        "basicConstraints": "CA:TRUE",
        "expiryDate": 1459371335000,
        "isValid": "No",
        "issuer": "EMAILADDRESS=foo@bar.com, CN=smg, OU=doc, O=Internet Widgits Pty Ltd, L=noho, ST=Some-State, C=AU",
        "publicKey": "RSA Public Key, 1024 bits",
        "serialNumber": "00:86:a0:9b:5b:91:a9:fe:92",
        "sigAlgName": "SHA256withRSA",
        "subject": "EMAILADDRESS=foo@bar.com, CN=smg, OU=doc, O=Internet Widgits Pty Ltd, L=noho, ST=Some-State, C=AU",
        "subjectAlternativeNames": [],
        "validFrom": 1456779335000,
        "version": 3
      }
    ],
    "certName": "new\-cert"
  },
  "keyName": "newssl20"
}

لتنزيل شهادة لاسم مستعار، استخدم واجهة برمجة التطبيقات تصدير شهادة لاسم مستعار:

curl -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/e/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases/{alias_name}/certificate"

يجب أن يظهر الرد على النحو التالي:

-----BEGIN CERTIFICATE-----
MIIDojCCAwugAwIBAgIJAIagm1uRqf6SMA0GCSqGSIb3DQEBCwUAMIGTMQswCQYD
...
RBUkaTe/570sLHY0tvkIm5tEX36ESw==
-----END CERTIFICATE-----

إذا كانت لديك شهادة منتهية الصلاحية وتريد تجديدها، يمكنك تنزيل طلب توقيع شهادة (CSR). بعد ذلك، تُرسل ممثل خدمة العملاء (CSR) إلى مرجع التصديق للحصول على شهادة جديدة. لإنشاء طلب CSR لاسم بديل، استخدِم واجهة برمجة التطبيقات إنشاء CSR لاسم مستعار:

curl -u orgAdminEmail:password -X GET \
"https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/{keystore_name}/aliases/{alias_name}/csr"

يجب أن يظهر الرد على النحو التالي:

-----BEGIN CERTIFICATE REQUEST-----
MIIB1DCCAT0CAQAwgZMxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRl
...
RF5RMytbkxkvPxIE17mDKJH0d8aekv/iEOItZ+BtQg+EibMUkkjTzQ==
-----END CERTIFICATE REQUEST-----

إضافة شهادة إلى Truststore لاستخدام بروتوكول أمان طبقة النقل (TLS) الثنائي

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

عند ضبط متجر Truststore لأول مرة، يمكنك إضافة جميع الشهادات للعملاء المعروفين. ومع ذلك، قد تحتاج بمرور الوقت إلى إضافة شهادات أخرى إلى Truststore أثناء إضافة عملاء جُدد.

لإضافة شهادات جديدة إلى Truststore يستخدم بروتوكول أمان طبقة النقل (TLS) الثنائي، اتّبِع الخطوات التالية:

  1. تأكّد من استخدام مرجع إلى Truststore في المضيف الظاهري.
  2. حمِّل شهادة جديدة إلى Truststore كما هو موضّح أعلاه في إنشاء متجر Truststore.
  3. عدِّل مرجع Truststore لضبطه على القيمة نفسه. يؤدي هذا التحديث إلى إعادة تحميل Edge إلى Truststore والشهادة الجديدة.

    لمزيد من المعلومات، يُرجى مراجعة القسم تعديل مرجع.

حذف ملف تخزين مفاتيح أو ملف تخزين موثوق به أو اسم مستعار

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

عادةً ما تكون العملية التي تستخدمها لحذف ملف تخزين مفاتيح/متجر موثوق به أو اسم مستعار:

  1. أنشئ ملف تخزين مفاتيح أو ملف تخزين موثوق به أو اسمًا مستعارًا جديدًا كما هو موضح أعلاه.
  2. بالنسبة إلى الاتصالات الواردة، أي طلب من واجهة برمجة تطبيقات في Edge، يجب تعديل إعدادات المضيف الافتراضي للإشارة إلى ملف تخزين المفاتيح الجديد والاسم المستعار للمفتاح.
  3. بالنسبة إلى الاتصالات الصادرة، أي من Apigee إلى خادم خلفية:
    1. عدِّل إعدادات TargetEndpoint لأي خوادم وكيلة لواجهة برمجة التطبيقات أشارت إلى ملف تخزين المفاتيح القديم والعنوان البديل للمفتاح للإشارة إلى ملف تخزين المفاتيح الجديد والاسم المستعار للمفتاح. إذا كانت قيمة TargetEndpoint تشير إلى TargetServer، عليك تعديل تعريف TargetServer للإشارة إلى ملف تخزين المفاتيح الجديد والاسم المستعار للمفتاح.
    2. إذا تمت الإشارة إلى ملف تخزين المفاتيح وملف Truststore مباشرةً من تعريف TargetEndpoint، عليك إعادة نشر الخادم الوكيل. إذا كانت قيمة TargetEndpoint تشير إلى تعريف TargetServer، وكان تعريف TargetServer يشير إلى ملف تخزين المفاتيح ومخزن الثقة، ليس من الضروري إعادة نشر الخادم الوكيل.
    3. تأكد من أن الخوادم الوكيلة لواجهة برمجة التطبيقات تعمل بشكل صحيح.
    4. احذف ملف تخزين المفاتيح/متجر الثقة أو العنوان البديل للبريد الإلكتروني.

راجِع تعديل الشهادة في عنوان بديل للاطّلاع على مزيد من المعلومات.

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

يمكنك حذف ملف تخزين مفاتيح أو ملف تخزين موثوق به باستخدام واجهة برمجة التطبيقات Delete a Keystore (حذف ملف تخزين مفاتيح) أو Truststore:

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

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

حذف العنوان البديل للبريد الإلكتروني

يمكنك حذف عنوان بديل للبريد الإلكتروني في ملف تخزين المفاتيح أو مخزن مفاتيح الثقة باستخدام واجهة برمجة التطبيقات حذف العنوان البديل للبريد الإلكتروني:

curl -u orgAdminEmail:password -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/keystores/myKeystoreName/aliases/{alias_name}