يوضح لك هذا الدليل كيفية تثبيت شهادة SSL على Google App Engine، بالطريقة الحديثة (شهادة مجانية يديرها Google يقوم App Engine بتوفيرها وتجديدها تلقائيًا لأي نطاق مخصص) وبالطريقة التقليدية (تحميل شهادتك الخاصة من جهة خارجية عندما تحتاج إلى CA معينة، أو شهادة EV/OV، أو شهادة wildcard). App Engine هي منصة PaaS مُدارة بالكامل، لذا يحدث كل هذا في Google Cloud Console أو عبر واجهة سطر الأوامر gcloud؛ فأنت لا تسجّل الدخول إلى خادم أبدًا.
المتطلبات المسبقة
قبل تثبيت الشهادة، تأكد من توفر ما يلي:
- تطبيق App Engine منشور (بيئة قياسية أو مرنة) في مشروع Google Cloud.
- نطاق مسجّل تتحكم فيه، مع إمكانية الوصول إلى سجلات DNS الخاصة به.
- نطاق موثّق لحسابك في Google عبر Google Search Console أو Webmaster Central (يقرأ App Engine ملكية النطاق الموثّقة من هناك).
- واجهة سطر الأوامر gcloud مُثبَّتة وموثّقة، إذا كنت تفضل سطر الأوامر على وحدة التحكم.
- دور Owner أو Editor أو App Engine Admin على المشروع.
تعمل النطاقات المخصصة وشهادات SSL على App Engine بهذا الترتيب: توثيق النطاق، ثم ربطه بتطبيقك، ثم توجيه DNS إلى App Engine، ثم إما السماح لـ Google بتوفير شهادة مُدارة أو تحميل شهادتك الخاصة.
الخيار الأول: شهادة SSL المجانية التي تديرها Google (موصى به)
الشهادات التي تديرها Google مجانية، ويتم توفيرها تلقائيًا عبر Let’s Encrypt، ويتم تجديدها تلقائيًا طالما بقي النطاق مرتبطًا. هذا هو الوضع الافتراضي لأي نطاق مخصص جديد على App Engine، وهو الخيار المناسب لمعظم المواقع. الشهادات المُدارة لا تدعم شهادات wildcard: كل اسم مضيف (مثل example.com و www.example.com) تغطيه شهادته الخاصة.
الخطوة 1: توثيق ملكية نطاقك
في متصفحك، سجّل الدخول إلى Google Search Console بنفس حساب Google الذي يملك مشروع Cloud، وأضف نطاقك كخاصية، وأكمل إحدى طرق التوثيق (سجل DNS TXT هو الأكثر موثوقية). لن يسمح لك App Engine بربط نطاق لم توثّقه.
الخطوة 2: ربط النطاق المخصص في وحدة التحكم
- افتح Google Cloud Console وحدد مشروعك.
- من قائمة التنقل، اختر App Engine > Settings.
- افتح علامة التبويب Custom Domains وانقر على Add a custom domain.
- اختر النطاق الموثّق من القائمة المنسدلة، ثم أدخل النطاقات الفرعية التي تريد تقديمها (عادةً النطاق الجذر example.com و www.example.com).
- انقر على Save mappings، ثم اتبع التعليمات التي تظهر على الشاشة لإضافة سجلات A و AAAA و CNAME المقترحة عند مزوّد DNS الخاص بك.
لتنفيذ الأمر نفسه من سطر الأوامر، شغّل:
gcloud app domain-mappings create www.example.com --project=YOUR_PROJECT_ID
gcloud app domain-mappings create example.com --project=YOUR_PROJECT_ID
الخطوة 3: الانتظار حتى صدور الشهادة المُدارة
بعد انتشار DNS، يطلب App Engine تلقائيًا شهادة Let’s Encrypt لكل اسم مضيف مرتبط. يكون التوفير سريعًا في العادة، لكن انتشار DNS قد يستغرق حتى 24 ساعة. تحقق من الحالة بواسطة:
gcloud app domain-mappings list --project=YOUR_PROJECT_ID
يعرض كل ربط حالة SSL بقيمة MANAGED_CERTIFICATE_STATUS: OK عندما تصبح الشهادة فعّالة. أثناء إصدارها ستظهر PROVISIONING أو PENDING_DNS؛ وتزول هذه الحالة عادةً بمجرد أن تتحلل سجلات DNS إلى عناوين IP الخاصة بـ Google.
الخطوة 4: فرض HTTPS للزوار (البيئة القياسية)
في بيئة App Engine القياسية، أعِد توجيه كل طلب إلى HTTPS بإضافة secure: always إلى كل معالج (handler) في app.yaml:
handlers:
- url: /.*
script: auto
secure: always
redirect_http_response_code: 301
نشر التغيير باستخدام gcloud app deploy. في البيئة المرنة، تعامل مع إعادة توجيه HTTP إلى HTTPS على مستوى التطبيق أو موازن التحميل.
الخيار الثاني: تحميل شهادة SSL خاصة بك من جهة خارجية
اختر هذا المسار عندما تحتاج إلى شهادة wildcard، أو شهادة OV أو EV من جهة إصدار شهادات معينة، أو شهادة صادرة مسبقًا لنطاقك. يقبل App Engine ملف PEM واحدًا يحتوي على الشهادة النهائية وأي شهادات وسيطة، بالإضافة إلى مفتاح خاص RSA بترميز PEM غير مشفّر. يُسمح بحد أقصى خمس شهادات إجمالًا في ملف PEM المرفوع (شهادة نهائية واحدة زائد حتى أربع شهادات وسيطة)، ويمكن إعادة استخدام الشهادات المرفوعة عبر المشاريع في مؤسسة Cloud نفسها.
الخطوة 1: توليد CSR وطلب الشهادة
إذا كنت قد ولّدت CSR الخاص بك بالفعل واستلمت الشهادة الصادرة من جهة الإصدار (CA)، انتقل مباشرة إلى الخطوة 2.
CSR (طلب توقيع الشهادة) هو نص مُشفّر يحتوي على بيانات الاتصال والنطاق الخاصة بك تستخدمها جهة الإصدار للتحقق من شهادتك وتوقيعها. لديك طريقتان لإنشائه:
- استخدم أداة إنشاء CSR الخاصة بنا لإنتاج CSR والمفتاح الخاص في متصفحك.
- ولّده محليًا باستخدام OpenSSL؛ راجع كيفية إنشاء CSR على Google App Engine.
أرسل CSR (بما في ذلك علامتا —–BEGIN CERTIFICATE REQUEST—– و —–END CERTIFICATE REQUEST—–) إلى جهة الإصدار أثناء طلبك. احفظ المفتاح الخاص المطابق في مكان آمن؛ ستحتاج إليه أثناء التثبيت.
الخطوة 2: دمج الشهادة والسلسلة في ملف PEM واحد
إذا زودتك جهة الإصدار بملفات منفصلة (شهادة خادمك بالإضافة إلى شهادة وسيطة واحدة أو أكثر)، فادمجها بالترتيب الصحيح (شهادتك أولًا، والشهادات الوسيطة بعدها). افتح موجّه أوامر في المجلد الذي يحتوي على الملفات وشغّل:
cat yourdomain.crt intermediate.crt > concat.crt
في Windows PowerShell، الأمر المعادل هو:
Get-Content yourdomain.crt, intermediate.crt | Set-Content concat.crt
النتيجة هي ملف شهادة بترميز PEM يحتوي على السلسلة الكاملة. إذا احتجت أيضًا إلى تحويل الصيغ (مثل التحويل من .pfx أو .p12 إلى PEM)، استخدم أدوات SSL الخاصة بنا.
يجب أن يكون المفتاح الخاص مفتاح RSA بترميز PEM غير مشفّر (مثل myserver.key.pem). إذا كان مفتاحك محميًا بكلمة مرور، أزل عبارة المرور بواسطة:
openssl rsa -in encrypted.key -out myserver.key.pem
الخطوة 3: تحميل الشهادة في Cloud Console
- افتح Google Cloud Console وحدد مشروعك.
- انتقل إلى قائمة التنقل > App Engine > Settings، ثم افتح علامة التبويب SSL Certificates.
- انقر على Upload a new certificate.
- أعطِ الشهادة اسمًا (Name)، ثم حمّل concat.crt تحت PEM encoded X.509 public key certificate و myserver.key.pem تحت Unencrypted PEM encoded RSA private key.
- انقر على Upload.
الخطوة 4: تخصيص الشهادة لنطاقاتك
في صفحة تفاصيل الشهادة، حدد النطاقات المخصصة التي تريد تأمينها، ثم انقر على Save. إذا كان النطاق يستخدم حاليًا شهادة تديرها Google، عطّل وضع الإدارة التلقائية له أولًا؛ وإلا فلن يتم تطبيق التحميل.
الخطوة 5 (اختياري): التحميل والربط من واجهة سطر الأوامر gcloud
نفس العملية من سطر الأوامر:
gcloud app ssl-certificates create
--display-name="example.com 2026"
--certificate=concat.crt
--private-key=myserver.key.pem
يعرض الأمر معرّف الشهادة الجديدة. اربطها بنطاق مرتبط وأوقف وضع الإدارة التلقائية لذلك الربط:
gcloud app domain-mappings update www.example.com
--certificate-id=CERT_ID
--certificate-management=manual
للتبديل مرة أخرى إلى شهادة مجانية تديرها Google لاحقًا، شغّل:
gcloud app domain-mappings update www.example.com
--certificate-management=automatic
ملاحظات وحدود
- الشهادات المُدارة لا تشمل شهادات wildcard. بالنسبة إلى *.example.com، حمّل شهادة wildcard كما في الخيار الثاني.
- تحدد Let’s Encrypt سقفًا للإصدار عند 50 شهادة مُدارة في الأسبوع لكل نطاق أساسي. نادرًا ما يمثل هذا الحد مشكلة، لكنه مهم إذا ربطت العديد من النطاقات الفرعية دفعة واحدة.
- يتم حذف الشهادات المرفوعة غير المخصصة لأي نطاق تلقائيًا بعد 30 يومًا.
- الحد الأقصى هو شهادة نهائية واحدة زائد أربع شهادات وسيطة في ملف PEM المرفوع الواحد.
- تكون الشهادة المرفوعة مرئية في جميع المشاريع داخل مؤسسة Cloud الخاصة بك، بما يسمح بإعادة استخدام شهادة wildcard واحدة.
اختبار تثبيت SSL
افتح موقعك عبر https:// وتأكد من ظهور رمز القفل، ثم شغّل فحصًا أعمق باستخدام SSL Checker للحصول على تقرير فوري عن الشهادة والسلسلة ودعم البروتوكول.
الأسئلة الشائعة
نعم. بمجرد ربط نطاق مخصص موثّق بتطبيق App Engine الخاص بك وتوجيه DNS نحو Google، يوفّر App Engine تلقائيًا شهادة SSL مجانية عبر Let’s Encrypt ويجددها لك. لا تدفع مقابل ذلك ولا تحتاج إلى تحميل أي شيء.
الشهادات المجانية التي تديرها Google لا تدعم شهادات wildcard. لتأمين *.example.com، اشترِ شهادة wildcard، ودمج الشهادة النهائية والشهادات الوسيطة في ملف PEM واحد، ثم حمّلها تحت App Engine > Settings > SSL Certificates (الخيار الثاني أعلاه).
لا يمكن لـ App Engine إصدار شهادة Let’s Encrypt حتى تتحلل سجلات DNS لنطاقك إلى عناوين IP الخاصة بـ Google التي قدمها عند إنشاء الربط. تحقق من أن سجلات A و AAAA و CNAME تطابق القيم المعروضة تحت Custom Domains، ثم انتظر انتشار DNS، الذي قد يستغرق حتى 24 ساعة. شغّل gcloud app domain-mappings list لإعادة فحص الحالة.
في البيئة القياسية، أضف secure: always (واختياريًا redirect_http_response_code: 301) إلى كل معالج في app.yaml، ثم أعِد النشر باستخدام gcloud app deploy. في البيئة المرنة، نفّذ إعادة التوجيه على مستوى التطبيق أو موازن التحميل.
فقط إذا حمّلت شهادتك الخاصة. تُجدد الشهادات التي تديرها Google تلقائيًا طالما بقي النطاق مرتبطًا وما زال DNS يتحلل إلى App Engine. تنتهي صلاحية الشهادات المرفوعة من جهات خارجية عند التاريخ الذي حددته جهة الإصدار (حاليًا حتى نحو عام واحد لشهادات TLS العامة)، لذا يجب تكرار خطوات التحميل والتخصيص قبل ذلك التاريخ.
وفِّر 10% على شهادات SSL عند الطلب اليوم!
إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10


