إنشاء المفاتيح والشهادات لخدمة "الدخول المُوحَّد (SSO)"

توفّر Google Workspace خدمة "الدخول المُوحَّد" (SSO) للعملاء الذين لديهم Google Workspace أو Google Workspace for Education. تقبل خدمة الدخول المُوحَّد في Google Workspace المفاتيح العامة والشهادات التي تم إنشاؤها باستخدام خوارزمية RSA أو DSA. لاستخدام الخدمة، عليك إنشاء مجموعة من المفاتيح العامة والخاصة وشهادة X.509 تحتوي على المفتاح العام. بعد الحصول على مفتاح عام أو شهادة، عليك تسجيلهما لدى Google. يمكنك إجراء ذلك ببساطة عن طريق تحميل المفتاح أو الشهادة من خلال "وحدة تحكّم المشرف في Google".

تعتمد طريقة إنشاء المفاتيح والشهادات غالبًا على منصة التطوير واللغة البرمجية المفضّلة لديك. في ما يلي عدة طرق مختلفة لإنشاء المفاتيح والشهادة التي تحتاج إليها خدمة تسجيل الدخول الأحادي (SSO) في Google Workspace.

استخدام الأداة OpenSSL

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

إنشاء مفتاح RSA الخاص

لا تتطلّب عملية إنشاء مفتاح RSA خاص باستخدام OpenSSL سوى خطوة واحدة:

openssl genrsa -out rsaprivkey.pem 2048

ينشئ هذا الأمر مفتاحًا خاصًا مرمَّزًا بتنسيق PEM ويخزّنه في الملف rsaprivkey.pem. ينشئ هذا المثال مفتاحًا بحجم 2048 بت، وهو مناسب لأي غرض تقريبًا. يجب الحفاظ على سرية المفتاح الخاص الناتج، ويُستخدم لتوقيع البيانات وفك تشفيرها.

قد تتطلّب بعض عمليات التنفيذ، خاصةً تلك المستندة إلى Java، استخدام DER أو PKCS8، ويمكن إنشاء ذلك مثلاً باتّباع الخطوات الإضافية التالية:

  1. openssl rsa -in rsaprivkey.pem -pubout -outform DER -out rsapubkey.der
  2. openssl pkcs8 -topk8 -inform PEM -outform DER -in rsaprivkey.pem -out rsaprivkey.der -nocrypt

تنشئ الخطوة الأولى المفتاح العام بتنسيق DER.

تنشئ الخطوة 2 المفتاح الخاص بتنسيق pkcs8 وDER. بعد إنشاء هذه المفاتيح، يمكنك استخدامها (rsapubkey.der وrsaprivkey.der).

إنشاء مفتاح DSA الخاص

يتضمّن إنشاء مفتاح DSA خطوتَين:

  1. openssl dsaparam -out dsaparam.pem 2048
  2. openssl gendsa -out dsaprivkey.pem dsaparam.pem

تُنشئ الخطوة الأولى ملف مَعلمات DSA، dsaparam.pem، الذي يطلب من OpenSSL في هذه الحالة إنشاء مفتاح بحجم 2048 بت في الخطوة 2. ملف dsaparam.pem ليس مفتاحًا بحد ذاته، ويمكن تجاهله بعد إنشاء المفتاحَين العام والخاص. تنشئ الخطوة الثانية المفتاح الخاص في الملف dsaprivkey.pem الذي يجب الحفاظ على سريته.

لتصدير المفتاح إلى تنسيق DER (ثنائي) يمكنك الاستعانة بالخطوات التالية:

  1. openssl dsa -in dsaprivkey.pem -outform DER -pubout -out dsapubkey.der
  2. openssl pkcs8 -topk8 -inform PEM -outform DER -in dsaprivkey.pem -out dsaprivkey.der -nocrypt

تستخلص الخطوة الأولى المفتاح العام بتنسيق DER.

تحوّل الخطوة 2 المفتاح الخاص إلى تنسيق pkcs8 وDER. بعد إكمال هذه الخطوات، يمكنك استخدام مفتاحَي التشفير العام (dsapubkey.der) والخاص (dsaprivkey.der).

