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

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

غالبًا ما تعتمد الطريقة التي تستخدمها لإنشاء المفاتيح والشهادات على النظام الأساسي للتطوير ولغات البرمجة المفضّلة. في ما يلي عدة طرق مختلفة لإنشاء المفاتيح والشهادة التي تطلبها خدمة "الدخول المُوحَّد" في 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.

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

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

إنشاء شهادة

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

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

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

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

تشترط بعض التطبيقات تقديم ملف مرجعي لشهادة 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 تلقائيًا في الأوامر أعلاه. تستخدم الخطوة الأولى أداة إنشاء الشهادات (makecert.exe) لإنشاء شهادة X.509 موقَّعة ذاتيًا تُسمى testcert.cer والمفتاح الخاص المقابل.

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

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

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

يمكن لمطوّري Java استخدام أداة keytool المتوفّرة في حزمة تطوير Java القياسية لإنشاء مفتاحَي التشفير العام والخاص وشهادة 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

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

تنشئ الخطوة الثانية شهادة 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

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

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

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

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