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

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

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

مقدمة

لإعداد الوظائف التي تعتمد على البنية الأساسية للمفتاح العام، مثل بروتوكول أمان طبقة النقل (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 باستخدام مفتاحك الخاص والشهادة وملف البيان. جرّة أن يحتوي الملف على الملفات والأدلة التالية:

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

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

إنشاء متجر شهادات

تكون واجهات برمجة التطبيقات التي تستخدمها لإنشاء ملف تخزين موثوق به هي نفسها المستخدَمة لإنشاء ملف تخزين مفاتيح. تشير رسالة الأشكال البيانية الاختلاف الوحيد هو أنك تقوم بتحميل ملف شهادة فقط، كملف PEM، إلى 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_cert، من Truststore، ثم فشل التحقق من بروتوكول أمان طبقة النقل (TLS).

يمكنك إنشاء مخزن شهادات فارغ في البيئة باستخدام إنشاء ملف تخزين المفاتيح أو 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.

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

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

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

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

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

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). وبعد ذلك، ترسل ممثل خدمة العملاء إلى مصدر الشهادة للحصول على شهادة جديدة. لإنشاء طلب توقيع الشهادة الاسم المستعار، استخدم إنشاء طلب توقيع الشهادة لواجهة برمجة تطبيقات العنوان البديل للبريد الإلكتروني:

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

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

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

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

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

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

    راجِع المقالة تعديل مرجع للاطّلاع على مزيد من المعلومات.

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

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

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

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

عرض عليك تعديل الشهادة في اسم مستعار لمزيد من المعلومات.

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

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