أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
يشرح هذا الموضوع كيفية تشغيل Edge Microgateway في حاوية Docker. الخطوات سنتناول في هذا الموضوع فهمًا أساسيًا لأوامر Docker وأوامر Docker وبوابة Edge Microgateway عملية الإعداد والتهيئة. بالنسبة لمزيد من المعلومات، يمكنك الرجوع إلى مستندات Docker وEdge Microgateway
المتطلبات الأساسية
قبل تشغيل Edge Microgateway في حاوية Docker، يجب تنفيذ ما يلي المهام:
اضبط مدخل Edge Microgateway لمؤسستك أو بيئتك في Apigee:
edgemicro configure -o your_org -e your_env -u your_username
للحصول على مزيد من التفاصيل حول التهيئة، اطلع على الجزء 1: تهيئة Edge Microgateway.
بعد تنفيذ خطوات الضبط، حدِّد موقع الإعدادات الملف. يكون الموقع الجغرافي التلقائي هنا:
$HOME/.edgemicro/your_org-your_env-config.yaml
حيث
your_org
وyour_env
هما المؤسسة والبيئة التي استخدمتها عند تشغيل الأمرedgemicro config
. ستحتاج إلى هذا الملف عند بدء تشغيل بوابة Edge Microgateway في حاوية Docker.تأكد من أن لديك بيانات الاعتماد الرئيسية والسرية التي تم إرجاعها عند تشغيل الأمر
edgemicro config
. على سبيل المثال:The following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
قبل أن تبدأ بوابة Edge Microgateway في حاوية Docker، يلزمك إنشاء (أو أنشأت) كيانات Apigee Edge المطلوبة لإجراء طلبات بيانات من خادم وكيل واجهة برمجة التطبيقات التي تمت مصادقتها. تتضمن هذه الكيانات جهاز Edge Microgateway وكيل ومنتج واجهة برمجة تطبيقات ومطوّر وتطبيق مطوّر برامج. للحصول على التعليمات الكاملة، راجع إنشاء كيانات في Apigee Edge
تشغيل Edge Micro كحاوية Docker
تنزيل صورة Docker لـ Edge Microgateway:
docker pull gcr.io/apigee-microgateway/edgemicro:latest
قبل الانتقال إلى الخطوات التالية، تأكَّد من أنّك نفذت جميع الخطوات في قسم المتطلبات الأساسية.
شغّل الأمر التالي لتشفير ملف تهيئة Edge Microgateway موجود في
$HOME/.edgemicro
:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
حيث يمثل كل من
your_org
وyour_env
المؤسسة والبيئة اللذين استخدمتهما عند تم تشغيل الأمرedgemicro config
.تذكر وضع علامات فاصلة عليا (`) حول الأمر. على سبيل المثال:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
شغِّل Edge Microgateway كحاوية. يضبط الأمر متغيرات بيئة متعددة. التي يستخدمها وقت تشغيل الحاوية لبدء بوابة Edge Microgateway:
docker run -P -p 8000:8000 -d --name edgemicro \ -v /var/tmp:/opt/apigee/logs \ -e EDGEMICRO_PROCESSES=1 \ -e EDGEMICRO_ORG=your_org \ -e EDGEMICRO_ENV=your_env \ -e EDGEMICRO_KEY=your_key \ -e EDGEMICRO_SECRET=your_secret \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL \ gcr.io/apigee-microgateway/edgemicro:latest
المعلّمات
المعلَمة الوصف -P
انشر جميع المنافذ التي تم الكشف عنها إلى المضيف. راجِع أيضًا مرجع تشغيل Docker. -p
تعيين منفذ واحد أو مجموعة من المنافذ بشكل صريح. راجِع أيضًا مرجع تشغيل Docker. -d
تشغيل في وضع منفصل. راجِع أيضًا مرجع تشغيل Docker. -v, --volume
تحدِّد هذه السياسة وحدة تثبيت مستوى الصوت. لاحظ أنه في حالة تهيئة Edge Microgateway لاستخدام بروتوكول أمان طبقة النقل (TLS) في حاوية Docker، يجب كشف المنفذ 8443 إذا تثبيت دليل ملف السجل. راجع أيضًا VOLUME [أنظمة الملفات المشتركة]. راجع أيضًا استخدام بروتوكول أمان طبقة النقل (TLS) في حاوية Docker. EDGEMICRO_ORG
اسم مؤسسة Apigee التي استخدمتها لإعداد Edge Microgateway. EDGEMICRO_ENV
اسم بيئة Apigee التي استخدمتها لإعداد Edge Microgateway. EDGEMICRO_PROCESSES
عدد العمليات للبدء. EDGEMICRO_KEY
يتم عرض المفتاح عند ضبط Edge Microgateway. EDGEMICRO_SECRET
تم عرض السر عند ضبط Edge Microgateway. EDGEMICRO_CONFIG
متغيّر يحتوي على ملف إعداد Edge Microgateway بترميز base64. SERVICE_NAME
إذا كنت تستخدِم Kubernetes، تتم تعبئة هذه المَعلمة تلقائيًا. وبخلاف ذلك، يمكنك تعيينه إلى أي شيء تريده. إذا لم تحدد أي شيء، فسيتم استخدام تم ضبط الاسم على default
.DEBUG
اضبط القيمة على *
لتفعيل تصحيح الأخطاء.HTTP_PROXY
HTTPS_PROXY
الاستخدام عندما تكون بوابة Edge Microgateway إذا كان الجهاز يعمل خلف جدار حماية ولا يمكن للبوابة الاتصال بـ Apigee الحافة. لمزيد من المعلومات، يمكنك الاطلاع على إعداد Edge Microgateway خلف جدار حماية للشركة. مثلاً:
HTTP_PROXY=http://10.203.0.1:5187/
NO_PROXY
قائمة بالنطاقات المفصولة بفواصل التي يجب ألا يمثِّل Edge Microgateway منها خادمًا وكيلاً لها. للمزيد من المعلومات، اطلع على إعداد Edge Microgateway خلف جدار حماية للشركة. مثلاً:
localhost,127.0.0.1,localaddress,.localdomain.com
NODE_EXTRA_CA_CERTS
(اختياري) يمكنك استخدام هذه المعلمة إذا كنت تستخدم مرجع تصديق غير موثوق به بشكلٍ تلقائي بواسطة Node.js. اضبط قيمة هذه المَعلمة على المسار إلى يحتوي على شهادة واحدة أو أكثر من الشهادات الموثوق بها بتنسيق PEM. بالنسبة التفاصيل، يُرجى الاطِّلاع على شهادات بروتوكول أمان طبقة النقل (TLS). --security-opt
(اختياري) يضبط خيارات أمان Docker المطلوبة. اطّلِع على ضبط الأمان في وثائق Docker. --cap-drop
(اختياري) تضبط الحدود على إمكانات Linux المسموح بها في الحاوية. راجِع امتياز وقت التشغيل وإمكانات نظام التشغيل Linux في وثائق Docker. على سبيل المثال:
docker run -P -p 8000:8000 -d --name edgemicro \ -v /var/tmp:/opt/apigee/logs \ -e EDGEMICRO_PROCESS=1 \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0 \ -e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430 \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL \ gcr.io/apigee-microgateway/edgemicro
للتحقّق من أنّ الحاوية قيد التشغيل:
docker ps
ينبغي أن تظهر مُخرجات مشابهة لما يلي:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8b92e082ea9c edgemicro "/tmp/entrypoint.sh" 12 minutes ago Up 12 minutes 0.0.0.0:8000->8000/tcp, 0.0.0.0:32775->8443/tcp edgemicro
اختبار طلب بيانات من واجهة برمجة التطبيقات
بعد بدء تشغيل Edge Microgateway في الحاوية، يمكنك إجراء طلبات بيانات من واجهة برمجة التطبيقات إليها.
على سبيل المثال، إذا كان المسار الأساسي لواجهة برمجة التطبيقات هو /hello
:
http://localhost:8000/hello
عينة الناتج:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
إذا ظهر لك هذا الرد، فهذا يعني أن Edge Microgateway قد تم التعامل معه بنجاح استدعاء واجهة برمجة التطبيقات. ومع ذلك، تتطلب Edge Microgateway بشكلٍ تلقائي مفتاح واجهة برمجة التطبيقات للمصادقة. في القسم التالي، ستختبر واجهة برمجة التطبيقات باستخدام مفتاح صالح لواجهة برمجة التطبيقات.
اختبار واجهة برمجة تطبيقات باستخدام مفتاح واجهة برمجة تطبيقات صالح
في واجهة مستخدم Edge، انتقِل إلى "تطبيق المطوِّر" الذي أنشأته سابقًا. في قسم "المطوّر" تعرض مفتاح العميل وانسخه. وهذه القيمة هي مفتاح واجهة برمجة التطبيقات. ستستخدم بهذا المفتاح لإجراء طلبات بيانات من واجهة برمجة التطبيقات تمت مصادقتها.
يمكنك طلب واجهة برمجة التطبيقات التي تتضمّن العنوان x-api-key
على النحو التالي. قيمة مفتاح المستهلك التي
الذي نسخته من تطبيق المطور هو مفتاح واجهة برمجة التطبيقات. بشكل افتراضي، Edge Microgateway
عليك تمرير المفتاح في عنوان يُسمى x-api-key
، على النحو التالي:
curl -i http://localhost:8000/hello -H "x-api-key:apikey"
على سبيل المثال:
curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz"
لمعرفة المزيد من المعلومات حول إجراء طلبات بيانات من واجهة برمجة التطبيقات تمت مصادقتها من خلال Edge Microgateway باستخدام مفاتيح واجهة برمجة التطبيقات ورموز OAuth المميزة، فاطلع على الجزء 4: مدخل Micro Edge المصغّر.
إيقاف المدخل الدقيق للحواف
استخدم أمر Docker التالي لإيقاف بوابة Edge Microgateway:
docker stop edgemicro
إعادة تشغيل Edge Microgateway
بعد إيقاف Edge Microgateway، يمكنك إعادة تشغيله باستخدام أمر Docker هذا:
docker start edgemicro
استخدام بروتوكول أمان طبقة النقل (TLS) في حاوية Docker
يوضح هذا القسم كيفية تهيئة بروتوكول أمان طبقة النقل (TLS) لـ Edge Microgateway الذي يعمل في حاوية Docker. يمكنك تهيئة خادم Edge Microgateway لاستخدام بروتوكول أمان طبقة النقل (TLS) للطلبات الواردة (الاتجاه الشمالي)، ويمكنك تهيئة Edge مدخل مصغّرة لتكون عميل بروتوكول أمان طبقة النقل (TLS) للطلبات الصادرة إلى نقاط النهاية المستهدفة (الاتجاه الخارجي).
مكان وضع ملفات الشهادات
تتضمّن حاوية Docker التي تشغّل بوابة Edge Microgateway نقطة تثبيت على /opt/apigee/.edgemicro
.
عند تهيئة Edge Microgateway لاستخدام شهادات بروتوكول أمان طبقة النقل (TLS)، يمكنك إجراء
المتوفرة على نقطة التثبيت هذه وارجع إليها في
ملف إعداد Edge Microgateway. يقع ملف الإعداد هذا عادةً في $HOME/.edgemicro
الدليل، ويسمّى your_org-your_env-config.yaml
.
على سبيل المثال:
...
edgemicro:
ssl:
key: /opt/apigee/.edgemicro/southbound/tls.key
cert: /opt/apigee/.edgemicro/southbound/tls.crt
...
استخدام مرجع تصديق غير موثوق به بواسطة Node.js
في حال استخدام مرجع تصديق (CA) غير موثوق به بشكل تلقائي
Node.js (كما هو الحال مع شهادة موقعة ذاتيًا)، يمكنك استخدام
المَعلمة NODE_EXTRA_CA_CERTS
عند تشغيل الحاوية.
اضبط هذه المعلمة على المسار لملف يحتوي على معلمة أو أكثر شهادات موثوق بها بتنسيق PEM. لمعرفة كيفية استخدام هذه المعلمة، يمكنك مراجعة مثالان كيفية ضبط بروتوكول أمان طبقة النقل (TLS) باتجاه الشمال وكيفية ضبط بروتوكول أمان طبقة النقل (TLS) باتجاه الجنوب.
على سبيل المثال:
docker run -P -p 8443:8443 -d --name edgemicro \
-v $HOME/.edgemicro:/opt/apigee/.edgemicro \
-v $HOME/.edgemicro:/opt/apigee/logs \
-e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \
-e EDGEMICRO_PORT=8443 \
-e EDGEMICRO_ORG=docs \
-e EDGEMICRO_ENV=test \
-e EDGEMICRO_KEY=ac36574905fb54fdae65fc5433e831bec2680efb98220a355f2e917e52973c \
-e EDGEMICRO_SECRET=aac81dff6c326eaa222d53c15c8841fa78ea863bf4472568c9ce2d80a3bc56 \
-e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
--link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
راجع أيضًا تشغيل Edge Micro كحاوية Docker.
إيقاف التحقق من بروتوكول أمان طبقة النقل (TLS)
قد ترغب في بعض الحالات في إيقاف التحقق من بروتوكول أمان طبقة النقل (TLS)، على الرغم من أنّه لا يُنصح بهذا الإجراء. لـ Edge Microgateway الذي يعمل في الحاوية. إمكانية إيقاف بروتوكول أمان طبقة النقل (TLS) غير مدمج في حاوية Edge Microgateway Docker تلقائيًا. لإنجاز للمهمة، يجب عليك إنشاء صورة Docker مخصصة لـ Edge Microgateway. أقل من هي تعليمات عامة لإنشاء صورة مخصصة وإيقاف التحقق من بروتوكول أمان طبقة النقل (TLS).
استنساخ أو نزّل مستودع مصدر Edge Microgateway من
https://github.com/apigee-internal/microgateway
cd
إلى الدليلmicrogateway/kubernetes/docker/edgemicro
في دليل رمز المصدر.على سبيل المثال:
cd $HOME/git/microgateway/kubernetes/docker/edgemicro
افتح الملف
entrypoint.sh
وعدِّل الرمز لقبولNODE_TLS_REJECT_UNAUTHORIZED
متغير البيئة. وفي وقت لاحق، عند تشغيل الحاوية، ستحدد قيمة لهذه المتغير.إنشاء حاوية Docker:
docker build -t edgemicro .
عند تشغيل الحاوية، حدِّد الخيار
-e NODE_TLS_REJECT_UNAUTHORIZED = 1
. على سبيل المثال:
docker run -P -p 8443:8443 -d --name edgemicro \
-v $HOME/.edgemicro:/opt/apigee/.edgemicro \
-v $HOME/.edgemicro:/opt/apigee/logs \
-e NODE_TLS_REJECT_UNAUTHORIZED = 1 \
-e EDGEMICRO_PORT=8443 \
-e EDGEMICRO_ORG=docs \
-e EDGEMICRO_ENV=test \
-e EDGEMICRO_KEY=ac36574905fb54fdae65fc5433e831bec2680efb98220a355f2e917e52973c \
-e EDGEMICRO_SECRET=aac81dff6c326eaa222d53c15c8841fa78ea863bf4472568c9ce2d80a3bc56 \
-e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
--link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
مثال: كيفية تهيئة بروتوكول أمان طبقة النقل (TLS) باتجاه الشمال
يوضح هذا القسم كيفية إعداد اتصال TLS (الوارد) شماليًا على بوابة Edge Microgateway الخادم. يسمح بروتوكول أمان طبقة النقل في الشمال للعملاء باستخدام بروتوكول HTTPS عند إجراء طلبات البيانات من واجهة برمجة التطبيقات إلى Edge Microgateway. يستخدم المثال أدناه الشهادات الموقعة ذاتيًا.
1. خطوات الإعداد الأولية
- حدد موقع الملف
openssl.cnf
على نظامك. مثلاً:/etc/ssl/openssl.cnf
- افتح ملف
opensssl.cnf
لإجراء التعديل. تأكَّد من توفّر
req_extensions
في ملف الإعداد. على سبيل المثال، على معلومات مشابهة لما يلي في ملفك:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
أضِف الجملة التالية إلى
openssl.cnf
لإنشاء سمات إشارة اسم الخادم (SNI) الصحيحة:[ alt_names ] DNS.1 = www.example.com DNS.2 = example.com DNS.3 = localhost DNS.4 = localhost.localdomain DNS.5 = 127.0.0.1 DNS.6 = ::1 DNS.7 = fe80::1
مثال على ملف
opensssl.cnf
:[ req ] distinguished_name = req_distinguished_name attributes = req_attributes req_extensions = v3_req [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (eg, fully qualified host name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 [ alt_names ] DNS.1 = www.example.com DNS.2 = example.com DNS.3 = localhost DNS.4 = localhost.localdomain DNS.5 = 127.0.0.1 DNS.6 = ::1 DNS.7 = fe80::1
اتبع الخطوات الواردة في قسم المتطلبات الأساسية للتهيئة عليك ضبط Edge Microgateway، إذا لم يسبق لك إجراء ذلك. عند الانتهاء، إنشاء خادم وكيل، مثل Edge Microgateway، أو منتج واجهة برمجة التطبيقات، أو وتطبيق مطور برامج. بالإضافة إلى ذلك، يجب أن تكون قد شغّلت الأمر
edgemicro configure
وحصلت على مفتاح وسر.
2. إنشاء شهادات موقعة ذاتيًا
بعد ذلك، أنشئ الشهادات والمفاتيح التي ستحتاجها لإنشاء بروتوكول أمان طبقة النقل (TLS):
cd
إلى الدليل$HOME/.edgemicro
.أنشئ النص البرمجي bash التالي. يمكنك تسميته أي شيء تريده. مثل:
keygen.sh
#!/bin/bash # generate ca openssl genrsa -out rootca.key 2048 openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1024 -out rootca.pem # generate key openssl genrsa -out tls.key 2048 openssl req -new -key tls.key -out tls.csr # sign cert openssl x509 -req -in tls.csr -CA rootca.pem -CAkey rootca.key -CAcreateserial -out tls.crt -days 1024 -sha256 -extensions 'v3_req' -extfile path/openssl.cnf
في ملف bash، تأكَّد من صحة المسار إلى ملف
openssl.cnf
.نفِّذ ملف bash. سيُطلب منك إدخال معلومات الشهادة. تأكد من استخدام
localhost
للاسم الشائع.تحقَّق من إنشاء الملفات التالية:
rootca.key
rootca.pem
tls.key
tls.csr
rootca.srl
tls.crt
3- تعديل ملف إعداد Edge Microgateway
افتح ملف تهيئة Edge Micro في محرر. على سبيل المثال:
vi $HOME/.edgemicro/myorg-test-config.yaml
عدِّل نص
edgemicro
على النحو التالي. يُرجى العلم أنّه يتم إجراء تغييرات إلى السمتَينport
وssl
:edge_config: ... edgemicro: port: 8443 max_connections: 1000 config_change_poll_interval: 600 ssl: key: /opt/apigee/.edgemicro/tls.key cert: /opt/apigee/.edgemicro/tls.crt passphrase: admin123 rejectUnauthorized: true requestCert: false logging: ...
نفّذ الأمر التالي لتشفير ملف إعداد Edge Microgateway موجود في
$HOME/.edgemicro
:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
حيث يمثل كل من
your_org
وyour_env
المؤسسة والبيئة اللذين استخدمتهما عند تم تشغيل الأمرedgemicro config
.تذكر وضع علامات فاصلة عليا (`) حول الأمر. على سبيل المثال:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
راجع أيضًا، تشغيل Edge Micro كحاوية Docker.
4. تشغيل الحاوية
نفذ الأمر التالي لتشغيل حاوية Docker باستخدام بوابة Edge Microgateway:
docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ gcr.io/apigee-microgateway/edgemicro:latest
لاحظ المعلَمات التالية المستخدمة في الأمر: تختلف عن المبادئ الأساسية الموضح في تشغيل Edge Micro كحاوية Docker.
- تم ضبط
port
على8443
. - يُستخدَم مستوى تثبيت الصوت لتثبيت المفتاح وملفات الشهادة.
- يُستخدم المتغيّر
NODE_EXTRA_CA_CERTS
لإضافة مرجع تصديق مخصّص (حسب الحاجة في حالة الطلب). الشهادات الموقعة ذاتيًا).
- تم ضبط
5- اختبار ضبط بروتوكول أمان طبقة النقل (TLS)
نفِّذ أمر cURL التالي لاختبار الإعداد. بديل مفتاح basepath ومفتاح واجهة برمجة التطبيقات في الأمر. يفترض المثال التالي أنك في الدليل حيث يقع
rootca.pem
وأنّ الخادم الوكيل الذي أنشأته يتضمّن المسار الأساسي/hello
:curl -v https://localhost:8443/hello --cacert rootca.pem \ -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
يعرض ناتج cURL المطوّل كل خطوة من تأكيد الاتصال من خلال بروتوكول أمان طبقة النقل (TLS). إذا ظهرت لك استجابة HTTP 200، يعني هذا أنّ عملية الضبط نجحت:
* Trying ::1...ey:Az82fdnfONVCOOE4NKhajxAboDgA3FAo" * TCP_NODELAY set * Connected to localhost (::1) port 8443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: rootca.pem CApath: none * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Client hello (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Client hello (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * ALPN, server accepted to use http/1.1 * Server certificate: * subject: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com * start date: Dec 14 22:35:28 2018 GMT * expire date: Oct 3 22:35:28 2021 GMT * common name: localhost (matched) * issuer: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com * SSL certificate verify ok. > GET /hello HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key:Az82fdnfaONVCOE4NKhajxAboDA3FAo > < HTTP/1.1 200 OK < x-powered-by: Apigee < access-control-allow-origin: * < x-frame-options: ALLOW-FROM RESOURCE-URL < x-xss-protection: 1 < x-content-type-options: nosniff < content-type: text/plain; charset=utf-8 < etag: W/"d-GHB1ZrJKk/wdVTdB/jgBsw" < date: Fri, 14 Dec 2018 22:43:13 GMT < via: 1.1 google < alt-svc: clear < x-response-time: 1325 < Connection: keep-alive < Transfer-Encoding: chunked < * Connection #0 to host localhost left intact Hello, Guest!
مثال: كيفية ضبط بروتوكول أمان طبقة النقل (TLS) في المنطقة الجنوبية
يوضح هذا القسم كيفية إعداد اتصال TLS (الصادر) في اتجاه الجنوب بين خادم Edge Microgateway وتطبيق هدف خلفية. يستخدم المثال أدناه الشهادات الموقعة ذاتيًا.
1. خطوات الإعداد الأوّلية
- حدد موقع الملف
openssl.cnf
على نظامك. مثلاً:/etc/ssl/openssl.cnf
- افتح ملف
opensssl.cnf
لإجراء التعديل. تأكَّد من توفّر
req_extensions
في ملف الإعداد. على سبيل المثال، على معلومات مشابهة لما يلي في ملفك:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
أضِف الجملة التالية إلى
openssl.cnf
لإنشاء سمات إشارة اسم الخادم (SNI) الصحيحة:[ alt_names ] DNS.1 = helloworld DNS.2 = localhost DNS.3 = localhost.localdomain DNS.4 = 127.0.0.1 DNS.5 = ::1 DNS.6 = fe80::1
مثال على ملف
opensssl.cnf
:[ req ] distinguished_name = req_distinguished_name attributes = req_attributes req_extensions = v3_req [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (eg, fully qualified host name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 [ alt_names ] DNS.1 = helloworld DNS.2 = localhost DNS.3 = localhost.localdomain DNS.4 = 127.0.0.1 DNS.5 = ::1 DNS.6 = fe80::1
شغِّل الأمر
edgemicro configure
:edgemicro configure -o your_org -e your_env -u your_username
للحصول على مزيد من التفاصيل حول التهيئة، اطلع على الجزء 1: تهيئة Edge Microgateway.
انسخ بيانات الاعتماد الرئيسية والسرية التي تم إرجاعها من
edgemicro configure
ستحتاج إلى هذه القيم لتشغيل الحاوية. على سبيل المثال:The following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
2. إنشاء تطبيق هدف Node.js
cd
إلى الدليل.edgemicro
.أنشئ النص البرمجي bash التالي. يمكنك تسميته أي شيء تريده. مثل:
keygen.sh
#!/bin/bash # generate ca openssl genrsa -out rootca.key 2048 openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1024 -out rootca.pem # generate key openssl genrsa -out tls.key 2048 openssl req -new -key tls.key -out tls.csr # sign cert openssl x509 -req -in tls.csr -CA rootca.pem -CAkey rootca.key -CAcreateserial -out tls.crt -days 1024 -sha256 -extensions 'v3_req' -extfile path/openssl.cnf
في ملف bash، تأكَّد من صحة المسار إلى ملف
openssl.cnf
.نفِّذ ملف bash. سيُطلب منك إدخال معلومات الشهادة. تأكد من استخدام
hellworld
للاسم الشائع.تحقَّق من إنشاء الملفات التالية:
rootca.key
rootca.pem
tls.key
tls.csr
rootca.srl
tls.crt
أنشِئ ملفًا جديدًا باسم "
server.js
".'use strict'; const express = require('express'); const https = require('https'); const fs = require('fs'); const options = { key: fs.readFileSync("tls.key"), cert: fs.readFileSync("tls.crt") }; // Constants const PORT = 9443; const HOST = '0.0.0.0'; // App const app = express(); app.get('/', (req, res) => { res.send('Hello world\n'); }); https.createServer(options, app).listen(PORT);
أنشئ ملف
package.json
في الدليل نفسه مثلserver.js
. على سبيل المثال:{ "name": "helloworld", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.16.4", "fs": "0.0.1-security", "https": "^1.0.0" } }
شغِّل
npm install
للحصول على الاعتماديات.يمكنك إنشاء ملف شامل جديد في الدليل نفسه، مثل
server.js
، حيث يتم تضمينWORKDIR
. هو المسار إلى جذر تطبيق Node.js:FROM node:8-alpine WORKDIR path-to-your-node-app COPY package*.json ./ RUN npm install COPY . . EXPOSE 9443 CMD [ "npm", "start" ]
إنشاء صورة Docker:
docker build -t helloworld .
ابدأ تشغيل نموذج التطبيق:
docker run -P -p 9443:9443 --name helloworld helloworld
3- إنشاء كيانات في Apigee Edge
يمكنك إنشاء خادم وكيل متوافق مع Edge Microgateway باستخدام هذه الإعدادات. لمزيد من المعلومات راجِع إنشاء خادم وكيل لواجهة برمجة التطبيقات Microgateway-aware على Edge على Edge.
- اسم الخادم الوكيل:
edgemicro_local
- النسخة السابقة:
1
- المسار الأساسي:
/local
- القيمة المُستهدفة:
https://helloworld:9443
- اسم الخادم الوكيل:
أنشئ منتج واجهة برمجة تطبيقات. لمعرفة التفاصيل، يُرجى الاطّلاع على إنشاء منتج.
أنشئ مطورًا. لمعرفة التفاصيل، يُرجى الاطّلاع على إنشاء مطوِّر.
أنشِئ تطبيق مطوِّر. لمعرفة التفاصيل، يُرجى الاطّلاع على إنشاء تطبيق مطوِّر.
4. تشغيل الحاوية
افتح ملف تهيئة Edge Micro في محرر. على سبيل المثال:
vi $HOME/.edgemicro/myorg-test-config.yaml
عدِّل نص
edgemicro
على النحو التالي. يُرجى العلم أنّه يتم إجراء تغييرات إلى السمتَينport
وssl
:edge_config: ... edgemicro: port: 8443 max_connections: 1000 config_change_poll_interval: 600 ssl: key: /opt/apigee/.edgemicro/tls.key cert: /opt/apigee/.edgemicro/tls.crt passphrase: admin123 rejectUnauthorized: true requestCert: false logging: ...
نفِّذ الأمر التالي لترميز base64 لملف إعداد Edge Microgateway المتوفّر في
$HOME/.edgemicro
:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
حيث يمثل كل من
your_org
وyour_env
المؤسسة والبيئة اللذين استخدمتهما عند تم تشغيل الأمرedgemicro config
.تذكر وضع علامات فاصلة عليا (`) حول الأمر. على سبيل المثال:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
شغّل الأمر التالي لبدء Edge Microgateway في حاوية Docker.
docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
5- اختبار ضبط بروتوكول أمان طبقة النقل (TLS)
نفِّذ أمر cURL التالي لاختبار الإعداد. بديل المسار الأساسي الذي استخدمته في الوكيل الواعي بالسياق مفتاح واجهة برمجة التطبيقات الذي تم الحصول عليه من تطبيق المطوِّر الذي أنشأته على Apigee Edge. على سبيل المثال:
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
من المفترض أن يظهر لك هذا الخطأ:
... * subject: C=CA; ST=Ontario; L=Toronto; O=Google Canada; OU=Google Cloud Platform; CN=edgemicro; emailAddress=srinandans@google.com * start date: Dec 10 02:12:22 2018 GMT * expire date: Sep 29 02:12:22 2021 GMT * issuer: C=CA; ST=Ontario; L=Toronto; O=Google Canada; OU=Google Cloud Platform; CN=edgemicro; emailAddress=srinandans@google.com * SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway. > GET /local HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key: 9fVC65pFj8LrmlPmVyxFjx4KgAHTxqSd > < HTTP/1.1 502 Bad Gateway < Date: Wed, 12 Dec 2018 05:25:01 GMT < Connection: keep-alive < Content-Length: 93 < * Connection #0 to host localhost left intact {"message":"unable to verify the first certificate","code":"UNABLE_TO_VERIFY_LEAF_SIGNATURE"}
أعِد تشغيل Edge Microgateway، ولكن أضِف هذه المرة المتغيّر
NODE_EXTRA_CA_CERTS
.docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
نفِّذ أمر cURL التالي. بديل المسار الأساسي ومفتاح واجهة برمجة التطبيقات كما كان من قبل. على سبيل المثال:
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
تحقَّق من الناتج. في حال نجاح عملية الإعداد، ستحصل على استجابة حالة HTTP 200:
... > GET /local HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key: 9fVC65pFj8LrmlPmVyxFjx4KgAHTxqSd > < HTTP/1.1 200 OK < x-powered-by: Express < content-type: text/html; charset=utf-8 < etag: W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0" < date: Wed, 12 Dec 2018 05:49:28 GMT < x-response-time: 421 < Connection: keep-alive < Transfer-Encoding: chunked < Hello world
إضافة مكوّن إضافي مخصص
يمكنك إضافة ميزات وإمكانات جديدة إلى البوابة المصغّرة من خلال كتابة المكونات الإضافية. تتيح لك المكونات الإضافية المخصصة التفاعل آليًا مع الطلبات واستجابات تتدفق من خلال البوابة الدقيقة.
لديك خياران لنشر المكونات الإضافية على بوابة Edge Microgateway مثيل يتم تشغيله في حاوية Docker:
- الخيار أ: تثبيت دليل المكوّنات الإضافية على وحدة تخزين
- الخيار "ب": إنشاء المكوّنات الإضافية في الحاوية
ويفترض باقي هذا القسم على دراية بكتابة وتكوين المكونات الإضافية لإعداد بوابة Edge Microgateway القياسية. وإذا لم يكن الأمر كذلك، يُرجى الاطلاع على تطوير مكونات إضافية مخصصة.
الخيار أ: تثبيت دليل المكوّنات الإضافية على وحدة تخزين
(تمت الإضافة في الإصدار 2.5.27) خطوات إضافة مكونات إضافية من خلال تثبيت مستوى الصوت هي
على غرار الخطوات المطلوبة لإضافة أي مكوّن إضافي مخصص إلى Edge Microgateway. فعندما
في وضع Docker، يمكنك تثبيت دليل المكوّنات الإضافية على
(مستوى الصوت) على نقطة تثبيت الحاوية، وهي /opt/apigee/plugins
.
يمكنك بعد ذلك تحديد دليل وحدة التخزين المحلي في ملف إعداد Edge Microgateway.
توضّح الخطوات التالية كيفية استخدام نقطة تثبيت Docker لتضمين المكونات الإضافية.
إيقاف Edge Microgateway:
edgemicro stop
أنشئ دليلاً للمكونات الإضافية المخصّصة. على سبيل المثال، قم بإنشاء
$HOME/edgemicro/custom/plugins
أضف دليل المكون الإضافي المخصص إلى ملف تهيئة Edge Microgateway. على سبيل المثال:
plugins: dir: $HOME/edgemicro/custom/plugins sequence: - oauth - response-uppercase ````
اكتب المكوّن الإضافي واختبره، وفقًا للتوجيهات الواردة في كتابة مكوّن إضافي بسيط. تأكد من ضع رمز المكون الإضافي في هيكل الدليل المناسب. على سبيل المثال:
custom | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
شغّل حاوية Docker باستخدام أمر مشابه للأمر التالي، حيث استخدِم الخيار
-v
لتثبيت دليل المكوّنات الإضافية على وحدة تخزين Docker. في جلسة المعمل، بعد مثال الأمر، دليل المكوّنات الإضافية$HOME/edgemicro/custom/plugins
(حيث يوجد المكوّن الإضافي المخصَّص) يتم تعيينه بنقطة تثبيت الحاوية/opt/apigee/plugins
:docker run -P -p 8000:8000 -d --name edgemicro \ -v /var/tmp:/opt/apigee/logs \ -v $HOME/edgemicro/custom/plugins:/opt/apigee/plugins \ -e EDGEMICRO_PROCESSES=1 \ -e EDGEMICRO_ORG=jdoe \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=39c4b561100cd7f258768d1072f3e1d7c17b5f36a18fe89972bb5c9ce7e58fb \ -e EDGEMICRO_SECRET=f5f9e239a38b4e6cc99c2aa067716a84aebdcff9580a7925fc500e402b1a5fa \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL gcr.io/apigee-microgateway/edgemicro:latest
يمكنك طلب واجهة برمجة التطبيقات لاختبار المكوّن الإضافي.
لمزيد من المعلومات، اطلع على VOLUME [أنظمة الملفات المشتركة].
الخيار ب: إنشاء المكوّنات الإضافية في الحاوية
في هذا الخيار، يمكنك إنشاء المكونات الإضافية في حاويتك.
1. حزمة المكونات الإضافية
اكتب المكوّن الإضافي واختبره، وفقًا للتوجيهات الواردة في كتابة مكوّن إضافي بسيط.
ضع رمز المكون الإضافي في هيكل الدليل المناسب. يجب أن تتبع أدلة المكونات الإضافية بنية محددة. يوضّح المثال التالي البنية التي يجب اتّباعها، حيث يمثل كل من
response-uppercase
وrequest-headers
أسماء المجلدات التي تحتوي على رمز مكون إضافي مخصص (هذه الأسماء هي أمثلة فقط، وقد تختلف أسماء المجلدات):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
cd
إلى المجلدplugin
في المجلد
plugin
، اضغط على المجلدplugins
بالكامل:zip -r plugins.zip plugins/
2. إنشاء صورة Docker
بعد ذلك، قم بإنشاء ملف Dockerfile لإضافة رمز المكون الإضافي إلى صورة Edge Microgateway.
- في الدليل نفسه الذي يوجد فيه ملف ZIP، أنشئ ملفًا جديدًا باسم
Dockerfile
. أضِف الرمز التالي إلى
Dockerfile
واحفظ الملف:USER root RUN apk update && \ apk upgrade && \ apk add zipapk add zip && \ mkdir /opt/apigee/customplugins && \ chown apigee:apigee /opt/apigee/customplugins COPY plugins.zip /opt/apigee/customplugins RUN su - apigee -c "unzip /opt/apigee/customplugins/plugins.zip -d /opt/apigee/customplugins" EXPOSE 8000 EXPOSE 8443 USER apigee ENTRYPOINT ["entrypoint"]
أنشئ صورة جديدة على Edge Microgateway Docker باستخدام المكونات الإضافية التالية:
docker build -t image-name .
على سبيل المثال:
docker build -t edgemicroplugins .
3- تعديل إعدادات Edge Microgateway
الآن بعد أن تم تجميع المكونات الإضافية، ستحتاج إلى إضافتها إلى بوابة Edge Microgateway ملف الإعداد.
افتح ملف تهيئة Edge Microgateway في محرر:
$HOME/.edgemicro/org-env-config.yaml
على سبيل المثال:
vi $HOME/.edgemicro/myorg-test-config.yaml
أضِف دليل المكوّن الإضافي إلى ملف الإعداد. في المثال التالي تحدد السمة
dir
موقع رمز المكون الإضافي (الذي حددته في الملف الشامل). كما يجب عليك تحديد اسم دليل المكونات الإضافية، والذي في المثال أدناه هيresponse-uppercase
.edgemicro: ... plugins: dir: /opt/apigee/plugins sequence: - oauth - response-uppercase
4. بدء المدخل المصغّر
وأخيرًا، يجب أن تبدأ المدخل الصغير في الحاوية.
شغّل الأمر التالي لتشفير ملف تهيئة Edge Microgateway موجود في
$HOME/.edgemicro
:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
حيث يمثل كل من
your_org
وyour_env
المؤسسة والبيئة اللذين استخدمتهما عند تم تشغيل الأمرedgemicro config
.تذكر وضع علامات فاصلة عليا (`) حول الأمر. على سبيل المثال:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
شغِّل Edge Microgateway كحاوية. يضبط الأمر متغيرات بيئة متعددة. التي يستخدمها وقت تشغيل الحاوية لبدء بوابة Edge Microgateway:
docker run -P -p 8000:8000 -d --name edgemicroplugins \ -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \ -e EDGEMICRO_ORG=your_org \ -e EDGEMICRO_ENV=your_env \ -e EDGEMICRO_KEY=your_key \ -e EDGEMICRO_SECRET=your_secret \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicroplugins image_name
على سبيل المثال:
docker run -P -p 8000:8000 -d --name edgemicroplugins \ -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0 \ -e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430 \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicroplugins edgemicroplugins
يمكنك الاتصال بواجهة برمجة التطبيقات لاختبار المكوّن الإضافي:
اختبر تنفيذ رمز المكون الإضافي من خلال استدعاء واجهة برمجة التطبيقات والتحقق من أن كما هو متوقع:
curl -i http://localhost:8000/hello -H "x-api-key:apikey"
على سبيل المثال، قد يعرض المكوّن الإضافي
response-uppercase
إجابة كالتالي:curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz" HELLO, WORLD!