إنشاء شهادة

بعد الحصول على مفتاحَي التشفير، يصبح من السهل إنشاء شهادة X.509. تحتوي الشهادة على المفتاح العام المقابل، بالإضافة إلى بعض البيانات الوصفية المتعلقة بالمؤسسة التي أنشأت الشهادة. اتّبِع هذه الخطوة لإنشاء شهادة موقَّعة ذاتيًا من مفتاح خاص RSA أو DSA:

openssl req -new -x509 -key dsaprivkey.pem -out dsacert.pem

بعد الإجابة عن عدد من الأسئلة، سيتم إنشاء الشهادة وحفظها بتنسيق dsacert.pem. هذا هو الملف الذي تحمّله إلى Google Workspace من خلال "لوحة التحكّم" عند ضبط الدخول المُوحَّد (SSO).

إنشاء ملف مرجعي للشهادة

تتطلب بعض التطبيقات ملفًا مرجعيًا لشهادة X.509 بدلاً من شهادة X.509 نفسها. الملف المرجعي هو ملخّص للشهادة بتنسيق x509 الثنائي. يعتمد نوع البصمة على الخوارزمية المستخدَمة لإنشاء البصمة، مثل SHA-1 أو SHA-256.

لإنشاء ملف مرجعي لشهادة SHA-256 من شهادة X.509، استخدِم الأمر التالي (مع استبدال اسم ملف شهادة .pem الفعلي):

openssl x509 -noout -fingerprint -sha256 -inform pem -in "GoogleIDPCertificate-domain.com.pem"

استخدام Microsoft Visual Studio مع ‎.NET

يوفّر Microsoft Visual Studio 2005 أدوات (في الدليل Common7ToolsBin) يمكن استخدامها لإنشاء شهادة لاستخدامها مع Google Workspace. اتّبِع الخطوات التالية لإنشاء زوج المفتاح العام والخاص والشهادة بتنسيق ‎ .NET:

  1. makecert -r -pe -n "CN=Test Certificate" -sky exchange -sv testcert.pvk testcert.cer
  2. pvk2pfx -pvk testcert.pvk -spc testcert.cer -pfx testcert.pfx

يتم استخدام خوارزمية RSA تلقائيًا في الأوامر أعلاه. تستخدِم الخطوة 1 أداة إنشاء الشهادات (makecert.exe) لإنشاء شهادة X.509 موقَّعة ذاتيًا باسم testcert.cer والمفتاح الخاص المقابل.

تستخدم الخطوة 2 أداة pvk2pfx ‏ (pvk2pfx.exe) لإنشاء ملف تبادل المعلومات الشخصية (PFX) من ملف CER وملف PVK. يحتوي ملف PFX على كل من المفتاح العام والخاص.

يمكن تحميل ملف testcert.cer الذي تم إنشاؤه في الخطوة 1 إلى Google Workspace باستخدام "لوحة التحكّم"، ويمكن استخدام testcert.pfx من الخطوة 2 لإنشاء مثيل X509Certificate2 (.NET 2.0+) لتوقيع استجابة SAML.

استخدام Keytool في لغة البرمجة Java

يمكن لمطوّري Java استخدام أداة keytool المتوفّرة في حزمة تطوير البرامج القياسية (JDK) لإنشاء مفتاحَي تشفير أحدهما عام والآخر خاص وشهادة X.509. keytool هي أداة لإدارة المفاتيح والشهادات تتيح للمستخدمين إدارة أزواج المفاتيح العامة والخاصة والشهادات المرتبطة بها لاستخدامها في أنظمة المصادقة التي تتطلب توقيعات رقمية. يخزّن keytool المفاتيح والشهادات في ملف "مخزن مفاتيح" (.keystore) في الدليل الرئيسي للمستخدم. يتم حماية المفاتيح الخاصة بكلمات مرور.

