Уведомление

На смену Duet AI приходит Gemini для Google Workspace. Подробнее…

Создание ключей и сертификатов для системы единого входа

Пользователям Google Workspace и Google Workspace for Education доступна система единого входа, которая поддерживает открытые ключи и сертификаты, созданные с помощью алгоритмов 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

На шаге 1 генерируется открытый ключ в формате 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 по созданию на шаге 2 ключа размером 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

На шаге 1 открытый ключ экспортируется в формат 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 через панель управления при настройке системы единого входа).

Как создать цифровой отпечаток сертификата

Для некоторых приложений требуется цифровой отпечаток сертификата 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 (в каталоге Common7\Tools\Bin) можно создать сертификат для 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 с помощью инструмента Certificate Creation Tool (makecert.exe) создаются самозаверяющий сертификат X.509 (testcert.cer) и соответствующий закрытый ключ.

На шаге 2 с помощью инструмента pvk2pfx Tool (pvk2pfx.exe) на основе CER- и PVK-файлов создается PFX-файл, содержащий как открытый, так и закрытый ключи.

Файл testcert.cer, созданный на шаге 1, можно загрузить в Google Workspace через панель управления. С помощью файла testcert.pfx, созданного на шаге 2, можно создать экземпляр сертификата X509Certificate2 (.NET 2.0+) для подписи ответов SAML.

Использование Keytool в Java

Разработчики Java могут создать пару ключей и сертификат X.509 с помощью инструмента Keytool, который входит в стандартный набор JDK. 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 с помощью алгоритма DSA создается пара ключей размером 2048 бит, которые действительны в течение 180 дней.

На шаге 2 на основе открытого ключа создается сертификат X.509 (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 с помощью алгоритма RSA создается пара ключей размером 2048 бит, которые действительны в течение 180 дней.

На шаге 2 на основе открытого ключа создается сертификат X.509 (rsasso.cer), который необходимо загрузить в Google Workspace через панель управления.

Использование Java Cryptography Architecture

Платформа Java Cryptography Architecture (JCA) содержит основные классы и интерфейсы, необходимые для создания свойств безопасности и управления ими. В JCA входят криптографические компоненты Java 2 SDK Security API. Этот API позволяет формировать пары ключей с помощью выбранных алгоритмов. Ниже показан код для создания ключей 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();
   }
  }
}

Пара ключей DSA создается с помощью алгоритма KeyPairGenerator. Полученные ключи в двоичном формате сохраняются в отдельных файлах. После этого вы можете зарегистрировать открытый ключ в Google Workspace и использовать закрытый для подписания ответов SAML. Чтобы создать пару ключей RSA вместо DSA, достаточно заменить DSA на RSA во всем коде.

Как зарегистрировать сертификат или открытый ключ в Google Workspace

Зарегистрировать ключ или сертификат в Google Workspace очень легко. Для этого войдите в консоль администратора. В разделе Безопасность выберите Настройка системы единого входа (SSO) и заполните все поля в разделе Настроить Систему единого входа со сторонним поставщиком удостоверений.

Эта информация оказалась полезной?

Как можно улучшить эту статью?
true
Начните пользоваться 14-дневной бесплатной пробной версией уже сегодня

Корпоративная почта, хранение файлов онлайн, общие календари, видеоконференции и многое другое. Начните пользоваться бесплатной пробной версией G Suite уже сегодня.

Поиск
Очистить поле поиска
Закрыть поиск
Главное меню
17513879197857735633
true
Поиск по Справочному центру
true
true
true
true
true
73010
false
false