Пользователям 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) и заполните все поля в разделе Настроить Систему единого входа со сторонним поставщиком удостоверений.