إنشاء المفاتيح والشهادات لخدمة "الدخول المُوحَّد (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 بت في الخطوة الثانية. لا يُعدّ ملف 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 ذات الصلة بالتشفير. باستخدام واجهة برمجة التطبيقات هذه، يمكنك بسهولة إنشاء مفتاحَي تشفير عام وخاص بالخوارزمية المطلوبة. في ما يلي رمز نموذجي ينشئ مفاتيح 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) باستخدام موفِّر هوية تابع لجهة خارجية.