إنشاء أزواج مفاتيح DSA

  1. keytool -genkey -alias dsassokey -keyalg "DSA" -keysize 2048 -validity 180 -sigalg "SHA256withDSA"
  2. keytool -export -alias dsassokey -file dsasso.cer

تنشئ الخطوة 1 مفتاحًا عامًا/خاصًا بحجم 2048 وصلاحية لمدة 180 يومًا باستخدام خوارزمية DSA.

تنشئ الخطوة 2 شهادة X.509 (dsasso.cer) من المفتاح العام. بعد ذلك، يمكنك تحميل dsasso.cer إلى Google Workspace باستخدام "لوحة التحكّم".

إنشاء مفاتيح تشفير RSA

  1. keytool -genkey -alias rsassokey -keyalg "RSA" -keysize 2048 -validity 180
  2. keytool -export -alias rsassokey -file rsasso.cer

تنشئ الخطوة 1 مفتاحَي تشفير عام وخاص بحجم 2048 وصلاحية لمدة 180 يومًا باستخدام خوارزمية RSA.

تنشئ الخطوة 2 شهادة X.509 (rsasso.cer) من المفتاح العام. يمكنك بعد ذلك تحميل rsasso.cer إلى Google Workspace باستخدام "لوحة التحكّم".

استخدام بنية تشفير لغة البرمجة Java

توفّر Java Cryptography Architecture (JCA) فئات وواجهات أساسية لإنشاء خصائص الأمان ومعالجتها. تتضمّن JCA أجزاءً من واجهة برمجة التطبيقات Java 2 SDK Security API ذات الصلة بالتشفير. باستخدام واجهة برمجة التطبيقات هذه، يمكنك بسهولة إنشاء مفتاحَي تشفير عام وخاص باستخدام الخوارزمية المطلوبة. في ما يلي رمز نموذجي ينشئ مفاتيح DSA أو RSA لاستخدامها مع خدمة الدخول المُوحَّد (SSO) في Google Workspace.

إنشاء مفتاحَي تشفير عام وخاص

import java.io.*;
import java.security.*;

public class KeyGenDSA {

  public static void main(String[] args) {
        try {
          KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA");
          SecureRandom random = SecureRandom.getInstanceStrong();
          keyGen.initialize(2048, random);

          KeyPair pair = keyGen.generateKeyPair();
          PrivateKey priv = pair.getPrivate();
          PublicKey pub = pair.getPublic();

          byte[] encPriv = priv.getEncoded();
          FileOutputStream privfos = new FileOutputStream("DSAPrivateKey.key");
          privfos.write(encPriv);
          privfos.close();

          byte[] encPub = pub.getEncoded();
          FileOutputStream pubfos = new FileOutputStream("DSAPublicKey.key");
          pubfos.write(encPub);
          pubfos.close();

   } catch (Exception e) {
         e.printStackTrace();
   }
  }
}

يستخدم الرمز أعلاه KeyPairGenerator لإنشاء زوج من مفاتيح DSA. ستكون المفاتيح التي تم إنشاؤها بتنسيق ثنائي وسيتم إخراجها في ملفات فردية. بعد الحصول على المفتاحَين، يمكنك تسجيل المفتاح العام في Google Workspace واستخدام المفتاح الخاص لتوقيع SAMLResponse. لإنشاء زوج من مفاتيح RSA بدلاً من DSA، ما عليك سوى استبدال "DSA" في الرمز بـ "RSA".

تسجيل شهادتك أو مفتاحك العام في Google Workspace

بعد الانتهاء من الجزء الصعب المتمثل في إنشاء المفاتيح والشهادات، يصبح الجزء التالي بسيطًا جدًا. لتسجيل شهادتك أو مفتاحك العام في Google Workspace، عليك الانتقال إلى وحدة تحكّم المشرف وتسجيل الدخول بصفتك مشرفًا. اختَر الأمان، ثم إعداد الدخول المُوحَّد (SSO)، واملأ جميع الحقول في الصفحة ضمن إعداد الدخول المُوحَّد (SSO) باستخدام موفِّر هوية تابع لجهة خارجية.