Membuat Kunci dan Sertifikat untuk SSO

Google Workspace menawarkan layanan Single Sign-On (SSO) kepada pelanggan dengan Google Workspace atau Google Workspace for Education. Layanan Login Tunggal Google Workspace menerima kunci dan sertifikat publik yang dibuat dengan algoritma RSA atau DSA. Untuk menggunakan layanan, Anda perlu membuat serangkaian kunci publik dan pribadi serta sertifikat X.509 yang berisi kunci publik. Setelah memiliki kunci publik atau sertifikat, Anda harus mendaftarkannya ke Google. Anda dapat melakukannya dengan cukup mengupload kunci atau sertifikat melalui konsol Google Admin.

Cara Anda membuat kunci dan sertifikat sering kali bergantung pada platform pengembangan dan preferensi bahasa pemrograman Anda. Berikut beberapa cara untuk membuat kunci dan sertifikat yang diperlukan oleh layanan SSO Google Workspace.

Menggunakan OpenSSL

Meskipun ada banyak metode untuk membuat pasangan kunci publik dan pribadi, alat OpenSSL open source adalah salah satu yang paling populer. Tool ini telah di-porting ke semua platform utama dan menyediakan antarmuka command line sederhana untuk pembuatan kunci.

Membuat Kunci Pribadi RSA

Pembuatan kunci pribadi RSA dengan OpenSSL hanya memerlukan satu langkah:

openssl genrsa -out rsaprivkey.pem 2048

Perintah ini akan menghasilkan kunci pribadi yang dienkode PEM dan menyimpannya dalam file rsaprivkey.pem. Contoh ini membuat kunci 2048-bit, yang akan berfungsi untuk hampir semua tujuan. Kunci pribadi yang dihasilkan harus dirahasiakan dan digunakan untuk menandatangani dan mendekripsi data.

Beberapa penerapan, khususnya yang berbasis Java, mungkin memerlukan DER atau PKCS8 yang misalnya dapat dibuat menggunakan langkah-langkah tambahan berikut:

  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

Langkah 1 membuat kunci publik dalam format DER.

Langkah 2 menghasilkan kunci pribadi dalam format pkcs8 dan DER. Setelah dibuat, Anda dapat menggunakan kunci ini (rsapubkey.der dan rsaprivkey.der).

Membuat Kunci Pribadi DSA

Pembuatan kunci DSA mencakup dua langkah:

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

Langkah pertama membuat file parameter DSA, dsaparam.pem, yang dalam hal ini menginstruksikan OpenSSL untuk membuat kunci 2048-bit pada Langkah 2. File dsaparam.pem itu sendiri bukan kunci, dan dapat dihapus setelah kunci publik dan pribadi dibuat. Langkah kedua sebenarnya membuat kunci pribadi dalam file dsaprivkey.pem yang harus dirahasiakan.

Untuk mengekspor kunci ke dalam format DER (biner), Anda dapat menggunakan langkah-langkah berikut:

  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

Langkah 1 mengekstrak kunci publik ke dalam format DER.

Langkah 2 mengonversi kunci pribadi ke format pkcs8 dan DER. Setelah melakukannya, Anda dapat menggunakan pasangan kunci publik (dsapubkey.der) dan pribadi (dsaprivkey.der) ini

Membuat sertifikat

Setelah memiliki pasangan kunci, membuat sertifikat X.509 menjadi lebih mudah. Sertifikat berisi kunci publik yang sesuai, beserta beberapa metadata yang terkait dengan organisasi yang membuat sertifikat. Ikuti langkah ini untuk membuat sertifikat yang ditandatangani sendiri dari kunci pribadi RSA atau DSA:

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

Setelah Anda menjawab sejumlah pertanyaan, sertifikat akan dibuat dan disimpan sebagai dsacert.pem. File ini adalah file yang Anda upload ke Google Workspace melalui Panel Kontrol saat mengonfigurasi SSO.

Membuat sidik jari sertifikat

Beberapa aplikasi memerlukan sidik jari sertifikat X.509, bukan sertifikat X.509 itu sendiri. Sidik jari adalah ringkasan sertifikat dalam format biner x509. Jenis sidik jari bergantung pada algoritma yang digunakan untuk membuat sidik jari, seperti SHA-1 atau SHA-256.

Untuk membuat sidik jari SHA-256 dari sertifikat X.509, gunakan perintah berikut (ganti nama file .pem sertifikat Anda yang sebenarnya):

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

