Membuat Kunci dan Sertifikat untuk SSO

Google Workspace menawarkan layanan Single Sign-On (SSO) kepada pelanggan yang menggunakan Google Workspace atau Google Workspace for Education. Layanan Single Sign-On Google Workspace menerima kunci dan sertifikat publik yang dibuat dengan algoritma RSA atau DSA. Untuk menggunakan layanan ini, Anda harus membuat kumpulan kunci publik dan pribadi serta sertifikat X.509 yang berisi kunci publik. Setelah mendapatkan kunci atau sertifikat publik, Anda kemudian harus mendaftarkannya di Google. Anda dapat melakukannya hanya dengan mengupload kunci atau sertifikat tersebut melalui konsol Google Admin Anda.

Cara Anda membuat kunci dan sertifikat sering kali bergantung pada platform pengembangan dan preferensi bahasa pemrograman Anda. Berikut adalah beberapa cara lain 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 cara yang paling populer. Alat ini telah diadaptasi ke semua platform utama dan memberikan antarmuka baris perintah 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 membuat kunci pribadi yang dienkode PEM dan menyimpannya dalam file rsaprivkey.pem. Contoh ini membuat kunci 2048 bit, yang seharusnya dapat digunakan untuk hampir semua keperluan. Kunci pribadi yang dihasilkan harus dirahasiakan serta digunakan untuk menandatangani dan mendekripsi data.

Beberapa penerapan, khususnya yang berbasis Java, mungkin memerlukan DER atau PKCS8 yang dapat, misalnya, dibuat dengan mengikuti 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 membuat 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 kasus ini meminta OpenSSL untuk membuat kunci 2048-bit pada Langkah 2. File dsaparam.pem sendiri bukanlah kunci, dan dapat dihapus setelah kunci publik dan pribadi dibuat. Langkah kedua 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 dalam 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 berkaitan 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. 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 (masukkan 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 publik dan pribadi serta sertifikat dalam .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, yang disebut testcert.cer, dan kunci pribadi yang sesuai.

Langkah 2 menggunakan pvk2pfx Tool (pvk2pfx.exe) untuk membuat file Personal Information Exchange (PFX) dari file CER dan PVK. PFX tersebut 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 membuat 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 membuat 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 berkaitan dengan kriptografi. Dengan menggunakan API ini, Anda dapat membuat pasangan kunci publik dan pribadi dalam algoritma yang diinginkan dengan mudah. Berikut adalah kode contoh yang membuat kunci DSA atau RSA untuk digunakan dengan layanan SSO Google Workspace.

Membuat 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 dibuat akan memiliki format biner dan ditampilkan sebagai file secara individual. Setelah memiliki kunci, Anda dapat mendaftarkan kunci publik dengan Google Workspace dan menggunakan kunci pribadi untuk menandatangani SAMLResponse Anda. Untuk membuat pasangan kunci RSA sebagai ganti dari DSA, Anda hanya perlu mengganti "DSA" dalam kode dengan "RSA".

Mendaftarkan sertifikat atau kunci publik Anda dengan Google Workspace

Setelah melalui langkah rumit dalam pembuatan kunci dan sertifikat, langkah berikutnya sangat mudah. Untuk mendaftarkan sertifikat atau kunci publik Anda dengan 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.