TOA için anahtar ve sertifika oluşturma

Google Workspace, Google Workspace veya Google Workspace for Education kullanan müşterilerine Tek Oturum Açma (TOA) hizmetini sunar. Google Workspace Tek Oturum Açma hizmeti, genel anahtarları ve RSA veya DSA algoritmasıyla üretilen sertifikaları kabul eder. Hizmeti kullanmak için ortak ve özel anahtarlar grubunu ve ortak anahtarı içeren X.509 sertifikasını oluşturmanız gerekir. Ortak anahtar veya sertifikayı oluşturduktan sonra bunu Google'a kaydettirmeniz gerekir. Bunu, anahtarı veya sertifikayı Google Yönetici Konsolunuz aracılığıyla yükleyerek yapabilirsiniz.

Anahtar ve sertifika oluşturma yöntemi, geliştirme platformunuza ve programlama dili tercihinize bağlıdır. Google Workspace TOA hizmeti tarafından ihtiyaç duyulan anahtarları ve sertifikayı üretmek için kullanabileceğiniz bazı yöntemleri aşağıda bulabilirsiniz.

OpenSSL'i kullanma

Genel ve özel anahtar çiftleri oluşturmak için birçok yöntem vardır. Açık kaynaklı OpenSSL aracı ise en popüler yöntemlerden biridir. Bu araç, önde gelen platformların tamamına taşınmıştır ve anahtar üretimi için basit bir komut satırı arayüzü sunar.

RSA özel anahtarını oluşturma

OpenSSL üzerinden RSA özel anahtarı oluşturma işlemi tek adımdan oluşur:

openssl genrsa -out rsaprivkey.pem 2048

Bu komut, PEM kodlamalı özel bir anahtar oluşturur ve bunu rsaprivkey.pem dosyasında depolar. Bu örnek hemen hemen her türlü amaç için kullanılabilecek bir 2048 bit anahtar oluşturur. Oluşturulan özel anahtar kimseyle paylaşılmamalıdır; verileri imzalamak ve şifresini çözmek için bu anahtar kullanılır.

Bazı uygulamalar, özellikle de Java tabanlı olanlar, DER veya PKCS8 biçimini gerektirebilir. Bu biçimler aşağıdaki örnek ek adımlar kullanılarak oluşturulabilir:

  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. adım, ortak anahtarı DER biçiminde oluşturur.

2. adım, özel anahtarı pkcs8 ve DER biçiminde oluşturur. Oluşturulduktan sonra bu anahtarları (rsapubkey.der ve rsaprivkey.der) kullanabilirsiniz.

DSA özel anahtarı oluşturma

DSA anahtarı oluşturma işlemi iki adımdan oluşur:

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

Birinci adım bir DSA parametre dosyası oluşturur (dsaparam.pem). Bu dosya 2. adımda OpenSSL'in 2048 bit bir anahtar oluşturmasını sağlar. dsaparam.pem dosyası bir anahtar değildir ve ortak ve özel anahtarlar oluşturulduktan sonra silinebilir. İkinci adım, dsaprivkey.pem dosyasında gerçek özel anahtarı oluşturur. Bu anahtar kimseyle paylaşılmamalıdır.

Anahtarı DER (ikili) biçiminde dışa aktarmak için aşağıdaki adımları kullanabilirsiniz:

  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. adım, ortak anahtarı DER biçiminde çıkarır.

2. adım, özel anahtarı pkcs8 ve DER biçimine dönüştürür. Bu işlemi yaptıktan sonra bu genel (dsapubkey.der) ve özel (dsaprivkey.der) anahtar çiftini kullanabilirsiniz.

Sertifika oluşturma

Anahtar çiftinizi oluşturduktan sonra X.509 sertifikasını kolayca oluşturabilirsiniz. Bu sertifika, karşılık gelen ortak anahtarın yanı sıra sertifikayı oluşturan kuruluşla ilgili bazı meta verileri de barındırır. Bir RSA veya DSA özel anahtarından kendinden imzalı bir sertifika oluşturmak için şu adımı izleyin:

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

Bir dizi soruyu yanıtlamanızın ardından sertifika oluşturulur ve dsacert.pem adıyla kaydedilir. Bu, TOA'yı yapılandırırken Denetim Masası aracılığıyla Google Workspace'e yüklediğiniz dosyadır.

Sertifika parmak izi oluşturma

Bazı uygulamalar, X.509 sertifikasının kendisi yerine X.509 sertifikası parmak izi kullanılmasını gerektirir. Parmak izi, sertifikanın x509 ikili biçimindeki özetidir. Parmak izi türü, parmak izi oluşturmak için kullanılan algoritmaya bağlıdır (ör. SHA-1 veya SHA-256).

X.509 sertifikasından SHA-256 parmak izi oluşturmak için aşağıdaki komutu kullanın (dosya adını kendi .pem dosya adınızla değiştirin):

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