Menggunakan Microsoft Visual Studio untuk .NET

Microsoft Visual Studio 2005 menyediakan utilitas (di direktori Common7ToolsBin ) yang dapat digunakan untuk membuat sertifikat yang akan digunakan dengan Google Workspace. Ikuti langkah-langkah di bawah untuk membuat pasangan kunci dan sertifikat publik dan pribadi di .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

Secara default, algoritma RSA digunakan dalam perintah di atas. Langkah 1 menggunakan Alat Pembuatan Sertifikat (makecert.exe) untuk membuat sertifikat X.509 yang ditandatangani sendiri bernama testcert.cer dan kunci pribadi yang sesuai.

Langkah 2 menggunakan Alat pvk2pfx (pvk2pfx.exe) untuk membuat file Personal Information Exchange (PFX) dari file CER dan PVK. PFX berisi kunci publik dan pribadi Anda.

File testcert.cer yang dibuat pada Langkah 1 dapat diupload ke Google Workspace menggunakan Panel Kontrol; dan, testcert.pfx dari Langkah 2 dapat digunakan untuk membuat instance X509Certificate2 (.NET 2.0+) untuk menandatangani respons SAML.

Menggunakan Keytool di Java

Developer Java dapat menggunakan utilitas keytool yang ada di JDK standar untuk membuat pasangan kunci publik/pribadi dan sertifikat X.509. keytool adalah utilitas pengelolaan kunci dan sertifikat yang memungkinkan pengguna mengelola pasangan kunci publik/pribadi mereka sendiri dan sertifikat terkait untuk digunakan dalam skema autentikasi yang memerlukan tanda tangan digital. keytool menyimpan kunci dan sertifikat di "keystore" yang untuk penerapan default hanyalah file (.keystore) di direktori beranda pengguna. Kunci pribadi dilindungi dengan sandi.

Membuat pasangan kunci DSA

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

Langkah 1 menghasilkan pasangan kunci publik/pribadi dengan ukuran 2048 dan validitas 180 hari menggunakan algoritma DSA.

Langkah 2 membuat sertifikat X.509 (dsasso.cer) dari kunci publik. Kemudian, Anda mengupload dsasso.cer ke Google Workspace menggunakan Panel Kontrol.

Membuat pasangan kunci RSA

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

Langkah 1 menghasilkan pasangan kunci publik/pribadi dengan ukuran 2048 dan validitas 180 hari menggunakan algoritma RSA.

Langkah 2 membuat sertifikat X.509 (rsasso.cer) dari kunci publik. Kemudian, Anda mengupload rsasso.cer ke Google Workspace menggunakan Panel Kontrol.

Menggunakan Java Cryptography Architecture

Java Cryptography Architecture (JCA) menyediakan class dan antarmuka inti untuk membuat dan memanipulasi properti keamanan. JCA mencakup bagian dari Java 2 SDK Security API yang terkait dengan kriptografi. Dengan menggunakan API ini, Anda dapat dengan mudah membuat pasangan kunci publik dan pribadi dalam algoritma yang diinginkan. Di bawah ini adalah kode contoh yang membuat kunci DSA atau RSA untuk digunakan dengan layanan SSO Google Workspace.

Buat pasangan kunci publik dan pribadi

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();
   }
  }
}

Kode di atas menggunakan KeyPairGenerator untuk membuat pasangan kunci DSA. Kunci yang dihasilkan akan dalam format biner dan dikeluarkan ke dalam file individual. Setelah memiliki kunci, Anda dapat mendaftarkan kunci publik dengan Google Workspace dan menggunakan kunci pribadi untuk menandatangani SAMLResponse. Untuk membuat pasangan kunci RSA, bukan DSA, yang perlu Anda lakukan adalah mengganti "DSA" dalam kode dengan "RSA".

Mendaftarkan sertifikat atau kunci publik Anda dengan Google Workspace

Setelah Anda menyelesaikan bagian sulit dalam membuat kunci dan sertifikat, bagian berikutnya sangat sederhana. Untuk mendaftarkan sertifikat atau kunci publik Anda ke Google Workspace, Anda harus membuka Konsol admin dan login sebagai administrator. Pilih Keamanan, lalu Siapkan single sign-on (SSO), dan isi semua kolom di halaman pada bagian Siapkan SSO dengan penyedia identitas pihak ketiga.