.NET için Microsoft Visual Studio'yu kullanma

Microsoft Visual Studio 2005, Google Workspace ile birlikte kullanılmak üzere sertifika oluşturmak için kullanılabilen araçlar (Common7ToolsBin dizininde) sağlar. .NET'te genel ve özel anahtar çifti ve sertifika oluşturmak için aşağıdaki adımları uygulayın:

  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

Varsayılan olarak, yukarıdaki komutlarda RSA algoritması kullanılır. 1. adımda, testcert.cer adında, kendinden imzalı bir X.509 sertifikası oluşturmak için Sertifika Oluşturma Aracı (makecert.exe) ve karşılık gelen özel anahtar kullanılmaktadır.

2. adımda ise, CER ve PVK dosyasından Kişisel Bilgi Değişimi (PFX) dosyası oluşturmak için pvk2pfx Aracı (pvk2pfx.exe) kullanılmaktadır. PFX hem genel hem de özel anahtarınızı içerir.

1. adımda oluşturulan testcert.cer dosyası, Denetim Masası kullanılarak Google Workspace'e yüklenebilir. 2. adımdaki testcert.pfx ise SAML yanıtını imzalamak için bir X509Certificate2 (.NET 2.0+) örneği oluşturmak üzere kullanılabilir.

Java'da Keytool'u kullanma

Java geliştiricileri, ortak/özel anahtar çiftini ve X.509 sertifikasını oluşturmak için standart JDK'da bulunan keytool yardımcı programını kullanabilir. keytool, kullanıcıların dijital imza gerektiren kimlik doğrulama şemalarında kullanılmak üzere kendi ortak/özel anahtar çiftlerini ve ilişkili sertifikalarını yönetmelerine olanak tanıyan bir anahtar ve sertifika yönetim yardımcı programıdır. keytool, anahtarları ve sertifikaları bir "anahtar deposunda" saklar. Varsayılan uygulamada bu, kullanıcının ana dizinindeki basit bir dosyadır (.keystore). Özel anahtarlar şifrelerle korunur.

DSA anahtar çiftleri oluşturma

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

1. adımda, DSA algoritması kullanılarak 2048 boyutunda ve 180 gün geçerli genel/özel anahtar çifti oluşturulur.

2. adımda ise, ortak anahtardan bir X.509 sertifikası (dsasso.cer) üretilir. Ardından, dsasso.cer dosyasını Denetim Masası'nı kullanarak Google Workspace'e yüklersiniz.

RSA anahtar çiftleri oluşturma

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

1. adımda, RSA algoritması kullanılarak 2048 boyutunda ve 180 gün geçerli genel/özel anahtar çifti oluşturulur.

2. adımda ise, ortak anahtardan bir X.509 sertifikası (rsasso.cer) üretilir. Ardından, Denetim Masası'nı kullanarak rsasso.cer dosyasını Google Workspace'e yüklersiniz.

Java Cryptography Architecture (Java Şifreleme Mimarisi) Kullanımı

Java Cryptography Architecture (Java Kriptografi Mimarisi - JCA), güvenlik özelliklerini üretmek ve değiştirmek için temel sınıflar ve arayüzler sağlar. JCA, Java 2 SDK Security API'nin kriptografiyle ilgili kısımlarını kapsar. Bu API'yi kullanarak istediğiniz algoritmada genel ve özel anahtar çiftlerini kolayca oluşturabilirsiniz. Aşağıda, Google Workspace TOA hizmeti ile kullanılmak üzere DSA veya RSA anahtarları oluşturan örnek bir kod bulunmaktadır.

Genel ve özel anahtar çifti oluşturma

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

Yukarıdaki kod, bir DSA anahtarı çifti oluşturmak için KeyPairGenerator kullanır. Oluşturulan anahtarlar ikili biçimde ve ayrı ayrı dosyalar şeklinde oluşturulacaktır. Anahtarları aldıktan sonra, ortak anahtarı Google Workspace'e kaydettirebilir ve özel anahtarı kullanarak SAMLResponse öğenizi imzalayabilirsiniz. DSA yerine bir RSA anahtar çifti oluşturmak için tek yapmanız gereken koddaki "DSA" yerine "RSA" yazmaktır.

Sertifikanızı veya ortak anahtarınızı Google Workspace'e kaydettirme

İşin karmaşık kısmı olan anahtar ve sertifika üretme aşamasını tamamladıktan sonrası son derece basittir. Sertifikanızı veya ortak anahtarınızı Google Workspace'e kaydettirmek için Yönetici Konsolu'na gidip yönetici olarak giriş yapmanız gerekir. Güvenlik'i ve ardından Tek oturum açma özelliğini kurun (TOA) seçeneğini belirleyin ve Üçüncü taraf kimlik sağlayıcısı ile TOA ayarlarını yap altındaki sayfada yer alan tüm alanları doldurun.